perm filename LISP[NEW,LSP]35 blob sn#635663 filedate 1982-01-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00607 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00079 00002	.MLLIT ITS TOPS10 TOPS20 SAIL TENEX CMU ML BIGNUM OBTSIZ PTCSIZ NEWRD JOBQIO HNKLOG SFA NIOBFS USELESS DBFLAG CXFLAG NARITH
C00084 00003	
C00088 00004	LVRNO LVRNO ZZZ ZZZ DEFAULT
C00092 00005	D10 D20 ZZZ SEGLOG OBTSIZ DXFLAG
C00094 00006	GETTAB
C00100 00007	
C00103 00008	NIL A B C AR1 AR2A NACS T TT D R F FREEAC P FLP FXP SP
C00105 00009	LERR ACALL AJCALL LER3 ERINT PP STRT SERINT TP IOJRST STRT7 UUOMAX CALL JCALL CALLF JCALLF NCALL NJCALL NCALLF NJCALF NUUOCLS NERINT NERINT
C00109 00010	
C00113 00011	%SY %SYHKL %SYKIL %SYLCL %SYGBL BYTSWD
C00116 00012	LS ST.LS $FS ST.$FS FX ST.FX FL ST.FL BN ST.BGN SY ST.SY SA ST.SA VC ST.VAC $PDLNM ST.$PDLNM $XM ST.$XM $NXM ST.$NXM PUR ST.PUR HNK ST.HNK DB ST.DB CX ST.CX DX ST.DX RN NUM ST.
C00119 00013	
C00122 00014	
C00125 00015	%%% %%% LABEL
C00130 00016	NBITMACS NBITMACS XX YY
C00133 00017	
C00137 00018	SYMVC SYMARGS SYMPNAME SY.ONE SY.LAP SY.PUR SY.CCN SY.OTC SY.ZER SY.
C00140 00019	ASAR TTSAR AS.SFA AS.JOB AS.FIL AS.RDT AS.OBA AS.DX AS.CX AS.DB AS.SX AS.FX AS.FL AS.GCP TTS.CL TTS.BM TTS.IM TTS.BN TTS.TY TTS.IO TTS.CN TTS.GC TTSDIM TTS.1D TTS.2D TTS.3D TTS.4D TTS.5D
C00146 00020	FI.EOF FO.EOP FJ.INT FI.BBC FI.BBF TI.BFN FT.CNS F.GC F.MODE FBT.CM FBT.SA FBT.CP FBT.LN FBT.EC FBT.SE FBT.FU FBT.ND FBT.SC F.CHAN F.JFN F.FLEN F.FPOS L.6DEV L.6DIR L.6FNM L.6EXT L.6VRS L.6DEV L.6DIR L.6FNM L.6EXT L.6VRS L.D6BT L.N6BT L.F6BT F.DEV F.FN1 F.FN2 F.RDEV F.RFN1 F.RFN2 F.DIR F.FNM F.EXT F.VRS LOPOFA TI.ST1 TI.ST2 ATO.LC AT.CHS AT.LNN AT.PGN FO.LNL FO.PGL FO.RPL LONBFA FB.BYT FB.BFL FB.BVC FB.IBP FB.BP FB.CNT FB.HED FB.NBF FB.BWS FB.BUF
C00159 00021	J.INTF J.CINT J.LFNM J.CRUFT J.GC J.INTB J.STAD J.UIND LOJOBA J.SYMS
C00161 00022	SR.CAL SFCALI SR.WOM SR.UDL SO.OPN SO.CLO SO.REN SO.DEL SO.TRP SO.PR1 SO.TYI SO.UNT SO.TIP SO.IN SO.EOF SO.TYO SO.PRO SO.FOU SO.RED SO.RDL SO.PRT SO.PRC SO.MOD SO.POS SO.ICL SO.OCL SO.OUT SR.FML SR.FUN SR.PNA SR.FUS SR.LEN STPFL NM
C00166 00023	
C00168 00024	%HISEG %LOSEG CURSTD %LOSEG %HISEG CURSTD
C00170 00025	
C00171 00026	ZZZ ZZZ
C00172 00027	PGTPMK NPGTPS
C00174 00028	ZZY ZZ ZZX ZZY
C00177 00029	NPURTR NIOCTR
C00180 00030	N2DIF
C00183 00031	NPRO
C00185 00032	ZZ ZZ ZZ GS SEGBYT LONUM HINUM PAGSIZ PAGMSK PAGKSM NPAGS NNUMTP NTYPES
C00190 00033	SEGSIZ SEGMSK SEGKSM NSEGS BTBSIZ SGS%PG BTSGGS ALPDL ALFXP ALFLP ALSPDL ALFXP ALFLP ALPDL ALSPDL
C00193 00034	IB.ALARM IB.TIMER IB.PARITY IB.FLOV IB.PURE IB.PCPURE IB.SYSUUO IB.AT3 IB.AT2 IB.AT1 IB.DEBUG IB.RVIOL IB.CLI IB.PDLOV IB.LTPEN IB.MAR IB.MPV IB.SCLK IB.1PROC IB.BREAK IB.ILAD IB.IOC IB.VALUE IB.DOWN IB.ILOP IB.DMPV IB.AROV IB.42BAD IB.C.Z IB.TTY IB.PDLOV IB.MPV
C00197 00035	TOPN BOTN NPURTR NIOCTR N2DIF NPRO %LOSEG %HISEG FIRSTLOC STDLO STDHI CURSTD STDLO STDHI CURSTD
C00200 00036	GOINIT GOINI7 SUSCON LISPGO LISPSW SUSFLS KA10P
C00203 00037	TWENTY THIRTY FORTY UUOGLEEP JPCSAV
C00205 00038	NSFC NSFC NSFC
C00207 00039	UNBND2 ABIND3 SETXIT SPECX AYNVSFX 1DIMS ARYGET ARYGT4 ARYGT8 1DIMF ANYGET 1DIMD ADYGET 1DIMZ AZYGET SPSV
C00210 00040	INTFLG NOQUIT UNREAL REALLY ERRSVD IMASK LFAKP LFAKFXP FAKP FAKFXP CMUP MONL6P UPIINT CCOCW1 CCOCW2 TENEXP VTS20P INTPC1 INTPC2 INTPC3 PDLSVT SUPSAV LV2SVT LV2SVF LV2ST2 LV3SVT LV3SVF LV3ST2 DSMSAV CINTAB CINTSZ
C00217 00041	STTYW1 STTYW2 STTYL1 STTYL2 STTYA1 STTYA2 CCOC1 CCOC2 XACTW XACTL STDTIW SACTW1 SACTW2 SACTW3 SACTW4 SACTL1 SACTL2 SACTL3 SACTL4 UISTAK GCRSR PDLSTH PDLSTA PDLSTB PDLSTC
C00221 00042	CHNTB TMPC DPAGEL DLINEL LJOBTB JOBTB
C00223 00043	TTYIF1 TTYIF2 FI.EOF FI.BBC FI.BBF TI.BFN FT.CNS F.MODE F.CHAN F.FLEN F.FPOS F.DEV F.FN1 F.FN2 F.RDEV F.DEV
C00228 00044	TTYOF1 TTYOF2 FO.EOP FT.CNS F.MODE F.CHAN F.FLEN F.FPOS F.DEV F.FN1 F.FN2 F.RDEV F.DEV FO.LNL FO.PGL FO.RPL
C00230 00045	SWS ERRTN CATRTN EOFRTN PA4 INHIBIT ERRSW BFPRDP CATID CATSPC CATLIS CATUWP CATCAB CATALL CATCOM LEP1 KMPLOSES UIRTN RSXTB PNMK1 GCD.A UNBND3 SIXMK2 SAVMAR GCD.B AUNBD EXP.S ATAN.S UNMTMP FPTEM IFLT9 EQLP GCD.C ATAN.X GWDCNT GCD.D ATAN.Y GWDORG GWDRG1
C00235 00046	EXPL5 GCD.UH BKTRP EV0B FLAT1 MEMV UAPOS GCD.VH LPNF AUNBR DLTC RINF APFNG1 TABLU1 AUNBF MNMX0 GRESS0 GRESS0 CFAIL CSUCE BACTYF BOOLI TOPAST PLUS0 PLUS3 PLUS6 PLUS8 RM4 SWNACK RDBKC RDNSV RDDSV RDIBS RDINCH CORBP MKNCH
C00239 00047	PNBP PNBUF JCLBF ATMBF REMFL VETBL0 DVS1 DVS2 DVSL DD1 DD2 DD3 DDL NORMF QHAT BNMSV FACF FACD AGDBT YAGDBT TSAVE DSAVE RSAVE FSAVE NRD10FL LJCLBF UUOH ERROR ERBDF UUOFN UUTSV UUTTSV UURSV UUALT9 UUPSV UUOBKG LUUSV LSWS
C00242 00048	FFS FFX FFL FFY FFA NFF FFY2 NPFFS NPFFX NPFFL NPFFY2 EPFFS EPFFX EPFFL EPFFY2 EFVCS NFVCP FFVC ETVCFLSP
C00246 00049	GCMKL PROLIS MFFS MFFX MFFL MFFY MFFA NFFS NFFX NFFL NFFY NFFA GCWHO GCWHO1 GCWHO2 GCWHO3 GCACSAV GCNASV GCP GCFLP GCFXP GCSP PANICP GCMRKV GCTIM GCTM1 GCUUSV IRMVF GCRMV ARPGCT
C00251 00050	ZFFS ZFFX ZFFL ZFFY ZFFA SFSSIZ SFXSIZ SFLSIZ SSYSIZ SSASIZ OFSSIZ OFXSIZ OFLSIZ OSYSIZ OSASIZ GFSSIZ GFXSIZ GFLSIZ GSYSIZ GSASIZ
C00254 00051	FSSGLK FXSGLK FLSGLK SYSGLK SASGLK S2SGLK BTSGLK IMSGLK PRSGLK BTBAOB MAINBITBLT GC98 GC99 PFSSIZ PFXSIZ PFLSIZ PS2SIZ
C00257 00052	BPSH BPSL HINXM HIXM MAXNXM HBPORG HBPEND NPDLL NPDLH PDLFL1 PDLFL2 XFFS XFFX XFFL XFFY XFFA XPDL XFLP XFXP XSPDL ZPDL ZFLP ZFXP ZSPDL C2 FLC2 FXC2 SC2 ZSC2 OC2 OFLC2 OFXC2 OSC2
C00261 00053	USRHNK SENDI ICALLI INTAR UNRC.G UNRRUN UNRTIM UNREAR LIPSAV IPSWD1 IPSWD2 IPSDF1 IPSDF2 IPSPC IPSD IPSR IPSF MXIPDL LINTPDL INTPDL ACBASE INTMAI INTPAR INTCLK INTTTI INTPOV INTILM INTNXM REEINT REENOP APRSVT REESVT INTALL %PIPAR %PIWRO %PIMPV %PIILO
C00266 00054	MUNGP ERRPAD ERRPST BFTMPS SQ6BIT SQSQOZ LDBYTS LDOFST LDAAOB LDTEMP LD6BIT LDAPTR LDBPTR LDF2DP LDASAR LDBSAR LDXBLT LDXSIZ LDXSM1 LDXDIF LDHLOC LDEOFJ LFTMPS LDHSH2 LDHSH2 LDHSH2 LDX%FU LDXPSP LDXOFS LDXPNT LDXLPC LDXLPL LDXHS1 LDXHS2 LDXPFG
C00272 00055	USN EVPUNT UWUSN D10PTR D10ARD D10NAM D10REN %TXTOP %TXSFL %TXSFT %TXMTA %TXCTL %TXASC RDOBJ8 ALGCF AFILRD GNUM RNOWS RBACK RBLOCK
C00275 00056	RNTN2 BPPNR GAMNT GSBPN ADDSAR TOTSPC LLIP1 INSP RTSP1 RTSP3 LOSEF RWG FLOV9A FLOV9B CPJSW PSYMF POFF PSMS PSMTS PSMRS PS.S STQLUZ NOPFLS SAWSP PURDEV PURFN1 PURFN2 PURSNM SYSDEV SYSFN1 SYSFN2 SYSSNM SJCLBUF
C00279 00057	RSXTB1 RCT IOBAR1 IOBAR2
C00280 00058	PURTBL ZZW ZZZ $ NLBTSG NHBTSG ZZX ZZX ZZZ
C00283 00059	FPURF7 FPURF1 FPUR1Q FPUR1A FPURF4 IP0 IP7 IP7 IP1
C00287 00060	NFLSS FLSTBL ZZX ZZX ENTVEC FLSPA1 FLSPA3 FLSDIE FLSSTARTUP NOSHARE SHAREP SHARP1 SHRLOD FLSLSP FLSPA4 FLSPA5 FLSVAL FLSVA1 FLSADJ FLSMSK FLSPA6 PURCHK SYSFIL SYSCHN PDUMPL PURCKS PUROPN PUROP1 PUROP2 PURRWO PDUMP PURCHN PURSTI PURISP PURPTR
C00296 00061	KILHG4 KILHG2 KILHG3 KILHGH KILHG1 KILHG1 KILHG2 E.START GETHGH GETHG1 GETHG2 GETHG1 RETHGH GLSLUY GLSLUA CHKHGH GLSLZ4 GLSLZ0 GLSLZA GLSLZ1 GLSLM1 GLSLZ2 GLSLM2 GLSLZ3 GLSLM3 SGANAM SGADEV SGAPPN SGAEXT LDRIHS LDRHS1 LDSCRU
C00307 00062	ZZ LOBITSG TOP.PG BTBLKS LOBITSG
C00309 00063	ST STDISP GCBMRK GCBCDR GCBCAR GCB ZZZ GCBFOO ZZZ GCST BTB. LXXBSG NNPUSH N0PUSH N0.0PUSH BPURPG $$$NIL EPRNT1 EPRNT2 EPRNT3 ERROR1 EROR1Z EROR1A MSGFCK CMSGFCK
C00323 00064	ERROR9 LERFRAME EROR9A ERRRTN ERR2 LSPRT0 CLSPRET
C00326 00065	ERROR3 EROR3C EROR3E EROR3F
C00328 00066	ERROR5 EROR5F EROR5A EROR6A ERRV
C00331 00067	ERRIOJ ERIOJ1 ERIOJ2 ERIOJ3 ERIOJ4 ERIOJ5 ERIOJ8 ERIOJ7 ERIO6B ERIOJ6 ERIO6A ERIOJ9 ERTBL ERFNF% ERIPP% ERPRT% ERFBM% ERAEF% ERISU% ERTRN% ERNSF% ERNEC% ERDNA% ERNSD% ERILU% ERNRM% ERWLK% ERNET% ERPOA% ERBNF% ERCSD% ERDNE% ERSNF% ERSLE% ERLVL% ERNCE% ERSNS% ERFCU% ERLOH% ERNLI% LERTBL
C00340 00068	PDLOV PDLH0 PDLOV1 PDLRET PDLH4 PDLLOS PDLMSG
C00345 00069	PDLOV5 PDLOV6
C00347 00070	ERRBAD UUOGL1 UUOGL2 UUOGL7 UUOGL8
C00349 00071	UUONVE NTHIEN NTHER LASTER UUOMER UUOFER REMAIR UNOVER OVFLER UNFLER ER4 ADEAD EG1 INTNCO BADOB
C00352 00072	DFPER DEFNER REVER PNGE PNGE1 NASER SBADSP CA.DER CA.DE1 CA.DE2 CA.DE3
C00354 00073	NILSETQ TSETQ XSETQ STORE5 STOREE CSTOR7 RPLCA0 RPLCD0 RPLCA1 RPLCD1 %ARR0A %ARR0 %ARR0B LDGETQ LDXERR LDALREADY LDATE9 LDATER
C00357 00074	IBSERR BASER %LVERR %LNERR
C00358 00075	NIHIL VERITAS PURITAS POVPDL POVFLP POVFXP POVSPDL MESMAJ UNRECOV FLNMER $ARERR IARERR FXNMER NMV3 CAMMES MES5 MES6 MES14 MES18 MES19 MES20 MES21 EMS12 EMS13 EMS15 EMS16 EMS18 EMS21 EMS22 EMS25 EMS26 EMS29 EMS31 EMS34 STRTCR RDRM1 RDRM2 RDRM3 RDRM4 RDRM5 RDRM6 RDRM7 RDRM8 RDRM9 RDRM11
C00363 00076	ERRERC ERRERO ERERER EVAL.A EVAL.1 .UDT .UDT1 .UDT2
C00365 00077	ESB6 WNAERR WNAER1 QF3A QF2A QF1A UUOH3C UUOH3A UUOUER UUOUE1 UUOUE2 EPRINT
C00367 00078	EV3B EV3A EV3J IAP2A IAP2J WNAL0 WNALOSE WNAL1 STERR WNAFOSE FASLUR FASLUH FASLNX FASLNC LDFERR
C00369 00079	LMBERR LXPRLZ DOERRE GETLE GETLE1 SETWNA SIGNPE PROPER RMPER0 LFYER GENSY8 ARGCM8 ARGCM0 ARGCM1 ARGCM2
C00371 00080	PTRCKE .STOLZ TYOAGE GTRDT9 EOFER RDLNER EOFE IIOERR OIOERR MAPWNA MEMQER DLTER LIST.9 SUSPE
C00374 00081	GTPDL1 RAND9 S2WNAL TYPKER S1WNAL GRCTIE FRERR CRSRP2 ALST0 LFY0 ALCK0 PRGER1 DOERR DO5ER
C00376 00082	ATAN.7 EXP.ER EXPER1 SIN.ER COS.ER SQR$ER LOG.ER NUMER ARTHER 1EQNF 1GPNF 2EQNF 2GPNF ALHNKE
C00378 00083	GCMLOSE GCMLS1 GCMLS2 GCMES GCLSMS GCLUZ0 GCLUZ GCLUZ1 GCLUZ2 GCLUZ3 GCLUZ5 GCLUZ4 GCLUZ6 GCLUZ7 GCPDLOV DIE
C00382 00084	ERRADR ERRAD1 ERRDCD CPRIN1 ERRO2E ERRO2Q ERRO2A ERRO2C ERRO2H ERRO2G ERRO2B ERRO2R
C00385 00085	BEGFUN $ERROR ERRERB ERRERN ERRERD SUBR
C00387 00086	ERRFRAME EPR6 EPR7 EPR5 EPR1 EPR4 EPR3
C00390 00087	ERRPRINT OFCAN
C00392 00088	LSPRET LSPRT1 HACENT LISP1 LISP2 LISP2A LISP2B
C00396 00089	STDIFL TLTERPRI TLTERX TLTER1
C00399 00090	$TLREAD TLREAD TLRED1 TLRED2 TLREDF TLEVAL CEVAL NILBAD CSETZ PDLCHK PDLCRP
C00405 00091	LINMDP TLPRINT TLPR1 IPRIN1 TLVRSS TLVRS1 SIXJBN
C00409 00092	ERINIT ERINIX ERINI8 ERIN8G ERINI0
C00412 00093	ERINI2 ERINI5 ERIN5C ERIN5D ERIN5A ERIN5B ERINI6 ERIN6A ERINI3 SARTOB SATOB1 SATOB7 LPROGZ PDLFLS
C00415 00094	SPECBIND SPEC1 SPEC2 SPEC6 SPEC5 SPEC4 SPEC4A SPEC3
C00418 00095	ERRPOP ERRPNU UBD0 UBD UBD1 UBDP UBDWIO UBD4 UNBIND UNBND0 UNBND1 UNBND1 UNBNDP UNBWIO
C00423 00096	BIND BIND4 BIND5 CBIND4 BIND1 POPBJ CPOPBJ MAKVC MAKVC0 MAKVC1 MAKVCX MAKVC3
C00426 00097	C1CONS %NCONS NCONS ACONS BGNMAK BNCONS
C00428 00098	SIXMAK SIXMK1 .UDT4 SIXATM SIXAT1 PNBFAT PNBFA1 PNBFMK PNBFM6 PPNATM PPNAT2 PPNAT4 PPNAT6 PPNAT3 PPNAT5
C00433 00099	CATPUS CATPS1 CATBAR CTCALL THRALL THROW5 THROW1 THROW6 THRNXT THROW7 THROW3 THRXIT THRSPC THRCAB THROW4 ERUNDO ERR0 GOBRK IOGBND EPOPJ
C00440 00100	BRGEN BRLP1 BRLP BRLP2 BRLP4 BRLP3
C00443 00101	.STORE .STOR0 .STOR1 .STOR2 .STOR4 .STOR4
C00446 00102	.SET .SET1 FWNACK FWNAC1 LWNACK ERSTP LERSTP ERUN0 ERR1A ERR1 EPC1
C00450 00103	UIBRK UNWPRO UNWPR2 UNWPR1 UNWPUS UNWNCM UNWNXT UNWPRT
C00456 00104	CIN0 CONS1PFX CONS1FX CONSPFX CONSFX CONSIT BAPOPJ ZPOPJ POPNVJ CCPOPJ 0POPJ POP2J CPOPJ POP3J POPAJ1 S1PAJ POPAJ CPOPAJ POP1J1 POPJ1 POP1J CPOP1J M1TTPJ POPCJ CPOPCJ UNLKFALSE UNLKTRUE PX1J CPXDFLJ PXDFLJ POPXDJ CPXDJ
C00460 00105	SAV5 SAV5M1 SAV5M2 SAV5M3 CPOPXJ SAV3 SAV2 SAV1 RST3 RST2 RST1 RST5 R5M1PJ RST5M1 CR5M1PJ RST5M2 RST5M3 SAVX5 SAVX3 RSTX5 PXTTTJ POPXTJ RSTX3 RSTX2 RSTX1 CPOPNVJ
C00462 00106	$ERRFRAME $EVALFRAME $UIFRAME L$EVALFRAME AFPOPJ $APPLYFRAME
C00464 00107	FLTSK1 FLTSK2 FLTSKP FLTSTB FLTSFX FLTSFL NVSKP2 NVSKIP NVSKTB NVSKFL
C00468 00108	NMSKP2 NMSKIP NMSKTB NMSKFX NMSKFL
C00470 00109	LR70 D10.0 D1.0E8 CDUPL1 CCMPL1 CDBL1 CFIX1 CFLOAT1 R70 ZZZ XC IFIX IFLOAT IFLT5 IFLT1 IFLT2 IFLT4 IFLT3
C00473 00110	FLNV1X EFLNV1 FLNV1 EDBNV1 DBNV1 CXNV1X ECXNV1 CXNV1 EDXNV1 DXNV1 RSXST NPUSH 0PUSH 0.0PUSH CINTREL INTREL CHECKI ERSETUP
C00478 00111	.LCALL .LCAF5 .LCAF7 .LCAFX .LCAFL .LCADB .LCACX .LCADX
C00482 00112	NORET .RSET NOUUO LIST LISTX LISTX3 KLIST JLIST ILIST ILIST1 ILIST3 GTRDTB GTRDT8
C00485 00113	NOINTERRUPT NOINT0 CHECKU CHECKQ NOINT1 NOINT5 NOINT3 NOINT4 NOINTA NOINT2 ENOINT
C00488 00114	CARCDR %CADDDR %CADDAR %CADDR %CADAR %CADR %CAAR %CAR %CDDDDR %CDDDAR %CDDDR %CDDAR %CDDR %CDAR %CDR %CAADDR %CAADAR %CAADR %CAAAR %CDADDR %CDADAR %CDADR %CDAAR %CAAADR %CAAAAR %CDDADR %CDDAAR %CDAADR %CDAAAR %CADADR %CADAAR
C00491 00115	%CARCDR zz AD ICADRP IC.RP
C00494 00116	CRSUBRS
C00497 00117	CR0 CR1 CR1A CR2 CR3 CR7 CR4 CR5 CR6
C00499 00118	NTH NTHCDR NTHCD5 NTHCD6 NTHCD1 NTHCD0 NTHCD2 NTHCD4
C00501 00119	PNGNK PNGNK1 PNGNK2 SYCONS SYCON2 SYCON1 PSYCONS PNCONS PNG2 CPXTJ
C00504 00120	XCONS CONS CONS1 CONS3 $NCONS $XCONS LIST. %PDLNC %PDLXC %PDLC %XCONS %CONS %CONS1 %CONS3 %C2NS $C2NS FIX2 FIX1 FXCONS FIX1A FWCONS FLCONX FLOAT2 FLOAT1 FLCONS FPCONS
C00510 00121	DBL1 DBCONS DBCONS DBL1 CXCONX CMPL1 CXCONS CXCONS CMPL1 DUPL1 DXCONS DXCONS DUPL1
C00512 00122	%HUNK1 %HUNK2 %HUNK3 %HUNK4 %CXR %RPX CXR CXR2 RPLACX RPLX2 CXR30 CXR31 CXR3 CXR33 CXR34
C00515 00123	%CXR %CXR2 %RPX %RPX2 %HUNK1 %HNK2A %HUNK2 %HUNK3 %HNK4A %HUNK4 %HNKRA %HNK4R
C00519 00124	HNKSZ0 HUNKSIZE HNKSZ1 HNKSZ3 HUNKP MHUNKE MAKHUNK MHUNK7 MHUNK6 MHUNK5 HUNK
C00522 00125	ALHNKL ALHNLA ALHNLD ALHNLY ALHNLX ALHUNK ALHNKD ALHNKF
C00526 00126	ATOM LATOM SPATOM SPAT1 PRPLSE PLIST PRPNIL RPLIZ SETPLIST RPSNIL STENT VALLCE VALLOC VALLC1 VLCNIL
C00529 00127	SASSQ SASSOC ASSOC ASSQ FALSE IASSOC IASSQ IASSC0 IASSC3 IASSC7 IASSCX IASSC4 IASLOS IASSQ0 IASSQF IASWIN DISPL0 DISPLACE DISPL2 DISPL1
C00533 00128	$GET GET3 GET0 GET1 SARGET ARGET ARGET1 PNGET PNGT1 PNGT0
C00535 00129	GETL GETLA GETL5 GETL1 GETL0 GETL1A GETL4
C00536 00130	PUTPROP CSET0C CSET0Q CSET0 CSET0A BRETJ SPROG2 CSET7 CSET2 CSET2A $CADR $CAR C$CAR CSET4 CSET4A REMPROP REMP0 REMP1 REMP20 REMP7 CSET4C REMP3 REMP3A
C00541 00131	NOTNOT NOT $NULL TRUE CNOT LAST LAST5 LAST4 LLASTCK LASTCK LAST1 LAST2 BOUNDP $RUNTIME RNTM1
C00545 00132	$TIME TIME3 TIME8 ZZZ ZZZ
C00549 00133	EQUAL EQUAL0 EQUAL1 EQL1A EQL1B EQLLST EQLTBL EQLNM4 EQLNM2 EQLNUM EQLOSE EQLBIG EQLHNK EQLHN3 EQLHN1 EQLHN2 EQLHN4 EQLH4A EQLH4X EQLHN5 USRSAB USRAB USRHPP TFALSE USRHNP
C00556 00134	NCONC APPEND APP2 APP3 .NCONC .NCNC1 .NCNC2 .NCNC3 .APPEND APP1 AR1RETJ SUBS4 REVERSE REV1 APRVCK REV4 NREVERSE NRECONC NREV1 GENSYM GENSY0 GENSY2 GENSY3 GENSY1 GENSY7 GENSY6 GENSY5
C00561 00135	MEMBER SMEMBER SMEMQ MEMQ2 MEMQ3 MEMQ4 MEMBR MEMB2 MEMB3 AR2ARETJ MEMB4 SUBST SUBS0A SUBS1 SUBSTH SUBSH0 SUBST8 SUBST5 SUBST6 CRETJ SPROG3
C00565 00136	DELQ DELETE DLT3 DLT2 DLT1 .DELQ .DELETE MEMQ MEMQ1
C00567 00137	NUMP TYPEP TYPNIL %SYMBOLP NMCK0 NUMCHK PDLNKJ PDLNMK PDLNM0 NMK1 PNMK2 CPDLNKJ
C00570 00138	GCPRO %GCPRO GCPR1 GCPR2 .GCPRO .GCPR5 GCPR3 GCPR4 GCRL1 GCREL GCLOOK SXHASH ATMHSH BNHSH AHSH1 AHSH2 NILHSH SXHSH0 SXHSLS
C00574 00139	SXHSH8 SXHSH7 SXHSH4 SYMHSH SXHSH5 SXHSH6 SXHSH9 SXHSD1 SXHSD2 SXHSC1 SXHSZ1 SXHS1A SXHHS0 SXHS1 SXHS1B SXHS1F
C00577 00140	MAPATOMS MAPAT1 MAPAT2 MAPAT9
C00579 00141	MAPLIST MAPCAR $MAP MAPC MAPCON $MAPCAN MAPL0 MAPL1 MAPL1B
C00583 00142	MAPL3 CMAPL6 MAPL3A MAPL6 MAPL6A MAPL7 MAPL7A MAPL2 MAPL21 MAPL40 MAPL4 CMAPL3 MAPL22 MAPL23 MAPL24
C00587 00143	MAPL5 MAPL5A MAPL8 MAPL8B MAPL8C MAPL8A .MAP .MAP1 SET SETCK
C00590 00144	$BREAK $BRK0 CB CN.BB UDFB UBVB WTAB UGTB WNAB GCLB PDLB GCOB IOLB FACB BKCOM BKCOM0 BKCOM2 BKCOM4 CBKCM0 BKCOM1 BKCOM3
C00594 00145	INTERN INTRN3 INTRN1 INTRN INTRN4 MAKF MAKF1 MAK2 MAK4 MAK3
C00597 00146	MAKA3 MAKA3B MAKA3A MAKA0 MAKA MAKA2 MAKA5 MAKA4 MAK1
C00599 00147	RINTERN RINTN0 INTRN2 RINTN1
C00601 00148	IMPLODE MAKNAM CRINTERN MKNM1 MKNM2 RDL12 MKNM4 CHNV1X CHNV1 CHNV1D CHNV1A CHNV1B CHNV1C
C00603 00149	DEFPROP DEF1 DEF1B DEF9 DFPR2 DFPR1
C00605 00150	DEFUN DEF7 DEF3 DEF3B DEF3X DEF3L DEF3A DEF6 DEF5 DEF4
C00612 00151	TYIPEEK $$PEEK TYPK1 TYPK1C TYPK1F TYPK1H TYPK3 TYPK3C TYPK4 TYPK5 TYPK6 TYPK9 TYPK9A
C00616 00152	QUIT VALRET VALSTR VLRT2 VALS1 VALERR
C00619 00153	RETVAL RETSTR VLRT1 VLRT5 VLRT3 VLRT9 VLRT3A VLRT9 SIDDTP
C00623 00154	SUSPEND SUSP0C SUSP0 SUSP11 SUSP12 SUSP1 SUSP14 FLSNOT SUSP24 SUSP25 SUSP3
C00631 00155	SAVHGH SAPWIN
C00634 00156	ARGS ARGS1 ARGS1A ARGSCU ARGSC1 ARGS3 ARGS5 ARGS6 ARGCLB ARGCL3 ARGS0
C00637 00157	EVALFRAME FRM2A FRM3 FRM3A FRM4A FRM4 FRM5 FRM5A FRM7 FRM8 FRM2B GTPDLP GTPDL5 GTPDL2 GTPDL3 GTPDL4 GTP4A GTPX0 GTPX1
C00642 00158	FRETURN FRETRY FRETR1 FRP1 FRP2 FRP2A FRP4 FRP3 FRP3QA
C00646 00159	$GETCHARN GETCHAR GETCH1 GETCH2 GETCH3 GETCH4 GETCH8 GTCTB SUBLIS SUBLSA SUBL1 SUBL1B SUBL1A SUBLOSE SUBL3Q SUBL3Z
C00649 00160	SUBL2 SUBL3A SUBL3 SUBL4 SBL1 SBL5 SBL4 SBL2 SBL2A SBL2B
C00651 00161	SAMEPNAMEP ALPHALESSP ALPL3 ALPLP1 ALPL2 SYSP SYSP3 SYSP6 SYSPZ1 SYSPZ GCTWA GCTWI GCTWX
C00655 00162	COPYSYMBOL CPSY3 CPSY CPSY0 CPSY1 CPSY4
C00657 00163	SETSYNTAX RSSYN1 RSSYN2 RSSYN3 RSSYN5 RSSYN7 RSSYN8 CTRUE RSSYN4
C00659 00164	SSCHTRAN SSSYNTAX SSSYN1 GRCTI SMACRO SMCR1 GETMAC
C00662 00165	SSMACRO SSMC43 SSM4 SSM4AA SSM3 SMCR2 SSM1 SSGCREL SSGCPRO SSGCP1 SSPROQ SSPROX SSGRL2 SSGRL1
C00666 00166	AUTOLOAD
C00667 00167	SYSCALL SCSL0 SCSL1 SCSL1A SCSL6 SCSL3 SCSL4 SCSL5 SCSTMA SCSFAI SCSXIT SCSXT1 SCSTAT STATER SSTATUS STATUS STAT1 STAT2 STAT3 STAT6 STAT6A STAT7 STAT8
C00675 00168	STSGVAL CQSSTATUS STSSVAL STSSV1 STSSTNIL STLOOK STLK1 STSCH STSCH1 STSCH2
C00677 00169	SNOFEATURE SFEATURE SSFEATURE SSFEA1 SSFEA2 SSNOFEATURE SSSSLU SSSSS SSSS SSSSS1 SARRAY
C00680 00170	SSPLSS SPLSS SCHTRAN SSYNTAX
C00681 00171	STTY STTY1 ZZZ STTY3 STTY4 ZZZ ZZZ
C00685 00172	SSTTY SSTTY1 SSTTY3 SSTTY7 SSTTY3 SSTTY4 SSTTY5 SSTTY3 SSTTY4 SSTTY2 TTY2ST TTYSAC
C00692 00173	SFRET
C00693 00174	SUUOLINKS SUUOL1 SSUUOLINKS SSUUL1 SCLI SSCLI CLIVAR SNOINT
C00697 00175	STIME SDATE STCVT SRCDIR SUNAME SUSERID SJNAME SSUBSYSTEM SJNUMBER SHOMEDIR SHSNAME SHSNA1 SHSNA2
C00700 00176	SHSNAME SDATE STIME STIM2 SSUBSYSTEM SDATE STIME STIM2 SSUBSYSTEM SJNAME SJNUMBER SUSERID SUSER1 SUNAME
C00704 00177	STIME STIME1 SDATE SDATIM SJNAME SSUBSYSTEM SRCDIR SUSERID SUNAME SJNUMBER
C00707 00178	SSLINMODE ZZX
C00709 00179	SDOW SDOWQX SDOW SDOWQX SDOW SDOWQX
C00711 00180	SABBREVIATE SSABBREVIATE SSABB1 SMEMFREE
C00712 00181	SSYST0 SSYSTEM SSYST2 SSYST7 SSYST1 SSYST3 SSYST5 SSYST4 SSYST6
C00714 00182	SSGCTIM SGCTIM SGCTM1 SLVRNO SFILESYSTEM.TYPE SOPSYSTEM.TYPE SSITE STTYREAD SLAP SLAP1 SSTTYREAD SSLAP SSLAP1
C00716 00183	SLINMODE STERPRI STERP1 SSTERPRI
C00717 00184	SCRFUN SCRFIL SLOSEF SSLOS0 SSLOSEF BPDLNKJ
C00718 00185	SJCL SJCL2 SJCL4 SDDTP SJCL SJCL1A SJCL1 SJCL2 SJCL4 SJCL3
C00721 00186	STTYTYPE STTYSIZE STTYS1 STTSZ9 SOSPEED SOSSP9
C00723 00187	STTYTYPE STTYSIZE STTYS1 D10TNM
C00726 00188	STTYTYPE STTYSIZE STTYS1
C00727 00189	STTYSCAN STSCN1 SSTTYSCAN SSTSC1 STTYCONS STCON1 SSTTYCONS SSTCO1 SSTC2 SSTC1
C00731 00190	STTYINT SSTTYINT SSTIN1 SSTIN2 SSTIN3 SSTIN4
C00734 00191	SPDLMAX SSPDLMAX SGCSIZE SSGCSIZE SGCMAX SSGCMAX SGCMIN SSGCMIN SPDLSIZE SPURSIZE SSPCSIZE SPDLROOM SSGP1 SSGP1A SSGP1C SSGP1D SSGP2A
C00737 00192	SSGPGT SSGPLZ SSGP3$ SSG3A1 SSGP3A SSGP3Z SSGP3Y SSGPPT SSGM1 SSGM2 SSGMRV SSGP4
C00740 00193	SSGS1 SSGX1 SSPM1 CSETP1 CSETNS CSETP2 CSETP3 CSETP7
C00743 00194	SRANDOM SRAND3 SSRAN0 SSRANDOM SSRAN3 SSRAN6 SSRAN8 SSCALLI SSSENDI SSSENA SSSEN1 SSSEN0 SSUSRHNK
C00746 00195	SSWHO1 SSWHO2 SSWHO3 SWHO1 SWHO1A SWHO2 SWHO3 SIXNUM SMAR SSMAR SSMAR5
C00748 00196	SSGCWHO SITS SITS9
C00750 00197	STBA LSSTBA
C00753 00198	LSTBA
C00756 00199	
C00758 00200	STBSS LSST
C00761 00201	STBS
C00764 00202	
C00768 00203	CURSORPOS CRSRPS CRSR10 CRSFA5 CRSFAY CRSFA4 CRSFA2 CRSFAZ CRSRP8 CRSFA1 CRSRP0 CRSR20 CRSRP5 CRSRP7 CRSR71 CRSRP3 CRSRP6 CRSRP4 CRSR40 CRSRP9 ZZZ ZZZ CRSR11 CRSR12 CRSR13 CRSR14 CRSRP1 CRSRMP CRSRM1 CRSRN
C00775 00204	%%FUNCTION .FUNC4 .FUNC1 .FUNC2 .FUNC3 AEVAL
C00777 00205	ALIST ALST1
C00782 00206	ALST2 ALST3 ALST3A ALST4 ALST4A ALST4C ALST5 ALST5A AL5AB
C00785 00207	ALST7 ALST6 ALST6A ALST6B ALST7A AUNBIND AUNBN0 AUNBN1 AUNBN2 AUNBN3 AUNBN4 AUNBN5 AUNBN6 AUNBN7 IAP4A APFNG CAUNBIND APLBL APLBL1
C00789 00208	LISTIFY LFY3 LFY1 PNPUT $PNGET $PNG.R $PNG3 $PNG3A $PNG4 $PNG.D $PNGX DEPOSIT EXAMINE MAKNUM MUNKAM
C00792 00209	$SLEEP ALARMCLOCK ALCK3 ALCK4 ALCK1 ALCK5 ALCK7 ALCK2 M30.
C00795 00210	REMOB REMOB2 REMOB7 REMOB3 REMOB4 REMOB1 ARG ARGXX ARG3 SETARG ARGCOM
C00797 00211	SBSYM VCLSYM VCSYM TLSYM TSYM PLSYM PSYM POF TOF PSYM1
C00800 00212	PSYMP PSYMQ PSYMX CPSYMX PSYMP1 PSYMSB FCN.B
C00803 00213	TOF1 POF1 PSYMVC PSVC1 PSVC2 PSVC3 PUFY
C00805 00214	ZZ PSMTB LPSMTB P. PL. VC. VCL. T. TL. SB. BB PSYMT PSYMT1 PSYMT2 PSYMT3 PSYMTT PSYMTL
C00809 00215	PPTBL1 PPTBL2 PPTBL6 PPTBL3 PPTBL4 PPTBL5 PPTBL7 PPTBL9 PPTBL8
C00812 00216	XPURIFY PURIFY FPURF2 IPUR1 IPUR2
C00816 00217	IPUR4 IPUR5 IPUR9 IPURE$ IPUR6A IPUR6 IPUR7 IPUR3A IPUR3
C00820 00218	RSXTB2 RCT0
C00824 00219	TLRCT ZZ .NOPOINT CTY TYOI CTYP TYO1C TYO1TB
C00832 00220	PRNARG PRNAR$ PRNAR0 PRNAR3 PRNAR7 PRNTTY PRNAR2 PRNAR4 PRNAR5 PRNAR6 PRNARA PRNAR8 PRNAR9 PNAGX CPNAGX
C00837 00221	MPFLOK MPFLO1 MPFLO3 MPFLO2 PRNARK PRNRK3 PRNRK1 PRNRK2 PRTSTO PRTSO1 PRTSTR PRTST1 PRTST2 PRTSTL
C00842 00222	TYO$ %TYO %TYO1 TYO $TYO TYOPR TYO1 TYO6 STRTYO TYO6A TYO6B TYO5 TYO2 TYO2A TYO2Z TYO2B TYO4 TYOARG
C00845 00223	TYOFA TYOFIL TYOF TYOFS1 TYOFS0 TYOF0D TYOF0E TYOF0G TYOF2 TYOFXL TYOFE
C00850 00224	TYOF3 TYOFBS TYOFTB TYOFLF TYOFFF TYOF7 TYOFCR
C00853 00225	TYOF4 TYOF6 TYOF4A TYOXCT C$ INTTYR TYOF5 TYOF5Y TYOF4C TYOF4J
C00857 00226	%TERPRI TRP$ TERPRI TERP1 ITERPRI PTYO PTYO1 PTYO3 PTYO2
C00860 00227	PRINT %PRO PRINTOBJECT %PRO3 %PROX %PRINT $PRINT CTY1 CTY2 PRIN1B PRIN1 %PRIN1 %PR1 $PRIN1 %PR1A PRINC %PRINC %PRC $PRINC X X
C00865 00228	PR.PRC PR.ATR PR.NUM PR.NVB PR.EFC PR.NLS PRINTY PRINTF PRINTA PRINT3 PRINT4 PRINH6 PRIN7A PRIN8A
C00869 00229	PRINTY PRINTF APRINT PRINTA PRINT0 PRIN0A PRINT1 PRIN1Q PRINT2
C00872 00230	PRINT3 PRIN3A FLTHNK SENDFL SENDPR SENDP1 SNDPR0 PRN3NH PRIN3F PRINT4 PRINT5 PRINT6 PRINT7 PRINH6 PRIN7A PRIN7B PRINT8 PRIN8A PRINT9
C00881 00231	PRINH0 PRINH8 PRINH2 PRHN2B PRINH3 PRHN3A PRHN3B
C00883 00232	PRINX PRIN1A PRIN1Z PRINA1 PRINA2 PRINA3 PRINA4 PRINX5 PRINL4
C00886 00233	PRNSR PRNJB PRNFL PRNF5 PRNF6 PRNJ2 PRNF1 PRNSTO PRNJ1 PRNSR1
C00890 00234	PRINSY PRINN PRINIL PRNN1 PRNN2A PRNN2B PRNN2C PRNN2 PRNN3 PRNN3A PRNN3B PRNN3C
C00894 00235	PRNN4 PRNN4A PRNN4B PRNN5 PRNN5A VBARPOPJ PRNN6 PRNN6A
C00896 00236	MAPNAME MAPNM1 MAPNM2 MAPNM3 PRINLP PLP1 PRINLQ
C00898 00237	PRINI PRI2D PRI2C PRI2Q PRI2A PRINI2 PRINI9 PRINI3 FP7A1 FP7B PRINI5 PRINI7 PRI.
C00901 00238	PRI2B PRI2B3 PROMAN PRINRM PRINR0 PRINR1 PRINR2 PRINR3 PRINR4 PRINR5 PRINR6 PRINR9
C00904 00239	PRINDB DFP0 PRINO FP0 FP0A FP0B FP1 FP3 FP3A FP3A1 FPX0
C00909 00240	FP3
C00911 00241	DFP3A DFP3A1 DFP3A2 DFP3A8 DFP3A9
C00914 00242	FP4 FP4A FP4E0 FP4E1
C00916 00243	FP4E FP4E2 FP4E2A FP4B
C00919 00244	FP4B1
C00920 00245	PRINCX PRNCX2 PRNCX3 PRNCX4 PRINDX PRNDX2 PRNDX5
C00922 00246	PRINB PRINB0 PRINBQ PRINBZ PRBAB PRINB3 PNFBLP
C00924 00247	PRBFNA PRBFIN PRINBI PRINBJ PRBNUF PRINB4
C00926 00248	FLATSIZE FLAT5 FLAT4 FLAT3 FLAT2 CFLAT2 %FLO FLATOBJECT FLATO2 FLATC FLAT7 FLATC1 FLTC1A FLATC2 FLATC3 FLAT7A $EXPLODEC $$EXPU $$EXPLODEN $$EXSN $$EXP0 $$EXP1 EXPLY1 EXPLY2 EXPLY3 EXPLY4 EXPLY9
C00932 00249	EXPLODE EXPL0 EXPL4 EXPL1 EXPL3 EXPL6 EXPL2
C00933 00250	BAKTRACE BAKLIST BKTR0 BKTR3 BKTR2 BKTR1 BKTR2X
C00937 00251	BKTR1A BK1A2 BK1A4 BK1A1 BK1A1C BK1A3 BK1A1B
C00940 00252	BKTR1B BKTR1C BKTR1F BKT1B1 BKT1F1 BKT1F2 BKTR1H BKTR1E BKTR1D BKTR1G BKTR1I BKTRR3 BKTRR5 UREAD UREAD2 UREAD1 UREOF UCLOSE
C00945 00253	UAPPEND UWRITE UWRT0 UWRT1 UWRT2
C00948 00254	UFILE0 UFILE UFILE5 SCRUNIT CRUNIT
C00950 00255	UGREAT UGRT1 UPROBE UKILL
C00952 00256	TTSR TTSR1
C00954 00257	RSQUEEZE SQUEEZE SQZCHR SQOK SQNOTL SQNOTD SQ%$
C00957 00258	5BTWD $5BTWD 5BTWD0 5BTWD1 5BTWD9 UNSQOZ UNSQZ1 UNSQZ2 UNSQZ3
C00959 00259	PUTDDTSYM PUTDD0 PUTDD2 PUTDD4 PUTDX
C00961 00260	LAPSETUP LAP5HAK L5H1 L5H2 L5XIT L5ERSTP L5SPBND L5H3 L5MKUNBD L5INHIBIT L50.0P L5NILP LAPSMH LAPSM1 LAPST2 LSYMPUT FSLSTP FSLST2
C00966 00261	LSYMS LGSYMS LLSYMS ZZ LAPSIX ZZ LAPFIV LAP5P GETDDTSYM GETDDJ GETDD1 GETDDG LGTSPC PAGEBPORG PGBP4
C00971 00262	MAKUBE MAKUNBOUND MAKUN1 $PURIFY FPURF0 FPURF3 ZEROP MINUSP PLUSP ZMP MINUS MNSFX
C00976 00263	ADD1 SUB1 SUB11 A1S1FX A1S11 A1S1BG ABSOV
C00978 00264	COMPR DIFFA PLUSA TIMESA QUOA QUOOV QUOAK QUOAK2 QUOAK1
C00981 00265	T1 .QUO .TIMES .DIF .PLUS T21 QUOTIENT TIMES DIFFERENCE PLUS T22 T20 T24 T4 T7 T7A T7X T7X1 T7O ZFZCHK ZFZCH9
C00984 00266	T5 T6 T6A T3 T15 T14 T14EX2 T14E T14EX T14EX1 FXIDEN FLIDEN ABS
C00986 00267	REMAINDER REMAI2 FLOAT FIX4 FLOAT4 IFXERR $IFIX $IFIX1 $FIX
C00989 00268	.GREAT .LESS LESSP GREATERP GTR1 GTR9 MIN MAX MXF MXS MAXFIN MAX923
C00991 00269	GRSUC2 GRSUC1 GRS923 GRSUCE GRSFIN GRSF1 GRFAIL GRSWF GRSWX
C00992 00270	ADD1 SUB1 REMAINDER MINUS ABS MINUSP PLUSP ZEROP
C00994 00271	$IFIX $FIX FIX4 FLOAT FIXFLO FLOAT3
C00995 00272	MIN MAX MINMAX .GREAT .LESS LESSP GREATERP MNMX1 MNMX9 GRESS GRUSE
C00997 00273	.DIF DIFFERENCE DIF2 .QUO QUOTIENT QUO2 QUO3
C00999 00274	.TIMES TIMES QUO1 .PLUS PLUS DIF1 PLUS1 PLUS7 PLUS5 PLUS3A PLUS4 PLUS9 PLUS2 PLUS2A PLUS2V T7O0
C01001 00275	EXPT XPTLL XPT.X XPTLX XPTLX1 XPTLX2 XPTOV
C01004 00276	XPTXX0 XPTXX XPTXX5 XPTXX3 XPTXX4 2XPT 2BGXPT 2BGXP1
C01006 00277	XPTBL XPT.B XPTZX0 EXPT6B EXPT6C EXPT1A EXPT1 EXPT3 EXPT2 EXPT4 XPTBX XPTBX1
C01010 00278	XPTII XPTI$ XPTZL 1.0PJ XPTZL1 XPTZL2 XPTZX XPTZX1 XPTM1
C01012 00279	RANDOM RAND1 IRAND IRAND0 IRAND3 IRAND5 RNDM1 RNDM2 RNDM0 RNDM1A RNDM2A
C01014 00280	HAULONG .HAU 4HAU 3HAU1 1HAU 2HAU 3HAU
C01015 00281	HAIPART 0HAI 0HAI1 0HAI2 0HAI3 3HAI 3HAI1 3HAI2 3HAI3
C01018 00282	LNGTER LENGTH LNGTH0 LNG1A LNGTH1 LNGTE1 LNGTH2 LNGTH5 LNGTH6 BIGP
C01020 00283	BOOLE BOOLL BOOLG BOOL1 ODDP1 ODDP ODDP2 ODDP21 ODDP4 ODDP3
C01022 00284	$FSC $ASH $ROT $LSH SHIFTX SHIFTY $LOADB %LOADB .LODB1 $LDB %LDB .LDB2 $DEPOB %DEPOB .DPOB1 $DPB %DPB .DPB1 .DPB2 .GCD .GCD0 .GCD3 .GCD1 .GCD2 GCD0 GCD GCDXX
C01026 00285	$EQUAL $EQL1 $IEQ IEQUAL $LESS $GREAT $IGL1 $IGL IGRT IADD1 $ADD1 ISUB1 $SUB1
C01028 00286	$ARITH IARITH I$B I$ART2 ARITH IARDS ARIT0
C01030 00287	IDIFFERENCE IPLUS IQUOTIENT ITIMES $DIFFERENCE $PLUS $QUOTIENT $TIMES IARZAR
C01031 00288	$SIN SIN. SIN.0 SIN.1 SIN.2 SIN.XT PI%2 SIN.CF COS COS.
C01035 00289	SQRT SQRT. SQRT.. SQRT.1
C01036 00290	SQRT SQRT. SQRT..
C01041 00291	SQRT SQRT. SQRT.. SQRT.2 SQRT.3
C01044 00292	LOG LOG. LOG.. LOG.1 LOG.2 ROOT2 LOG.CF NUMFLT NUMFL3
C01046 00293	ATAN ATAN. ATAN.1 ATAN.2 ATAN.3 ATAN.4 PI% ATAN.C
C01049 00294	EXP EXP. EXP.. EXP.A EXP.1 EXP.2 EXP.RX EXP.3 EXP.CF FPWUN INTLG C1.0E5 YPOCB BCOPY BCOP1 BNARSV BNARRS
C01054 00295	PLOV PLOV2 PL1BN TIMOV TIM1BN T2 T12 PL2BN
C01056 00296	TIM2BN T11 T13 T13X BNDF BNPL BNPL1 T19A T19B T19C BNXTIM BNTIM
C01058 00297	DIVSEZ REM2BN DV2BN DV1BN BNDV
C01060 00298	DV2BN1 DV2BN2 BNFXLP DV2BN3 D1FIN
C01062 00299	BNTRUN BNTR4 BNTRSZ BNTRS1 BNPJ2 BNCV BNCVTM T17 T16 T23
C01065 00300	BNSUB BNADD BN4 BN15 BN20 BN7 BN9 BNADD2 BN14 BN8 BN5 BN13 BN6
C01067 00301	BNSUB2 BN10 BN11 BN11A BN12 BNM1 BNM2
C01071 00302	BNMUL BNM5 BNM4 BNM3
C01074 00303	BNQUO BNQUO1 BQ1 BQ2
C01076 00304	BQCC BQGEST BQZQ BQCOPY BQNORM
C01078 00305	BQ6 BQSRRM BQSHRM BQVET BQSHRT REMFIN BQ10 BQDD BQ11
C01080 00306	BQ5 BQ7 BQ8 BQ9 BQ9A BQ9B
C01082 00307	BQEFIN BQSH0 BQ1DF BQGESS BQCHEK BQC2 BQC1 BQFIN
C01084 00308	BQSUB BQSUB0 BQSUB7 BQSUB1 BQSUB6
C01086 00309	BQSUB3 BQSUB4
C01089 00310	FLBIGF FLBIG FLBIGX FLBIGZ FLTB1 FLBIGQ FLBIGO
C01091 00311	FIXBIG FXBFV FXBFZ FBFIN FXBFQ MNSBG POP4J
C01093 00312	ABSBG0 ABSBG REMBIG GRBB GRBBL GRBR
C01095 00313	GRFXB GRBFX GRBF GRB1 GRB12 GRB13 GRB14 GRB2 GRBBEL GRBBE2
C01097 00314	1HAI 1HAI1 2HAI 2HAI2 2HAI0 2HAI3 2HAI4
C01100 00315	GCDBG GCDBG0 GCDBG1 GCDBG2 GCDBGU GCDBHU GCDBG4
C01104 00316	GCDBGV GCDBHV BNLWFL BNLWFX BNLWXX GCDBGO GCDBGT GCDBX GCDOV GCDOV1
C01106 00317	POP3UB POP2UB EVALHOOK EVNH3 EVNH0 OEVAL OEVL1 EVAL EVAL0
C01109 00318	EV0 EV0A EV0ALS EVAPH EV0H EVTB1 EV2 EVTB2 EE1 EE2 EE2A ETT EAL EAL2 EFM
C01115 00319	EFX AEXP EXP3 CIAPPLY EFS ELSB ELSB1 ESAR EAR EAR3 EAR1
C01117 00320	ESB ESB4 ESB2 ESB1 ESB3 ESB3A ESB3C EV3 EV4 EV4B EV3C EFMER EWHEN SYMEV0 SYMEVAL EVSYM EE1A
C01121 00321	APPLY APPWT1 .APPLY AP3 AP3A APPWTA AP2 AP4
C01124 00322	SUBRCALL RETTYP %LSUBRCALL PTRCHK
C01126 00323	%ARRAYCALL %ARR7 FUNCALL FUNCA1
C01128 00324	%LXFC liap0 liap0a liap0b liap1 liavec liavc0 liavc9
C01132 00325	IAPPLY ILP1 IALIS ILP1B
C01135 00326	APTB1 IAPATM IAPAT2 IAPAT3 IATT IAPIAL IAPIA1 IIAL IAPSAR IAPARR IAPSBR IAPSB1 IAPAR1 IAHNK IAPXPR IAPLSB IAP2
C01139 00327	IAPLMB IPLMB1 IAP5 IAP5C IAP5B IPLMB2 IPLMB4 IPLM4A IPLM4B IPLMB5 LMBLP LMBLP1 LMBLP2 IPROGN IAP3 CUNBIN IAP4
C01143 00328	FUNCTION QUOTE DECLARE $COMMENT SETQ SET1 SET0 $AND $OR ANDOR
C01145 00329	PROG PRG1 PRG1Z PG0 LPRP PG1 PG1A PG0A VBIND PBIND PBIND1 PBIND2 PROGV RETURN PRXIT ERRP4 RHAPJ CQFUNCTION
C01149 00330	GO GO2 GO1 PG5 PG5A GO3 GO3B GO3A
C01151 00331	DO DO4A DO4 DO4C DO7 DO7A DO9
C01153 00332	DO8 DO2 DO4D DO5 DO5Q DO5Q1 DO5F DO5B
C01155 00333	DO5E DO5D DO5G DO5C DO6 DO6A DO6C
C01157 00334	COND1 COND CON3 COND2 CON2 BKERST BKRST3 BKRST4 BKRST0 BKRST2 BKRST1
C01160 00335	ERRSET ERRST3 ERRNX ERR ERR3A ERR3 CATCH .CATCH .CATC1 CATCHB CATCB2 CATCB1 CATCHALL UNWINP UNWERR PTNTRY UNWINC PTEXIT UNWINE THROW .THROW CATHRO WIOSPC WIOSP0 WIOSP1 WIOBND WIOBN0 WIOBN1 WIOUNB WIOUN0 WIOUN1
C01171 00336	CASEQ CASEE CASEF CASES CASE1 CASE1E CASE1H CASE1D CASE1B CASE1A CASE1Z CASE1G CASE1Q CASEBQ CASEBZ CASEM CASECK CASEEQ CASEAQ CASE1C IF IF1A
C01177 00337	SETF SETF2S SETF5 SETF1 SETF2C STF2C1 STF2C2 SETF1B SETF1C SETF2A STF2A5 STF2A7 STF2A9 CSETF5 SETF2G STF2G2 EVALCAR SETF3
C01184 00338	$PUSHER $PUSH
C01187 00339	$POPER $POP $POP4 $POP2 $POP1 $PUSH1 TNILER
C01189 00340	STORE STORE7 STORE9 BREAK SIGNP SIGNP0 SPTB
C01192 00341	PROG1 PROG2 PRG12Z PROGN PROGN1 EQ RPLACA RPLACD RPLCD3 RPLCD2
C01194 00342	GCRET GCNRT GC MINCEL GCCNT GCCNT1 GCCNT4 LPROG3 GCCNT0
C01196 00343	WHL AGC4 AGC AGC1 AGC1Q GCP4 GCP4A GCP4B
C01201 00344	GCP5 GSTRT0 GSTR0A GSTRT1 GSTRT2 GSTRT3 GSTRT5 GSTRT7 GSTRT8 GSTRT6 GCWHL2 GCWHL3 GCWHL9
C01205 00345	GCP6 GCP6Q0 GCP6Q1 GCP6Q2 GCP6Q3 GCP6Q4 GCP6Q5 GCP6Q6 GCP6Q8 GCP6Q9 GCP6R0
C01208 00346	GCP6B1 GCP6B2 GCP6A GCP6F1 GCP6F GCP6F0 GCP6D GCP6D1 GSTRT9 GCWHL6
C01211 00347	CGCMKL GCP6H GCP6H1 GCP6H8 GCP6H3 GCP6H4 GCP6H5 GCP6G GCP6H0
C01213 00348	GCP6H7 GCP6H2 GCP6H9 GCP6J1 GCP6J3 GCP6J9
C01216 00349	GCP7
C01217 00350	GCSWP GCSW1 GCSW2 GCSW2A GCSW5 GCSW7
C01220 00351	GCSWTB GCSW7A
C01222 00352	GCSWS GCFSSWP GFSP1 GFSP2 GFSCNT GFSP4 GFSP5 LPROG1 GCSWY GSYMSWP GYSP7 GYSP1 GYSP2 GYCNT GYSP3 LPROG6 GYSP5 GYSP5A GYSP5B
C01226 00353	GCSWD GCSWC GCSWZ GCSWH1 GCHSW1 GH1SP1 GH1SP2 GHCNT1 GH1SP4 GH1SP5 GH1SP6 LPROGH
C01228 00354	GCSWH2 GCHSW2 GH2SP1 GHCNT2 GH2SP5 GH2SP7 LPROGK GCSWA GSARSWP GSSP0 GSSP1 GSSP2 GSSP7 GSSP8 GSCNT LPROG4
C01231 00355	GCPNT GCPNT1 GCPNT2 GCPNT6
C01232 00356	GCE0 GCE0C0 GCE0C1 GCE0C5 GCE0C2 GCE0C3 GCE0C9 GCE0C6 GCE0K3 GCE0C7 GCE0C4 GCE0K2 GCE0K1
C01235 00357	GCE0E
C01237 00358	GCEND GCRSR0
C01240 00359	GCINBT GCINB0 GCWHR GCWHR8 GCWHR2 GCWHR9
C01243 00360	GCACRS GCACR $GCMKAR GCMKAR GCMKA1 GCGEN GCP8A GCP8A1
C01246 00361	GCMARK GCMRK0 GCMRK3 GCMRK6 GCMRK7 GCMRK4 GCMRK5 GCMKND GCMRK8 GCMRK1 GCMRK2 GCMK2A GCMK2B GCHNLN
C01252 00362	LSPGCM LSPGCS KLGCVC KLGCM1 KLGCND KLGCM2 KLGCSY KLGCSA ZZZ ZZZ KLGCSW KLGS1 KLGS1A KLGS1D
C01255 00363	GSGEN RTSPC2 RTSP2A GGEN2 GGEN1 GFSPC GTSP5A BPSGC BPSGX
C01257 00364	GCP8K GCP8J GCP8I GCP8G GCP8C GCP8B GCP8D GCP8H GCP8L GCP8L5 TWAP
C01260 00365	STGPNT GCBT
C01262 00366	RETSP RTSP2 RTSP7 RTSP9 RTSP5 RTSPC1
C01267 00367	GTSPC1 GTSP1B GTSPC8 GTSPC2 GRELAR GREL1 CZECHI GTSPC8
C01271 00368	CNLAC BPNDST GTSPC3 GT3Z GT3H GT3B GT3A GT3C GT3D GT3D2 GT3D4 GT3G
C01277 00369	PURCOPY PCOPY9 PCOPLS PCONS PCOPFX PFXCONS PFXC1 PFXC3
C01280 00370	PCOPFL PFLCONS PCOPCX PCXCONS PCOPDB PDBCONS PDBC3 PCOPDX PDXCONS PCOPBN PBNCONS
C01283 00371	PCOPSY PCOPS1 PCOPS3 PCOPHN PCOPH5 PCOPH2 PCOPH3
C01287 00372	GETCOR GTCOR4 GTCOR6 LHVB0 LHVBAR LHVB3 LHVB4 LHVB1
C01290 00373	PDLST0 PDLST8
C01293 00374	PDLOV PDLH0A PDLH2 PDLH2A PDLH2B PDLH3A PDLH4
C01297 00375	MORPDL PDLMSG PDLST9 PDLH5 PDLH6
C01299 00376	GRBPSG GTNPSG GTNPS8
C01303 00377	GTNPS3
C01306 00378	GCGRAB GCGRB1
C01308 00379	GRBSEG GRBSG1 GCWORRY GRABWORRY GCWR0A GCWR0B GCWOR2 GCWR2A GCWR2B
C01313 00380	GCWR2C GCWR3A GCWR3B GCWR3F GCWOR4 GCWR4Q GCWOR6 GCWOR7
C01317 00381	GCWORG GCWORS GCWFOO GCWORX GCWRX1 GCWRX2 LPROG9 GCWORN
C01320 00382	ALIMPG ALIMP3
C01323 00383	RECLAIM RECL1 RECL2 RECLFW REBIG RECL9 RECL9A
C01326 00384	MAKVC3 MAKVC4 MAKVC8
C01329 00385	LDPRG9 ARGCL7 MAKVC9 MAKVC5 MAKVC6
C01331 00386	$ALLOC $ALLC6 $ALLC9 $ALLC7 $ALLC8 $ALLC4
C01333 00387	$ALLC0 $ALLC5 $ALLC3 $ALLC2 RS.FF RS.VMO RS.SQX RS.BRK RS.SCO RS.WSP RS.DOT RS.MAC RS.SLS RS.RBO RS.SL1 RS.PNT RS.SL9 RS.ALT RS.ARR RS.SGN RS.DIG RS.XLT RS.LTR NWTNE NWTNN RS.FF RS.VMO RS.SQX RS.BRK RS.SCO RS.WSP RS.LP RS.DOT RS.RP RS.MAC RS.SLS RS.RBO RS.SL1 RS.PNT RS.SL9 RS.ALT RS.ARR RS.SGN RS.DIG RS.XLT RS.LTR NWTNE NWTNN RS.CMS RS.SCS RS.OBB RS.WTH RS.SEE
C01342 00388	$READCH RDCH$ READCH RDCH3 $ASCII RDCH2
C01343 00389	XINCALL INCAST INCSEO XINCA1 INCALL INCAL4 INCST2 INCST3 INCST4 INCAL5 INCAL1 INCALZ INBIND INBN4 INBN1 INBN9 LINBN9 INCAL2 INCST1 INCAL7 EOFBN0 EOFBIND EOFBN3 EOFBN5 CEOFBN5
C01351 00390	EOF EOF2 EOF8 EOF1 EOF7 EOF4 EOF9 EOF5 EOFZ
C01353 00391	INPU0 INPUSH INPU1 INPU12 INPU2 INPU3 INPOP INPU5 INPU6 INPU7 INPU8
C01355 00392	TYI$ %TYI TYI UNTYI UNTYI3 SUNTYI
C01358 00393	$PEEK $DEVICE $DEV$ $DEV0 $DEV1 $DEV1A $DEV1B
C01360 00394	$DEV2 $DEVLM $DVLMX $DVLMQ $DVLM0 $DVLM1 $DEVPS $DVPS1 $DVPS0 $DVPSX $DVPS2 $DVPS3
C01365 00395	$DEV4 TYIXCT $DEV4B $DEV4C TYIXCT TYIXCT $DEVS4 $DEV4S $DEV4U $DEV4Z $DEV4T $DEVAH TYICAL $DVAH1 $DEV4M
C01372 00396	$DEV5A $DEV5 $DEV5K $DEVBUF TYICA1 $DEV5R $DEV5S $DEV5M
C01377 00397	$DEV6 $DEV6W $DEV6A $DEV6B $DEVECO $DEVEF $DVEF1 $DVEF0
C01380 00398	$DEVSFA $DEVP1 $DEVP2 $DEVPE INFGT0 INFGET $DVLUZ INFLZZ INFLUZ
C01383 00399	BYTEAC MKNR6C MKR6DB
C01384 00400	READLIST RDLPEK RDLTYI RDLTY1 RDLTY3 RDLTY9 RDLTY2 RDLPK1 RDLUNTYI READ6C R6C1
C01386 00401	READ$ IREAD IREAD1 OREAD READ READ0 READS0 READST
C01389 00402	READ0B RD0B1 RD0B2A RD0BRM RVRCT
C01391 00403	READ0A RMCER REKRD REKRD1 RDOBJ3 RDOBJ1 RDOBJ RDOBJ0
C01394 00404	RDJ2A RDOBJ5 RDOBJ2 RDJ2A1 RDOBJ6 RDJ6A RDOBJ7 ER1 RDOBJ4 RD8W RD8N
C01396 00405	RDNUM RDNUM2 RDNM10 RDNUM1 RDNUM8 RDNUM7 RDNUM9 RDNM9E RDNM9B RDNM9C
C01399 00406	RDNUM0 RDNUM6 RDNM8A RDNMF RDNM2 RDNM2A RDFXNM RDFX1 RDFL1
C01401 00407	RDNUM5 RDNUMD RDNUMB RDIBOV RD10OV RDNUMC
C01403 00408	RDFXEX RX1 RX1 RDFX2
C01404 00409	RDFLNM RDFL3 RDFL3A RDFL2A RDFL2D RDL2D0 RDL2D3 RDL2D1 RDFL2E RDL2EB RDL2EA RDL2E0 RDL2E1 RDL2EC RDL2A0 RDL2A2 RDL2A1 RDL2A3
C01408 00410	RDLST RDLSTA RDLSAA RDHNK1 RDLST1 RDLST0 RDHNKA RDLST3 RDLS3Y RDLSX RDLSX1 RDLS3D RDLST4 RDLS4A RDLS4B RDHNK RDSKWH RDSKWX
C01414 00411	RDOBM2 RDOBJM RDSMCK RDALPH RDA0 RDA1 RDA3 RDA4 RLAST RLAST1 RDCHO1 RDCHO4 RDCHO3 RDCHO RDCHO2
C01418 00412	RD10OV RDIBOV RDBG10 RDBG1A RDBGIB RDBGIA .RDMULP .TIMER .TM.PL
C01420 00413	RDRGSV RDRGRS RDEXOF RDEX3 RDBIGN RDBIGM
C01422 00414	RDBGEX RDBGXM RDBFSH RDBXFL RDCBG RDCBG1 RDNM2B
C01424 00415	RDCHAR RDCH1 RDBK RDNMX RDNUM4 RDNM4A
C01426 00416	RDROM RDROM1 RDROM2 RDROM3 RDROM7 RDAEND IRDA IRDA1 RDIN
C01428 00417	ER2 ER3 RDNMER RDSME2 RDSME1 RDSMER
C01429 00418	RDQTE RDSEMI RDSMI0 RDSMI1 RDVBAR RDDBLQ RDVB5 RDVB2 RDVB3 RDVB4 CTRLQ CTRLS
C01433 00419	%TXMTA %TXCTL %TXASC TTYBUF TTYB1 TTYB1E TTYB7 TTYB7E TTYB7G TTYB7F TTYB7H TTYB7N CLRSRN TTYB2 TTYB3 TTYB3A TTYB4 TTYB4C TTYB4G TTYB4J TTYB4M TTYB5 TTYB5H TTYB5K TTYB5M TTYB6 TTYB6C TTYB6J TTYB6Q TTYB9 TTYB9A TTYB9B TTYB9D TTYB9J TTYB8
C01443 00420	TTYBRC TTYBR1 TTYPSH TTYPS1 TTYATM TTYBCH TTYBLT TTYBL4 TTYBL1 TTYBL2
C01447 00421	RUBOUT RUB1CH RUB1C1 RUB1C3
C01450 00422	%READLINE %RDLN5 %RDLN6 %RDLNZ ARYTP1 NPARTP LARYTP ARYTYP ARYIN1 ARYIN2
C01455 00423	DIMSTB DIMFTB DIMDTB DIMZTB
C01457 00424	TTDEAD TTDEDC ARRAY %%ARRAY ARRY0 ARRY0B ARRY0C ARRY0F ARRY0G ARRY1 ARRY1A
C01460 00425	ARRYQ0 ARRYQ1 ARRYQ2 ARRYQ3 ARRYQ4 ARRYQ5 ARRY1D ARRY1F ARRY2 ARRY2A ARRY2B
C01462 00426	ARRY2C ARRYAE ARRY2F ARRY2H
C01465 00427	ARRY3A ARRY6 ARRY6Q ARRY6A
C01467 00428	ARRY7 ARRY7A ARRY7B ARRY4 ARRY5 ARRY5D ARRY5F ARRY5G ARRY8
C01472 00429	AREGET AREGT2 AREGT0 AREGT1
C01473 00430	MKFLAR MKFXAR MKDTAR MKLSAR MKAR1 SACONS ADIMS0 ADIMS ADIMS1
C01476 00431	BLTARRAY BLTAR1 BLTXIT BLTALZ BLTALS
C01478 00432	.REA3 .REA3C .REA3D .REA3E C.REA2 ARYSIZ ARYSZ3 ARYSZ4 ARYSZ6 ARYSZ5 ARYSZ7
C01482 00433	OBAFIX OBAFX1 OBAFX3 RDTFIX RDTFX2
C01484 00434	BLTO1 BLTO3 BLTO4
C01488 00435	BLTI1 BLTI4 BLTI3 BLTI5 BLTI6 BLTI8
C01494 00436	.REARRAY .REA4B .REA4A .REA4 .REA5 .REA6 .REA6A .REA7 .REA7A .REA2 .REALOSE GETSP GETSP0 AGTSPC GETSP1 .REA1 .REA1A
C01499 00437	AYNV1 AYNV5 AYNV4 AYNV3 AYNV2 AYNV0 AYNVER AYNVE1 2DIMS 2DIMS1 2DIMF 2DIMF1 2DIMD 2DIMD1 2DIMZ 2DIMZ1
C01503 00438	3DIMF 3DIMS 3DIMX 4DIMF 4DIMS 5DIMF 5DIMS
C01506 00439	FILLARRAY FILLA0 FILLA1 FILLA4 FILLA5 FILLA2 FILLA3 FILLD1 FILLD3 FILLD6 FILLZ1 FILLZ3 FILLZ6 OPNCLR FILLA6 FILLA9 FILLA8 FILLA7 FILLUZ
C01511 00440	LISTARRAY LISTA3 LISTAZ LISTA7 LISTA1 LISTA2 LISTA5 LISTA6 LISJOB LISFIL LISTD5 LISTD6 LISTZ5 LISTZ6 LLDAT ILDAT LLDSTB LDAGEN LDPRLS LDDDTP LDBGEN LDNPDS
C01519 00441	
C01534 00442	IALB FASLOAD LDXXY1
C01536 00443	LDDISM LDRTHS LDXQQ5 LDXQQ2 LDXQQ3 LDXQQ6 LDXQQ8 LDXQQ7
C01542 00444	LDXXX1 LDXXX9
C01544 00445	LDXHHK LDXHAK LDXHK1 LDXHK2 LDXHK3 LDXHK5
C01548 00446	LDXHAK LDXFLC LDXIRL LDREL LDABS LDABS1 LDABS0 LDBIN LDBIN1 LDBIN2 LDTTBL
C01553 00447	LDGTSP LDGS0A LDGS0H LDGSP1 LDGSP3 LDGSP5 LDGSP4 LDGSP6
C01556 00448	LDSPC LDSPC1 LDQAT LDQATX LDQAT1 LDQAT2
C01559 00449	LDQLS LDQLS3 LDQLS1 LDQLS2 LDQLS5 LDQLS4 LDQLPRO LDQPR0 LDQPR1 LDGPRO
C01562 00450	LDPRC LDPRC1 PRCHAK LDPRC2 LDPRC3 LDPRC4 LDPRC5 LDPRC6 LDPRC7
C01566 00451	PRCHAK PRCSMS PRCHA1 PRCH1A PRCH1B PRCHA4 PRCHA3 PRCHA2 PRCH2A PRTRTS
C01572 00452	LDSMSH LDZA2 LDZAOK LDZA1 LDSMNS
C01576 00453	LDGET LDGET1 LDGET2 LDGT5A LDGET4 LDGT5B
C01579 00454	LDGETX LDGETJ LDGETV LDGETW LDGET6 LDGDDT LDGDDT LDGDDT LDXCT LDMASK LDLHRL
C01582 00455	LDAREF LDARE1 LDGLB LDATM LDATBL LDATPN LDATP1 LDATP2 LDATP3 LDATP4 LDATP8
C01585 00456	LDATFX LDATX0 LDATX1 LDATX2 LDATX3 LDATFL LDATL0 LDATL1 LDATL2 LDATL3
C01587 00457	LDATBN LDATB1 LDATB2 LDATB3 LDATB6 LDATB8 LDATB7 LDAEXT LDRFRF
C01589 00458	LDENT LDENT4 LDNRDF LDPARG LDPRG3
C01593 00459	LDPUT LDPUT7 LDPUT0 LDPUT4 LDPUT5 LDPUT1 LDPUTM LDPUT2 LDPT2A LDPUT3 LDLOC LDLOC5
C01598 00460	LDEVAL LDEVL7 LDEV0 LDEV4 LDEV5 LDEV2 LDEV1
C01602 00461	LDBEND LDBEN1 LDFEND LDFEN2 LDFEN3 LDNPUR LDZPUR
C01605 00462	LDSDPL LDSDP1 LDSDP2 LDSDP3
C01607 00463	LDEOMM LDEOM1 LDTRYI LDLRSP LDRSPT
C01609 00464	LDLIST LDLIS0 LDLIS1 LDLTBL LDLATM LDLLST LDLDLS LDLLS1 LDLLS3 LDOWL LDLHNK LDLEND
C01612 00465	ZZ ZZZ ZZ ZZZ LDFNM2 LDGTW0 LDGTWD LDGTW1 LDGTW9 LDGTW0 LDGTWD LDGTW1 LDGTE1 LDGTWE LDGTW0 LDGTWD LDGTW1 LDGTW6 LDGTW4
C01619 00466	ALCHAN ALCHN0 ALCHN1 ALCH1A ALCHN2 ALCHN3 ALCHN9
C01623 00467	ALFILE UNLKPJ
C01626 00468	AFILEP XFILEP FILEP AFOSP XFOSP
C01628 00469	OFILOK IFILOK ATFLOK ATOFOK ATIFOK TFILOK TIFLOK TOFLOK XIFLOK XOFLOK FILOK NFILE FILOK0 FILOK1 FILNOK
C01631 00470	NML6BT NML6B5 NML6BZ NML6B0 NML6B2 DFNWD DFFNWD NML6FN NML6UF DFNWD DFFNWD NML6FN NML6UF NML6F5 NML6F2 NML6F4 NML6F3 NML6DV NML6D0 NML6PP NML6D1 NML6D8 NML6D7 NML6D4 SARGHT
C01651 00471	IDNTB LIDNTB IDNDLS PPNGET IDND IDNDA IDNDA IDND1 IDND2 IDND3 IDNDS IDNDX
C01656 00472	NAMELIST 6BTNML 6BTNL3 6BTNL4
C01659 00473	SHORTNAMESTRING NAMESTRING 6BTNMS X6BTNSL 6BTNSL 6BTNS 6BNS0A 6BTNS0 6BTNS4 6BTNS5 6BTNS8 6BTNS1 6BTNS2 6BTNS3 6BTNS2 6BNS3A 6BTNS3 6BTNS6 6BNS6A 6BNS7A 6BTNS7 6BNS7B
C01669 00474	NMS NMS.CQ NMS.CA NMS.DV NMS.FN NMS.DT NMS.XT NMS.LB NMS.CM NMS.RB NMS.ND NMS.ST NMS6BF NMS6B0 NMS6BT NMS6B1 NMS6B8 NMS6B6 NMS6B5 NMS6B7 NMS6B9 NMS6B4 NMS6BQ NMS6BL NMS6DV NMS6SN NMS6PD NMS6LB NMS6L1 NMS6CM NMS6RB NMS6R2 NMS6R1 NMS6ST NMS6PP
C01683 00475	NMS6BB NMS6BA NMS6B0 NMS6BT JFN6BT JS%OUT JFN6BC JFN6BX JFN6BU RLJLUZ JFN6BY JFN6ER JFN6BA JFN6BB LFGB20 LFGB10
C01689 00476	IFL6BT FILSFA FIL6BT FIL6B0 FIL6DF FIL6B1 FIL6B2 NMH6BT QIOSAV LQIOSV
C01692 00477	MERGEF MRGF1 DMRGF DMRGF7 ZZZ ZZZ DMRGF5 DMRGF6 TNXUDI TNXUD0 TNXUD3 TNXUD6 TNXUD5 TNXUD2 TNXU9P TNXU9D TNXST9 TNXDIE IMRGF MRGF2 MRGF3 C6BTNML TRUNM9 TRUENAME TRUNMZ TRU6BT TRUNM2 TRUNM8 TRUNM0 SUREAD SUWRITE
C01702 00478	2MERGE PROBEF PROBEZ PROBF0 D10RFN PROBF6 PROBF8 PROBF9
C01708 00479	$RENAMEF RENAM2 RENM2A RENAM3 RENAM1 RENAM0 RENM0A RENM0B RENM1A RENAM7 RENAM8 RENAM4 RENAM5 RNAM5A RENAM4 RENAM5 RENAM6 RENAM9 XCIOL RFNAME CNAMEF CNAME3 CNAME2 CNAME1 CNAMER CNAER1 CNAER2
C01717 00480	$DELETEF $DELNS $DEL6 $DEL3 $DEL7 $DEL5 $DEL4 $DEL5 $DEL9 $DEL9A
C01722 00481	CLOSE0 $CLOSE ICLOSE ICLOS6 CLOSE9 JCLOSE CLOSE4
C01725 00482	FORCE FORSF1 FORCE1 FORCE9 IFORCE IFORC1 FORCE6 IOTTTT SIOT
C01729 00483	SFMD0 SFILEMODE SFMD0A SFMD1
C01733 00484	LOAD LOAD5 LOAD6 LOAD7 LOAD7A LOAD8 LOAD1 ZZ LOAD3 LOAD2 LOAD4 $FASLP FASLP1 FASLP8 FASLP9 FASLP2 FASLP2 INCLUDE .INCLUD INCLU1 INCEOF
C01743 00485	
C01748 00486	$OPEN $OPNNS OPEN0J OPEN1A OPEN1C OPN1F1 OPEN1F OPEN1G OPEN1K OPEN1H OPEN1Z
C01752 00487	OPMDS LOPMDS OPBITS
C01754 00488	OPEN1L OPEN1Y OPEN1S OPEN1M OPEN1N OPEN1P OPEN1R OPEN1Q
C01761 00489	OPEN1T
C01764 00490	OPEN3 OPEN3C SOPEN3C OPEN3D OPN3D1 OPEN3E OPEN3F OPEN3M OPEN3N OPEN3D OPEN3E
C01774 00491	OPEN3G OPEN3P OPEN3K OPEN3L OPN3LA OPN3LB OPN3LC OPEN3J OPN3JA OPEN3Q OPEN3H OPEN3V OPEN3Z
C01782 00492	OPNBO1 OPNAO1 OPNBI1 OPNAI1 OPNA6 OPNTI1
C01785 00493	OPNTO1 OPNTO5 OPNTO6
C01789 00494	TTYGET TTYSET SCML CNSGET OPNAT3 OPNAT5 OPEN4
C01791 00495	OPNLZS OPNLZR OPNAND OPNLZ1 OPNALZ OPENLZ OPNLZ0 OPNLZ1 OPNLZ3 OPNLZ2
C01793 00496	OPENUP FILLEN ACCESS RCHST
C01795 00497	OPEN9A OPEN9B OPEN9D
C01798 00498	OPEN9C $EOPEN $EOPN1 $EOPN2 $EOPN3 $EOPN6 $EOPN5 $EOPN7 $EOPN8 $EOPN9 $EOPN4
C01805 00499	DEFAULTF SSCRFILE ENDPAGEFN EOFFN EOFFN0 EOFFNZ EOFFN2 EOFFN5 EOFFNY EOFFN7
C01808 00500	$LISTEN $LSTN3 $LSTNS $LSTN4 $LSTN6 $LSTN5 LISTEN
C01811 00501	LINEL PAGEL CHARPOS LINENUM PAGENUM FLFWNA FLNSFL FLFROB FLFRFL FLFRF1 FLFRB1 FLFB1A FLFRB3 FLFRB5 FLFRB6 FLFRB8 FLFRB7
C01815 00502	$IN $INNOS $INTST $IN2 $IN1 $IN3 INB6 $IN4 $IN5M $IN7 INB4 $IN8 INSIOT IB4
C01823 00503	$OUT $OUTNS $OUT3 $OUT2 $OUT1
C01826 00504	FILEPOS FPOS0E FPOS0B FPOS0C FPOS0D FPOS0 FPOS0A FPOS1 FP1SF1 FPOS1A FPOS1C FPOS2
C01829 00505	FPOS5 FP5SF1 FPOS5A FPOS6 FPOSZ FPOS6C FPOS6B FPOS6A FPOS7 $LENWT $LENGTHF $LENFL
C01837 00506	CNPCHK VAROPT
C01840 00507	CNPCOD CNPCUR CNPCD1 CNPCD2 CNPC9
C01844 00508	CNPOK RCPOS RCPS1 RSTCUR RSTCU3
C01848 00509	CNP.X CNP.B CNP.M CNP.C CNP.T CNP.IL CNP.DL CNP.A CNP.D CNP.F CNP.H CNP.H1 CNP.I CNP.Z CNP.U CNP.V CNPBBL CNPBL CNPL CNPU CNPF CLRSRN
C01852 00510	OPNTTY OPNT0 OPNT1 OPNT1A OPNT2 COPNT2
C01856 00511	CLRIN CLRI3 CLRIN9
C01858 00512	CLROUT CLROSF CLRISF CLRO3 CLRO4 CLRO4 RCPOS1
C01861 00513	TTYMOR TTYMO3 TTYMO1 TTYMO2 TTYMOZ
C01863 00514	STCREA STCREN STMASK STCRE4 STCRE5 STCRE6 STCRE3 STCRE2 SCREBS STCRE1 STKNOT STKNOL STCAL1 STCALL ISTCAL ISTCA0 ISTCSH ISTCA1 ISTCA2 STPRED STSTOR STGET STDISW STDIOB STDIS1 STDIS2 STSYSL STRSLN STGETD STGETU STGPNA STGFUN STGWOM STGWO1 STGWO2 STSTOD STSTOU STSTU1 STSPNA STSFUN STSWO1 STSWOM
C01877 00515	
C01878 00516	PIHOLD PINBL STDMSK DBGMSK STDMS2 DBGMS2 INTVEC TTYDF1 TTYDF2 LINTVEC
C01882 00517	DISMSK DISMSK STDMSK STDMSK STDMSK DBGMSK CHNTAB LEVTAB ENBINT ENBIN2 ENBIN1 REAINT DALINT DISINT DSMINT INTSUP $PDLOV INTNXP INTIRD INTMPV INTIWR INTILO INTMER INTASS ASSIN1 ASSRET
C01895 00518	ENBINT REAINT REAIN1 DISINT DALINT INTRPT MAILINT DSMINT INTERR PARINT NXMINT ILMINT SAIMER EYEINT SAIIMS SAIDSP
C01909 00519	ENBINT REAINT REAIN2 REAIN1 DISINT DALINT APRTRP $PDLOV DSMINT UCHINT REETRP REETR1
C01917 00520	INTXIT INTXT2 INTXT9 INTLOS INTLS1 INTLS9 XUINT XUINT9
C01922 00521	MEMERR MPVERR PURERR ILOPER ILOPR1 PARERR MEMER5 MEMER7 MEMER8 UIMPAR UIMILO UIMWRO UIMMPV $XLOST $XLOSE MEMER8 UIMPAR UIMILO UIMWRO UIMMPV IOCERR IOCERA IOCER8 IOCER9
C01930 00522	CHNINT CHNI1H CHNIZ TTYI1 CHNI2
C01936 00523	CHNI4 CHNI4A CHNI5 CHNI8 CHNI4C CHNI4H
C01938 00524	JOBINT TTYICH TTYIC1
C01941 00525	CN.W CN.W0 CN.Z CN.Z0 ALTP CN.Z ALTP CN.Z CKI2I CTRLG CN.X CN.G CN.G1
C01945 00526	REALCLOCK RUNCLOCK RCLOK1 FNYINT FNYIN0 RCLOK2
C01947 00527	CLIINT TTRINT SYSINT MARINT
C01948 00528	YESIN1 UISTK1 UISTK2 TMDAMI TMDAM2 QMARK
C01950 00529	PURPGI PPGI5A PPGI3 PPGI5 PPGI6
C01952 00530	UIMPAR UIMILO UIMWRO UIMMPV UIFCLI UIFMAR UIFTTR UIFSYS NUINT1 NUINT2
C01956 00531	UINT UINTEX UINTX1 UINT2 UINT3 HHCTB UINTPU
C01959 00532	YESINT UINT0 UIXPUSH UISWS UISAVT UIFRM UISAVA
C01964 00533	UINT30 UINT31 UINT32 UINT33 UINT40 UINT0X UINT0N UINT0Z UINT88 EUINT0 UINT45 UINT46 UINT49 UINT90 UINT91
C01969 00534	CKI0 CKI2 CKI2A CKI2F CKI2F1 CKI3 CKI3B RQITR CKI4A CKI1 CKI1A
C01972 00535	UUOH0 UUOH2 UUOH2A UUOACL UUOAJC UUOH0B UUOH0A
C01975 00536	UUOH1 UUOH0C UUOH1A UUOH3B
C01977 00537	UUOTRT UUAT UUST UUFST UULT UUET UUFET UUNAF UUALT UUMCT UUALT1
C01980 00538	UUOBNC UUOBAK UUBKG1 UUOBK7 UUOBK0 UUOBK1 UUOBK8 UUOBK5 UUOBK6
C01982 00539	UUOSBR UUOSB2 UUOSB3 UUOSB5 UUOSB6 UUOSB7 UUOSB4 UUOXT0 UUOXIT UUOXT1 UUOXCT UUOACS
C01985 00540	UUOARR UUOS0 UUOS03 UUOAR2 UUONVL FIX7 UUOS1E UUOS2E UUOE3
C01988 00541	UUOS0E UUOS0F UUOE2 UUOSE1 UUOS1
C01990 00542	UUOX4B UUOLSB UUOLB3 UUOLB4 UUOFUL
C01993 00543	UUOS9 UUOS7 UUOS7A UUOS7H UUOS7K
C01995 00544	UUOS2A UUOS2 UUOS2Q CILIST UUOS1A
C01997 00545	UUOS4 UUF2N UUOS6 UUOS6Q UUOS11
C01999 00546	UUOS3 UUOS4A UUOEX2 UUOS UUOEXP UUOEX4 UUOS10 UUS10A
C02001 00547	UUL2N UUOS5 UUOS5A UUOS5B UUOS5C
C02004 00548	ARGCHK ARGLCK ARGCK1 ARGCK2 ARGCK0 ARGCK4 ARGCK3 ARGCK5 ARGPDL ARGP0 ARGP1 PDLARG PAERR PDLA2
C02006 00549	STRTOUT ERP0E ERP0F ERP0A ERBPLOC ER7PLOC ERP1 ERP5 ERP5A ERP7A ERP7 ERP0D ERP0C ERP3 ERP4 ERP6 ERP6A ENDFUN
C02010 00550	LISP LISP17 LIHAC LISP43
C02015 00551	PPNUSNSET UDIRSET UDRS5 UDRS4 UDRS1 UDRS1A UDRS1B UDRS2 UDIRS6 UDIRS7 UDIRS8 UDRS8A UDIRSX TNXSET TNXST0 TNXST2 TNXST4 TNXST1 D10SET
C02025 00552	JCLSET JCST4 JCST2 JCST5 JCST1 JCST3
C02028 00553	SFXTBL SFXTBI PROTB
C02030 00554	$IWAIT INTSFX SPWIN SPWIN1
C02033 00555	IWLOOK INTXCT
C02035 00556	INTSYP INTSYQ INTSYX INTROT INTPPC INTC2X INTC2Y INTACT INTTYX INTACX INTZAX INTBAK INTBK1 INTOK IWWIN IWSTAK
C02038 00557	PATCH EPATCH NPURPG INUM PFXEST SYMEST LSYALC GSNSYSG GSNSY2 GSNPFXSG KNOB KNOB
C02041 00558	C.. C. PNL F.
C02044 00559	PNL S. B. ZZ A C.
C02047 00560	BLSTIM DEDSAR DBM BSYSAR OBARRAY READTABLE PRDTBL TTYIFA TTYOFA INIIFA ESYSAR
C02051 00561	C. BXVCSG BXVCSG EVCSG SY2ALC TRUTH QUNBOUND SYALC S. ESYMGS
C02053 00562	$$$TRUTH $$$UNBOUND B. INR70 IPPN1 IPPN2 F. EPFXGS BPURFS PWIOINT $$UNBOUND $$NIL VNIL $$TRUTH VT VTRUTH SUNBOUND
C02056 00563	SSSBRL ASBRL SYSBRL SBRL QGRTL IGSBV QLSTF.X PRMCLS BSYSAP QFL.ER ER$AL QFL.HE HE$AL QFL.AL AL$AL QFL.DY DY$AL QFL.LE LE$AL QFL.HM HM$AL QFL.LT LT$AL ESYSAP
C02059 00564	Q%ALD QA%DDD IRATBL IRACOM BNM23A BNM23B BN.1A BNV2A QTLIST QLSPOUT QLSPOUT QUWL QURL LGOR
C02061 00565	QNILSETQ QTSETQ QXSETQ ARQLS $QMLST QSJCL SPCNAMES PURSPCNAMES PDLNAMES
C02063 00566	RDQTEB
C02065 00567	QBIGNUM ITSCSR IPPN1 IPPN2
C02071 00568	
C02073 00569	
C02077 00570	
C02079 00571	
C02082 00572	
C02083 00573	
C02085 00574	
C02090 00575	
C02092 00576	
C02094 00577	
C02097 00578	DOLLRP
C02100 00579	PFSLAST ESYSVC LISAR TYIMAN UNTYIMAN UNREADMAN READPMAN FASLP TIRPATE ARGLOC ARGNUM
C02102 00580	BFVCS INFVCS SYMSYL NXXASG NXXZSG BXXASG NXXASG BXXZSG NXXZSG NSY2SG ZZ ZZZ XHINUM XLONUM IN0
C02105 00581	BXXPSG NXXPSG NPURFS FIRSTW QXSET1 NUNMRK PLLISP FEATLS OPSYFT SITEFT FILEFT
C02108 00582	BPROTECT TLF BLF VCTRS QF1SB PA3 GCPSAR RDLARG SUDIR FEATURES LDFNAM LDEVPRO NILPROPS DEOFFN DENDPAGEFN UUSRHNK USENDI UCALLI LPROTECT
C02110 00583	Q. V. IGCMKL OBTFS LFSALC FSALC VBP1 VBPE1 IGCFX1 IGCFX2 LFWSALC FWSALC NIFWAL
C02112 00584	BBIGPRO BN235 BNM235 BNM236 BNV2 BN.1 LBIGPRO BBNSG NBNSG BXXBSG NXXBSG BLSTIM NBITB ZZ BTBLKS BFBTBS NBPSSG NFXPSG NFLPSG NPSG NSPSG NXFXPSG NXFLPSG NXPSG NXSPSG NNXMSG NNXMSG ZZX ZZX SPDLORG PDLORG FLPORG FXPORG ZZX ZZX SPDLORG PDLORG FLPORG FXPORG
C02117 00585	OBTL INITIALIZE
C02120 00586	INIT2A INIT2B INIT2F INIT2P INIT2E INIT2X
C02123 00587	INIBS INIBS1 INIBS2 INIT5
C02126 00588	BZERSG BSYSSG IN10ST IN10S5 IN10S8
C02129 00589	ININTR INIRND BINIT9 BINIT9
C02131 00590	INIT1Z INIT1W INIT1E INIT1A INIT1B INIT1M INIT1J INIT1K INIT1F INIT1G INIT1H INIT1D INIT1C INIT1V INIT1X INIT2A INIT2B INIT7A INIT7B INIT99 INITO1 INITO2 INITO3 INIT1Q INIT1S
C02139 00591	NOTINIT INIBSP INIBD INIBD1 KLINIT KLINI1 KLINI2
C02142 00592	LOPDL LOFXPDL LOSPDL LOFLPDL ALBPS
C02143 00593	XLABEL
C02144 00594	FAKJCL ALLF AINFIL ATYF LICACR ALERR ALLTYO ATYOI ALLECO SAILP4 SAIP1 SAIP2 SAIP3 ALLTYI ATI2 ATI1 ALLTYC ALOIOT
C02148 00595	ALLRUB ALLNUM ALNM2 ALNM27 ALNM3 ALNMOK ALSYER ALNMER ALLNER
C02150 00596	ALNM1 ALNM1A DECDIG DDIG1
C02152 00597	ALOFIL ALOINI ALOFL2 ALOJCL ALOIN1 ALOFL4 ALOFL1 ALOFL5 ALOFL6 ALFDEF
C02155 00598	ALLFIL ALLFL1 ALLFL2 ALCLUZ ALCLZ1 ALLTTS ALHELP
C02158 00599	ALFLER ALCERR ALFL6 ALFL6A ALF6A0
C02160 00600	%ALLOC ALFDE1 ALJ1 ALJ1A ALJ1A1 ALJ1A2 ALJ1B ALJ1B1 ALJ1B2 ALJ2 ALJ2Q ALJ2A ALJ2A1 ALJ3 E.ALJO ALJ1 ALJ1A ALJ1A1 ALJ1A2 ALPPN1 ALJ1A3 ALJ1B ALJ1B2 ALJ2 ALJ2Q HAFPPN HAFPP1 ALJ3 ALLCB1 ALLOCB
C02172 00601	ALLOCA ALLOC1
C02174 00602	ALCORX ALCORE ALCORX ALCORE ALLOCC
C02176 00603	ALLCZX
C02178 00604	ALLCPD
C02180 00605	ALLCPD ALCPD1 SYMMV6 ALQX1 ALSGHK ALQX2
C02185 00606	ALLDONE SYMMOV SYMMV1 LPROGS
C02186 00607	INIIF1 INIIF2 FI.EOF FI.BBC FI.BBF F.MODE F.CHAN F.FLEN F.FPOS F.DEV F.RDEV F.DEV F.DIR F.FNM F.EXT F.VRS AT.CHS AT.LNN AT.PGN LONBFA FB.BYT FB.BFL FB.BVC FB.IBP FB.BP FB.CNT FB.HED FB.NBF FB.BWS FB.BUF LINIFA EINIFA ENDLISP ENDHI
C02192 ENDMK
C⊗;
;.MLLIT ITS TOPS10 TOPS20 SAIL TENEX CMU ML BIGNUM OBTSIZ PTCSIZ NEWRD JOBQIO HNKLOG SFA NIOBFS USELESS DBFLAG CXFLAG NARITH
;;;   -*-MIDAS-*-
;;;   **************************************************************
;;;   ***** MACLISP ****** LISP INTERPRETER AND SYSTEM *************
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************

.SYMTAB 16001.	;ENSURE ROOM FOR MANY SYMBOLS


TITLE ***** MACLISP ****** LISP INTERPRETER AND SYSTEM *************

.NSTGWD			;NO STORAGE WORDS PLEASE UNTIL FIRSTLOC
.XCREF A,B,C,AR1,AR2A,T,TT,D,R,F,P,FXP,%
.MLLIT==1


SUBTTL	ASSEMBLY PARAMETERS

IF1,[		;***** CONDITIONAL ASSEMBLY FLAGS AND PARAMETERS *****

;" FOR ASSLIS - DO NOT PUT ANY OTHER DOUBLE QUOTES ON THIS PAGE

ITS==0		;1 FOR RUNNING UNDER THE ITS MONITOR
TOPS10==0	;1 FOR RUNNING UNDER DEC TOPS-10 MONITOR
TOPS20==0	;1 FOR RUNNING UNDER DEC TOPS-20 MONITOR
SAIL==0		;1 FOR RUNNING UNDER SAIL MONITOR
TENEX==0	;1 FOR RUNNING UNDER THE TENEX MONITOR
CMU==0		;1 FOR RUNNING UNDER THE CMU MONITOR
;LATER WE WILL DEFINE  D10==TOPS10\SAIL\CMU  AND  D20==TENEX\TOPS20

ML==0		;1 SAYS THIS LISP IS FOR ML (OR MC) INSTEAD OF AI (ONLY IF ITS==1)
BIGNUM==1	;MULTIPLE PRECISION ROUTINES FLAG
OBTSIZ==777	;LENGTH OF OBLIST
PTCSIZ==40	;MINIMUM SIZE FOR PATCH AREA
NEWRD==0	;NEW READER FORMAT ETC
JOBQIO==1	;SUPPORT FOR INFERIOR PROCEDURES
HNKLOG==9	;LOG2 OF SIZE (IN WORDS) OF LARGEST HUNK (0 => NO HUNKS)
SFA==1		;1 FOR SFA I/O
NIOBFS==1	;NUMBER OF I/O BUFFERS FOR D10 SYSTEMS
USELESS==1	;NOT PARTICULARLY IMPORTANT FEATURES, LIKE:
		;  1) ROMAN NUMERAL READER AND PRINTER
		;  2) PRINLEVEL AND PRINLENGTH
		;  3) DOUBLE-PRECISION INPUT OF SINGLE-PRECISION FLONUMS
		;  4) CURSORPOS
		;  5) GCD
		;  6) DUMPARRAYS, LOADARRAYS [AUTOLOADED IN NEWIO]
		;  7) RECLAIM, AND RETSP FEATURE WHICH RETURNS BPS CORE TO TS SYSTEM
		;  8) PURIFY, AND PURE-INITIAL-READ-TABLE
		;  9) CLI INTERRUPT SUPPORT
		; 10) MAR-BREAK SUPPORT
		; 11) AUTOLOAD PROPERTIES FOR ALLFILES ETC.
		; 13) CLEVER TERPRI-BEFORE-THE-PARENS HACK
		; 14) HUGE TABLE FOR RANDOM NUMBER GENERATOR
		; 15) Exchange A and CONSed hunk for REES and RWK

DBFLAG==0	;1 FOR DOUBLE-PRECISION FLOATING-POINT NUMBERS
CXFLAG==0	;1 FOR COMPLEX ARITHMETIC
;; IF EITHER THE DBFLAG OR CXFLAG ARE SET, THE THE FLAGS KA, KI, AND KL MUST BE
;;   SET.  OR ELSE, MAYBE, GO THRU AND REMOVE THEIR USAGE.  JONL - 10/16/80

NARITH==0	;1 FOR NEW ARITHMETIC PACKAGE

;" FOR ASSLIS - DOUBLE QUOTES ARE OKAY NOW
;

;;;	IF1

SUBTTL	STORAGE LAYOUTS

;;; STORAGE LAYOUT FOR ITS
;;;
;;; BZERSG	0 - -   LOW PAGES
;;;			ACCUMULATORS, TEMPORARY VARIABLES,
;;;			INITIAL READTABLE AND OBARRAY
;;; BSTSG	ST: - - SEGMENT TABLES
;;; BSYSSG	FIRSTL: INITIAL SYSTEM CODE (PURE)
;;; BSARSG		INITIAL SAR SPACE
;;; BVCSG		INITIAL VALUE CELL SPACE
;;; BXVCSG		[EXTRA VALUE-CELL SEGMENTS - - POSSIBLY NONE]
;;; BIS2SG		SYMBOL-BLOCKS
;;; BSYMSG		SYMBOL-HEADERS
;;; BSY2SG		**SYMBOL-BLOCKS
;;; BPFXSG		**FIXNUMS
;;; BPFSSG		**LIST-STRUCTURE
;;; BPFLSG		[**FLONUMS - - POSSIBLY NONE]
;;; BIFSSG		LIST-STRUCTURE
;;; BIFXSG		FIXNUMS
;;; BIFLSG		FLONUMS
;;; BBNSG		BIGNUMS
;;; BBITSG		BIT BLOCKS FOR GC
;;; BBPSSG		START OF BINARY PROGRAM SPACE
;;;	C(BPSL)		(ALLOC IS IN THIS AREA)
;;; 	V(BPORG)	START OF BPS UNUSED FOR PROGRAMS
;;; 	V(BPEND)	ARRAYS START NO LOWER THAN THIS
;;; 	C(BPSH)		LAST WORD OF BPS
;;;	... BINARY PROGRAM SPACE GROWS UPWARD ...
;;; C(HINXM)	LAST WORD OF GROSS HOLE IN MEMORY
;;;	... LIST STRUCTURE GROWS DOWNWARD ...
;;; PUSHDOWN LISTS WITH HOLES BETWEEN:
;;;	FXP, FLP, P, SP
;;;
;;; C(NPDLL)	LOW WORD OF NUMBER PDL (LOW OF FXP)
;;; C(NPDLH)	HIGH WORD OF NUMBER PDL + 1 (HIGH+1 OF FLP)
;;;


;;; STORAGE LAYOUT FOR DEC10
;;;
;;; ***** LOW SEGMENT *****
;;; BZERSG	0 - -   LOW PAGES
;;;			ACCUMULATORS, TEMPORARY VARIABLES,
;;;			INITIAL READTABLE AND OBARRAY
;;; BSTSG	ST: - - SEGMENT TABLES
;;; BSARSG		INITIAL SAR SPACE
;;; BVCSG		INITIAL VALUE CELL SPACE
;;; BXVCSG		[EXTRA VALUE-CELL SEGMENTS - - POSSIBLY NONE]
;;; BIS2SG		SYMBOL-BLOCKS
;;; BSYMSG		SYMBOL-HEADERS
;;; BIFSSG		LIST-STRUCTURE
;;; BIFXSG		FIXNUMS
;;; BIFLSG		FLONUMS
;;; BBNSG		BIGNUMS
;;; BBITSG		BIT BLOCKS FOR GC
;;; PUSHDOWN LISTS:
;;;	FXP, FLP, P, SP
;;; C(NPDLL)	LOW WORD OF NUMBER PDL (LOW OF FXP)
;;; C(NPDLH)	HIGH WORD OF NUMBER PDL + 1 (HIGH+1 OF FLP)
;;; BBPSSG	START OF BINARY PROGRAM SPACE
;;;		(ALLOC IS IN THIS AREA)
;;; V(BPORG)	START OF BPS UNUSED FOR PROGRAMS
;;; V(BPEND)	ARRAYS START NO LOWER THAN THIS
;;; C(BPSH)	LAST WORD OF BPS (FIXED, SET BY ALLOC)
;;; C(HIXM)	HIGH WORD OF EXISTING MEMORY
;;; C(MAXNXM)	HIGHEST WORD OF NXM THAT MAY BE USED
;;;
;;; ***** HIGH SEGMENT *****
;;; BSYSSG	INITIAL SYSTEM CODE (PURE)
;;; BSY2SG		**SYMBOL-BLOCKS
;;; BPFXSG		**FIXNUMS
;;; BPFSSG		**LIST-STRUCTURE
;;; BPFLSG		[**FLONUMS - - POSSIBLY NONE]
;;; BPFSSG	INITIAL PURE LIST STRUCTURE
;LVRNO LVRNO ZZZ ZZZ DEFAULT

;;;	IF1

SUBTTL	VARIOUS PARAMETER CALCULATIONS

IFNDEF LVRNO,LVRNO==.FNAM2

IFE LVRNO-SIXBIT \MID\,[
PRINTX /What is LISP's version number (type four octal digits) ?/
.TTYMAC VRS
LVRNO=SIXBIT \VRS\
TERMIN
]
.ELSE,[
LVRNO==<LVRNO←-6>+<SIXBIT \1\>			;HACK FOR CROSSING 1000'S
IFN <<LVRNO←-30>&77>-'9, LVRNO==LVRNO+<1←36>	;HACK FOR CROSSING 2000'S
;;; REMEMBER! SOMEDAY WE MAY HAVE TO CROSS TO 3000'S  - JONL, 9 JUL 1980
]		;END OF IFGE LVRNO

PRINTX \MACLISP VERSION \	;PRINT OUT VERSION OF THIS LISP
.TYO6 .OFNM2
PRINTX \ [\		;WATCH OUT FOR THE BRACKETS!
.TYO6 LVRNO
PRINTX \] ASSEMBLED ON \
.TYO6 .OSMIDAS
PRINTX \ AT \
IFE <.SITE 0>, PRINTX \UNKNOWN SITE\
.ELSE REPEAT 20, IFE <.SITE .RPCNT>,[.ISTOP] .TYO6 <.SITE .RPCNT>
PRINTX \
\				;TERPRI TO FINISH VERSION MESSAGE

;;; HACK FLAGS AND PARAMETERS

DEFINE ZZZZZZ X,SYM,VAL
IFSE [X]-, PRINTX \* \
.ELSE	PRINTX \  \
PRINTX \SYM=VAL
\
TERMIN

PRINTX \INITIAL SWITCH VALUES (*=EXPERIMENTAL):
\

;X=- => EXPERIMENTAL SWITCH
IRPS S,X,[ITS,TOPS10,TOPS20,SAIL,TENEX-CMU-
ML,BIGNUM,OBTSIZ,JOBQIO,HNKLOG,USELESS,
DBFLAG-CXFLAG-NARITH-SFA-]
ZZZZZZ [X]S,\S
TERMIN
EXPUNGE ZZZZZZ

PRINTC \REDEFINITIONS:
\
.INSRT TTY:
PRINTC \
\

IFNDEF HSGORG,HSGORG==400000

;;; ALL FLAGS WHICH ARE NON-ZERO MUST BE ONES: MUCH CONDITIONAL
;;; ASSEMBLY DOES ARITHMETIC WITH THEM.

IRP FOO,,[ITS,TOPS10,TOPS20,SAIL,TENEX,CMU
ML,BIGNUM,NEWRD,JOBQIO,USELESS
DBFLAG,CXFLAG,NARITH,SFA]
IFN FOO, FOO==:1
.ELSE	 FOO==:0
TERMIN			;USE OF ==: PREVENTS CHANGING THEM RANDOMLY

;;; CHECK MUTUALLY EXCLUSIVE FLAGS OF WHICH ONE MUST BE SET

DEFINE MUTXOR FLAGS,DEFAULT
ZZZ==0
IRP X,Y,[FLAGS]
ZZZ==ZZZ+X
IRP Z,,[Y]
IFN X*Z, .FATAL BOTH X AND Z SPECIFIED AMONG {FLAGS}
TERMIN
TERMIN
IFE ZZZ,[
PRINTX \NONE OF {FLAGS} SPECIFIED - ASSUMING DEFAULT==:1
\
EXPUNGE DEFAULT
DEFAULT==:1
]		;END OF IFE ZZZ

EXPUNGE ZZZ
TERMIN

IRP OS,,[ITS,DEC,SAIL,TENEX,CMU]FLAG,,[ITS,TOPS10,SAIL,TENEX,CMU]
IFE .OSMIDAS-<SIXBIT \OS\>, MUTXOR [ITS,TOPS10,TOPS20,SAIL,TENEX,CMU]OS
TERMIN

;D10 D20 ZZZ SEGLOG OBTSIZ DXFLAG

;;;	IF1


D10==:TOPS10\SAIL\CMU		;SWITCH FOR DEC-10-LIKE SYSTEMS
D20==:TOPS20\TENEX		;SWITCH FOR DEC-20-LIKE SYSTEMS
IFNDEF PAGING, PAGING==:D20\ITS		;SWITCH FOR PAGING SYSTEMS
IFNDEF HISEGMENT, HISEGMENT==:D10*<1-PAGING>	;ASSUME HISEGMENT FOR DEC-10
;;; INSIST FORCIBLY ALTERS A PARAMETER IF NECESSARY.

DEFINE INSIST COND,SET
COND,[
IRPS X,,[SET]
ZZZ==X
EXPUNGE X
SET
IFN X-ZZZ,[
PRINTX \	COND =>SET
\
]
EXPUNGE ZZZ
.ISTOP
TERMIN
]		;END OF COND
TERMIN

;;; CANONICALIZE BITS


INSIST IFE ITS, JOBQIO==:0
INSIST IFG SAIL*<6-NIOBFS>, NIOBFS==:6


SEGLOG==:11	;LOG2 OF # OF WORDS PER SEGMENT (WARNING! BUILT INTO NCOMPLR!)
INSIST IFG HNKLOG-SEGLOG, HNKLOG==:SEGLOG-1

OBTSIZ==:OBTSIZ\1		;MUST BE ODD
DXFLAG==:DBFLAG*CXFLAG
;GETTAB

;;;	IF1


IFE .OSMIDAS-<SIXBIT \ITS\>,[
DEFINE $INSRT $%$%$%
	.INSRT $%$%$% >
	PRINTX \    ==> INSERTED:  \
	.TYO6 .IFNM1
	PRINTX \ \
	.TYO6 .IFNM2
PRINTX \
\
TERMIN
]		;END OF IFE .OSMIDAS-<SIXBIT \ITS\>,
.ELSE,[
DEFINE $INSRT $%$%$%
	.INSRT $%$%$%!.MID
	PRINTX \INSERTED:  \
	.TYO6 .IFNM1
	PRINTX \.\
	.TYO6 .IFNM2
PRINTX \
\
TERMIN
]		;END OF .ELSE


;;; MAKE SURE THE SYMBOLS WE WILL NEED ARE DEFINED.
;;; THEY MAY NOT BE IF ASSEMBLING FOR A DIFFERENT OPERATING SYSTEM

DEFINE FLUSHER DEF/
IRPS SYM,,[DEF]
EXPUNGE SYM
.ISTOP
TERMIN
TERMIN

DEFINE SYMFLS TARGETSYS,OS,.DEFS.,DEFFER,CHKSYM,.BITS.,CHKBIT
IFE <.OSMIDAS-SIXBIT\OS\>,[
IFE TARGETSYS,[
PRINTX \FLUSHING OS SYMBOL DEFINITIONS
\
	$INSRT .DEFS.
	DEFFER FLUSHER
IFSN .BITS.,,[
PRINTX \FLUSHING OS BIT DEFINITIONS
\
	EQUALS DEFSYM,FLUSHER
	$INSRT .BITS.
	EXPUNGE DEFSYM
]		;END OF IFSN .BITS.
]		;END OF IFE TARGETSYS
]		;END OF IFE <.OSMIDAS-SIXBIT\OS\>
TERMIN

DEFINE SYMDEF TARGETSYS,OS,.DEFS.,DEFFER,CHKSYM,.BITS.,CHKBIT
IFN TARGETSYS,[
IFN <.OSMIDAS-SIXBIT\OS\>,[
PRINTX \MAKING OS SYMBOL DEFINITIONS
\
	$INSRT .DEFS.
	DEFFER
IFSN .BITS.,,[
PRINTX \MAKING OS BIT DEFINITIONS
\
	$INSRT .BITS.
]		;END OF IFSN .BITS.,,
]		;END OF IFN <.OSMIDAS-SIXBIT\OS\>
.ELSE,[
IFNDEF CHKSYM,[
PRINTX \FUNNY - RUNNING ON OS, BUT CHKSYM UNDEFINED; MAKING OS SYMBOL DEFINITIONS
\
	$INSRT .DEFS.
	DEFFER
]		;END OF IFNDEF CHKSYM
IFSN .BITS.,,[
IFNDEF CHKBIT,[
PRINTX \FUNNY - RUNNING ON OS, BUT CHKBIT UNDEFINED; MAKING OS BIT DEFINITIONS
\
	$INSRT .BITS.
]		;END OF IFNDEF CHKBIT
]		;END OF IFSN .BITS.,,
]		;END OF .ELSE
]		;END OF IFN TARGETSYS
TERMIN

IFN D20, EXPUNGE RESET

IRP HACK,,[SYMFLS,SYMDEF]
	HACK ITS,ITS,ITSDFS,.ITSDF,.IOT,ITSBTS,%PIC.Z
	HACK TOPS10,DEC,DECDFS,.DECDF,LOOKUP,DECBTS,.GTSTS
	HACK TOPS20,TENEX,TNXDFS,.TNXDF,JSYS,TWXBTS,GJ%FOU
	HACK TENEX,TENEX,TNXDFS,.TNXDF,JSYS,TWXBTS,GJ%FOU
	HACK SAIL,SAIL,SAIDFS,.DECDF,SPCWAR,DECBTS,.GTSTS
TERMIN

;;; CONFLICTS WITH UNLOCKI MACRO AND SEGSIZ VARIABLE
IFN D10,[
IFE SAIL,[
IFN <.OSMIDAS-SIXBIT\CMU\>,[
    ;THE FOLLOWING ARE THE SPECIAL CMU UUOs:
    DEFINE .CMUCL DEF
    DEF SRUN=:47000777756
    DEF USRDEF=:47000777757
    DEF JENAPX=:47000777760
    DEF IMPUUO=:47000777761
    DEF PRIOR=:47000777762
    DEF LNKRDY=:47000777763
    DEF INT11=:47000777764
    DEF RSTUUO=:47000777765
    DEF UNTIME=:47000777766
    DEF TIME=:47000777767
    DEF STOP=:47000777770
    DEF UNLOCK=:47000777771
    DEF JENAPR=:47000777772
    DEF MSGPOL=:47000777773
    DEF MSGSND=:47000777774
    DEF DECCMU=:47000777775
    DEF CMUDEC=:47000777776
TERMIN 
PRINTX \MAKING CMU-SPECIFIC "CALL" DEFINITIONS
\
	.CMUCL FLUSHER
	.CMUCL
]	;END OF IFN <.OSMIDAS-SIXBIT\CMU\>
]	;END OF IFE SAIL
IFN SAIL, 	EXPUNGE SEGSIZ
		EXPUNGE UNLOCK
]	;END OF IFN D10


COMMENT |	MAKE @ PROGRAM UNDERSTAND POTENTIAL FILE INSERTIONS
	;TABS IN FRONT OF $INSRT'S ARE NECESSARY TO FAKE OUT UNIFY PROGRAM
	$INSRT ITSDFS
	$INSRT DECDFS
	$INSRT TNXDFS
	$INSRT SAIDFS
	$INSRT ITSBTS
	$INSRT DECBTS
	$INSRT TWXBTS
|		;END OF COMMENT

IFN D10,[
DEFINE HALT
JRST 4,.!TERMIN

EXPUNGE .VALUE
EQUALS .VALUE HALT

DEFINE .LOSE <A>
JRST 4,.-1!TERMIN

]		;END OF IFN D10

IFN D20,[

GETTAB==:47←33 41
DEFINE HALT
HALTF!TERMIN

EXPUNGE .VALUE
EQUALS .VALUE HALTF

DEFINE .LOSE <A>
HALTF!TERMIN

]		;END OF IFN D20	


;

;;;	IF1


;;; CALL IS A DEC UUO, BUT WE USE THAT NAME FOR A LISP UUO
EXPUNGE CALL

;;; DON'T HACK THIS $INSRT - UNIFY DEPENDS ON IT
;;@ DEFNS 228		STANDARD AC, UUO, AND MACRO DEFINITIONS
;;;   ***** MACLISP ****** STANDARD AC, UUO, AND MACRO DEFINITIONS *
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************


;;; THIS FILE CONTAINS:
;;;	STANDARD SYMBOLIC ACCUMULATOR DEFINITIONS.
;;;	UUO DEFINITIONS:
;;;		ERROR CALLS AND STRING TYPEOUT.
;;;		COMPILED CODE TO INTERPRETER INTERFACES.
;;;		VARIOUS UUOS USEFUL FROM DDT.
;;;	.GLOBAL DECLARATIONS.
;;;	.FORMAT DECLARATIONS.
;;;	TYPE BIT DEFINITIONS FOR USE WITH SEGMENT TABLE
;;;	MACROS FOR CONDITIONALIZING SINGLE LINES OF CODE.
;;;	GENERAL MACRO DEFINITIONS [THAT ANY LOSER MIGHT WANT].
;;;	SYMBOL BLOCK-STRUCTURE DEFINITIONS
;;;	SYMBOLIC NAMES RELATED TO ARRAYS.
;;;	SYMBOLIC NAMES RELATED TO FILES.

;;; THE DEFINITIONS FOR MACLISP CONTAINED HEREIN
;;; ARE RELATIVELY STABLE. THIS FILE MAY BE .INSRT'D BY MIDAS
;;; FILES ASSEMBLED IN .FASL MODE TO DEFINE THESE THINGS.
;;; THE .GLOBAL DECLARATIONS IN PARTICULAR ARE FOR THE
;;; BENEFIT OF THESE .FASL FILES.
;;; IT IS A GOOD IDEA FOR .FASL FILES TO USE THE FASEND MACRO
;;; IN PLACE OF THE USUAL END STATEMENT.

;;; SYMBOLS FOR COMPILED CODE

IFNDEF ITS, ITS==:1
IFNDEF TOPS10, TOPS10==:0
IFNDEF TOPS20, TOPS20==:0
IFNDEF SAIL, SAIL==:0
IFNDEF TENEX, TENEX==:0
IFNDEF CMU, CMU==:0

IFNDEF D10, D10==:TOPS10\SAIL\CMU
IFNDEF D20, D20==:TOPS20\TENEX

IFNDEF PAGING, PAGING==:ITS\D20

IFNDEF BIGNUM, BIGNUM==:1
IFNDEF JOBQIO, JOBQIO==:1
IFNDEF SFA, SFA==:1

;NIL A B C AR1 AR2A NACS T TT D R F FREEAC P FLP FXP SP


SUBTTL	ACCUMULATOR USAGE

NIL=:0		;ATOM HEADER FOR NIL
A=:1		;ARG 1; VALUE; MARKED FROM BY GC
B=:2		;ARG 2; MARKED FROM BY GC
C=:3		;ARG 3; MARKED FROM BY GC
AR1=:4		;ARG 4; MARKED FROM BY GC
AR2A=:5		;ARG 5; MARKED FROM BY GC
NACS==:5 ;NUMBER OF ACS MARKED FROM BY GC - NO OTHER ACS MARKED
T=:6		;-<NO. OF ARGS> FOR LSUBR CALL; ALSO USED FOR JSP T,
TT=:7		;TEMP; OFTEN USED FOR ARGS TO INTERNAL ROUTINES
D=:10		;SOMEWHAT LESS TEMPORARY THAN TT
R=:11		;DITTO; SOMETIMES USED FOR JSP R,
F=:12		;SOMEWHAT LESS TEMPORARY THAN D AND R
FREEAC=:13	;UNUSED BY LISP, EXCEPT SAVED-USED-RESTORED BY GC
P=:14		;SUBROUTINE AND SYSTEM PDL POINTER ("REGULAR PDL")
FLP=:15		;FLONUM PDL POINTER ("FLOPDL")
FXP=:16		;FIXNUM PDL POINTER ("FIXPDL")
SP=:17		;LAMBDA-BINDINGS PDL POINTER ("SPECIAL PDL")
;;; PDL POINTERS ARE ALWAYS KEPT IN ACS. PDL POINTERS ARE NOT
;;; MARKED FROM, BUT PDL DATA ON REGULAR AND SPECIAL PDLS ARE
;;; PROTECTED FROM GARBAGE COLLECTION.
;;; FLP IS NOT USED BY LISP, EXCEPT AT LDATFL AND ERRIOJ,
;;; BUT PRIMARILY BY COMPILED NUMERICAL CODE.
;;; DO NOT DO RANDOM PUSH/POPS ON SP - USE BIND AND UNBIND ROUTINES.
;LERR ACALL AJCALL LER3 ERINT PP STRT SERINT TP IOJRST STRT7 UUOMAX CALL JCALL CALLF JCALLF NCALL NJCALL NCALLF NJCALF NUUOCLS NERINT NERINT

SUBTTL	DEFINITIONS OF UUO'S

;;; NOTE: LERR < LER3 < ERINT < SERINT  -- SEE ERRFRAME.

LERR=:1←33	;LISP ERROR; AC FIELD=0 => MSG IS SIXBIT, ELSE S-EXP
ACALL=:2←33	;KLUDGY FAST UUO FOR NCALLS TO ARRAYS
AJCALL=:3←33	;AJCALL:ACALL :: JCALL:CALL
LER3=:4←33	;EPRINT, THEN LERR
ERINT=:5←33	;A CORRECTABLE ERROR
PP=:6←33		;SEXP TYPE OUT FROM DDT
STRT=:7←33	;STRING TYPEOUT (sixbit format - stops on unquoted "!")
SERINT=:10←33	;LIKE ERINT, BUT S-EXPRESSION MESSAGE.
TP=:11←33	;PRINTS ST ENTRY FOR A GIVEN LOCATION
IOJRST=:12←33	;JRST TO ADR AFTER PUTTING I/O ERROR MSG IN C
STRT7=:13←33	;STRING TYPEOUT (ascii format - stops on 0 byte)
UUOMAX==:13	;NO OF ERROR-TYPE UUO'S


CALL=:14←33	;BASIC CALL FROM COMPILED CODE TO INTERFACE TO INTERPRETER
JCALL=:CALL+1←33 ;4.1 BIT ON MEANS JRST TO FUNCTION RATHER THAN PUSHJ
CALLF=:CALL+2←33 ;4.2 BIT ON MEANS NEVER CONVERT UUO INTO PUSHJ [OR JRST]
JCALLF=:CALL+3←33
NCALL=:20←33	;4.5 BIT MEANS NUMBER FUNCTION CALL
NJCALL=:NCALL+1←33
NCALLF=:NCALL+2←33
NJCALF=:NCALL+3←33
NUUOCLS==:NJCALF←-33-CALL←-33

;;; SPECIAL INTERPRETATION OF STRT AC FIELD:
;;;	AC FIELD      OUTPUT TO
;;;	  0		OUTFILES IF ↑R SET; TTY IF ↑W SET
;;;	 17		MSGFILES
;;;	  X		FILE(S) IN ACCUMULATOR X

;;; ERINT AND SERINT ARE DECODED BY THEIR ACCUMULATOR FIELDS.
;;; HERE ARE SOME SYMBOLS FOR REFERENCING THEM.

NERINT==0
IRPS X,,[UDF,UBV,WTA,UGT,WNA,GCL,FAC,IOL]
	%!X=:ERINT .IRPCNT,
	%%!X=:SERINT .IRPCNT,
	DEFINE X CRUFT
		%!X [SIXBIT ≤CRUFT≤]
	TERMIN
	NERINT==NERINT+1
TERMIN

;;; SHORT FORM	ATOM		WHAT IS IT?
;;; 
;;; 0)  UDF	UNDEF-FNCTN	UNDEFINED FUNCTION (FUNCTION IN A)
;;; 1)  UBV	UNBND-VRBL	UNBOUND VARIABLE BEING EVAL'ED (ATOM IN A)
;;; 2)  WTA	WRNG-TYPE-ARGS	WRONG TYPE OF ARGUMENTS FOR A FUNCTION (ARG IN A)
;;; 3)  UGT	UNSEEN-GO-TAG	GO TO A TAG THAT'S NOT THERE (TAG IN A)
;;; 4)  WNA	WRNG-NO-ARGS	WRONG NUMBER OF ARGS TO A FUNCTION (FORM IN A)
;;; 5)  GCL	GC-LOSSAGE	GC LOST (A = NAME OF SPACE: LIST...)
;;; 6)  FAC	FAIL-ACT	RANDOM LOSSAGE (ARG IS UP TO CALLER)
;;; 7)  IOL	IO-LOSSAGE	;I/O LOSSAGE
;

SUBTTL	TABLE OF GLOBAL SYMBOLS USED BY COMPILED FUNCTIONS

;;; THE RELATIVE POSITIONS OF THESE SYMBOLS GET BUILT INTO FASL FILES,
;;; SO BE VERY CAREFUL ABOUT DISTURBING THE ORDER OF EXISTING SYMBOLS!
;;; GLBSYM AND SIXSYM MUST ALWAYS HAVE CORRESPONDING ENTRIES.

DEFINE GLBSYM B
IRP A,,[.SET,.MAP,PRINTA,SPECBIND,UNBIND,IOGBND,.LCALL
.UDT,ARGLOC,INUM,ST,FXNV1,PDLNMK,PDLNKJ,FIX1A
FIX1,FLOAT1,IFIX,IFLOAT,FXCONS,FLCONS,ERSETUP,ERUNDO
GOBRK,CARCDR,.STORE,NPUSH,PA3,QUNBOUND,FLTSKP,FXNV2
FXNV3,FXNV4,FIX2,FLOAT2,AREGET]
	B
TERMIN
IRP A,,[%HUNK1,%HUNK2,INTREL,INHIBIT,NOQUIT,CHECKI,0PUSH,0.0PUSH,NILPROPS,VBIND
%CXR,%RPX,%CONS,%NCONS,%XCONS,%C2NS,%HUNK3,%HUNK4,%PDLC,%PDLXC,%PDLNC
PTNTRY,PTEXIT,SFCALI,UNWPUS]
	B
TERMIN
TERMIN

DEFINE SIXSYM B			;SIXBIT NAMES -- MUST MATCH GLBSYM
IRP A,,[*SET,*MAP,PRINTA,SPECBIND,UNBIND,IOGBND,*LCALL
*UDT,ARGLOC,INUM,NUMVAL,FXNV1,PDLNMK,PDLNKJ,FIX1A
FIX1,FLOAT1,IFIX,IFLOAT,FXCONS,FLCONS,ERSETUP,ERUNDO
GOBRK,CARCDR,*STORE,NPUSH,PA3,MAKUNBOUND,FLTSKP,FXNV2
FXNV3,FXNV4,FIX2,FLOAT2,AREGET]
	B
TERMIN
IRP A,,[%HUNK1,%HUNK2,INTREL,INHIBIT,NOQUIT,CHECKI,0PUSH,0*0PUSH,NILPROPS,VBIND
%CXR,%RPX,%CONS,%NCONS,%XCONS,%C2NS,%HUNK3,%HUNK4,%PDLC,%PDLXC,%PDLNC
PTNTRY,PTEXIT,SFCALI,UNWPUS]
	B
TERMIN
TERMIN

;;; ADDITIONAL SYMBOLS FOR LAP AND .FASL HACKERS.
;;; THE ORDER OF THESE IS NOT CRITICAL.

DEFINE XTRSYM B
IRP A,,[CPOPJ,CCPOPJ,POPAJ,POP1J,CINTREL,LWNACK,SIXMAK,SQUEEZE,MKFXAR,FWCONS
SACONS,CFIX1,1DIMF,2DIMF,SEGLOG,R70,ARGLOC,ARGNUM,TTSAR,Q..MIS,MAKVC,SUNBOUND
IN0,TYIMAN,READ6C,READ0A,GCMKL,DEDSAR,BRGEN,RINTERN,LPNF,PNBUF
ALFILE,ALCHAN,XFILEP,FIL6BT,6BTNML,SIXATM,CHNTB,%HNK4R,GRBPSG,HNKLOG,IAPPLY]
	B
TERMIN
IFN PAGING,[
    IRP A,,[FLSTBL]
    TERMIN
]	;END of IFN PAGING
IFN ITS,[
    IRP A,,[GETCOR,IOCINS,J.STADR,J.CRUFT]
	    B
    TERMIN
]	;END OF IFN ITS
IFN D10,[
    IRP A,,[PPNATM,CMUP]
	    B
    TERMIN
]		;END OF IFN D10
IFN D20,[
    IRP A,,[TENEXP]
	    B
    TERMIN
]		;END OF IFN D20
IFN BIGNUM,[
    IRP A,,[BNCONS,NVSKIP]
	    B
    TERMIN
]	;END OF IFN BIGNUM
IFN JOBQIO,[
IRP A,,[JOBTB,LOJOBA]
	B
TERMIN
]		;END OF IFN JOBQIO
IFN SFA,[
IRP A,,[AFOSP,XFOSP]
	B
TERMIN
]		;END IFN SFA
TERMIN

GLBSYM [.GLOBAL A]
XTRSYM [.GLOBAL A]
;%SY %SYHKL %SYKIL %SYLCL %SYGBL BYTSWD

SUBTTL	SYMBOLS FOR NUMBER-OF-ARGS CHECKING, AND .FORMAT


;;; SYMBOLS TO BE USED WITH FWNACK AND LWNACK.
;;; ORDINARILY ONE WRITES
;;;		JSP TT,FWNACK
;;;		FAXXX,,QZZZZZ
;;; IN EACH SYMBOL, THE 3.1 BIT (THESE ARE LEFT-HALF SYMBOLS)
;;; MEANS FSUBR. THE 3.2 BIT MEANS 0 ARGS IS OKAY; 3.3, 1 ARG;
;;; 3.4, 2 ARGS; ... ; 4.8, 15. ARGS; 4.9, > 15. ARGS.

;;; ITEMS IN THIS IRP MUST HAVE FIRST FOUR CHARS UNIQUE!!!
;;; IF YOU ADD STUFF HERE, ALSO FIX UP FASEND.
.SEE FASEND

IRP X,,[02,1N,12,23,2N,0,1,2,4,01,012,01234,0234,3456,1234567
13456,234,345,234567,76543,45]
LA!X==0
IRPC Q,,[X]
IFSN Q,N, LA!X==LA!X+2←Q
.ALSO	ZZ==Q
.ELSE	LA!X==LA!X+<<777774←ZZ>&7777777>
TERMIN
FA!X==LA!X+1
TERMIN


;;; THE FOLLOWING FORMATS ARE HEREBY DECLARED ILLEGAL AS
;;; BEING REDUNDANT AND/OR GROSSLY CONFUSING.
;;; SEE THE MIDAS MANUAL FOR DETAILS.
;;;		,A
;;;		,A C
;;;		,A,
;;;		,A,C
;;;		A B C
;;;		A,
;;;		A,B
;;;		A,B C
;;;		A,B,
;;;		A,B,C

IRP X,,[14,15,16,17,25,30,34,35,36,37]
.FORMAT X,0
TERMIN

;;; FLAG BITS FOR SQUOZE SYMBOLS IN DDT

%SY==1,,537777
%SYHKL==:400000	;HALF KILLED
%SYKIL==:200000	;FULLY KILLED
%SYLCL==:100000	;LOCAL
%SYGBL==:40000	;GLOBAL

;;; A FEW RANDOMLY USEFUL DEFINITIONS TO KEEP THINGS SYMBOLIC
;;; BUT WATCH OUT!  DONT JUST RANDOMLY THINK YOU CAN CHANGE NASCII 
;;;	AND HAVE THINGS WIN, ESPECIALLY THE PACKING OF CHARS FOR 
;;;	PNAMES, AND THE SPECIAL OBARRAY ENTRIES FOR SCOS.

IFN SAIL, 	NASCII==:1000	;NUMBER OF ASCII CHARS
.ELSE 		NASCII==:200	;NUMBER OF ASCII CHARS
BYTSWD==:5	;NUMBER OF ASCII BYTES PER WORD

;LS ST.LS $FS ST.$FS FX ST.FX FL ST.FL BN ST.BGN SY ST.SY SA ST.SA VC ST.VAC $PDLNM ST.$PDLNM $XM ST.$XM $NXM ST.$NXM PUR ST.PUR HNK ST.HNK DB ST.DB CX ST.CX DX ST.DX RN NUM ST.

SUBTTL	DEFINITIONS OF BIBOP TYPE BITS FOR USE IN THE SEGMENT TABLE

.SEE ST

LS==:400000		;4.9  1=LIST STRUCTURE, 0=ATOMIC
ST.LS==:400000
$FS==:200000		;4.8  FREE STORAGE (BIT 4.9 SHOULD BE ON ALSO)
ST.$FS==:200000
FX==:100000		;4.7  FIXNUM STORAGE
ST.FX==:100000
FL==:40000		;4.6  FLONUM STORAGE
ST.FL==:40000
BN==:20000		;4.5  BIGNUM HEADER STORAGE
ST.BGN==:20000
SY==:10000		;4.4  SYMBOL HEADER STORAGE
ST.SY==:10000
SA==:4000		;4.3  SAR STORAGE (BIT 3.8 SHOULD BE ON ALSO)
ST.SA==:4000
VC==:2000		;4.2  VALUE CELL STORAGE (BIT 4.9 SHOULD BE ON ALSO)
ST.VAC==:2000
$PDLNM==:1000		;4.1  NUMBER PDL AREA
			;     (ONE OF THE NUMBER TYPE BITS SHOULD BE ON ALSO)
ST.$PDLNM==:1000
			;3.9  400 RESERVED - AVOID USING (FORMERLY $FLP)
$XM==:200		;3.8  EXISTENT (RANDOM) AREA
ST.$XM==:200
$NXM==:100		;3.7  NONEXISTENT (RANDOM) AREA
ST.$NXM==:100
PUR==:40		;3.6  PURE SPACE
			;     (ONE OF BITS 4.8-4.5, 3.8, OR 3.4-3.2 ALSO ON)
ST.PUR==:40
HNK==:20		;3.5  HUNK OF ONE KIND OR ANOTHER (BIT 4.9 ON ALSO)
ST.HNK==:20
DB==:10			;3.4  DOUBLE-PRECISION FLONUMS
ST.DB==:10
CX==:4			;3.3  COMPLEX NUMBERS
ST.CX==:10
DX==:2			;3.2  DOUBLE-PRECISION COMPLEX NUMBERS
ST.DX==:2
			;3.1  1 UNUSED (USE THIS BEFORE BIT 3.9)

RN==:$XM+$NXM			;RANDOMNESS!
NUM==:FX+FL+BN+DB+CX+DX		;NUMBERNESS!

ST.==:1,,<ST.LS+ST.FX+ST.BGN+ST.SA+ST.$PDLNM+ST.$NXM+ST.HNK+ST.CX+1>
;

SUBTTL	ONE-LINE CONDITIONAL MACROS

;;; THESE HELP MAKE SOME CODE LESS MESSY TO READ.
;;; PREFACING A LINE OF CODE WITH ONE OF THESE SYMBOLS TELLS MIDAS
;;; TO ASSEMBLE THAT LINE ONLY UNDER THE SPECIFIED CONDITION.
;;; EXAMPLE:
;;;
;;;	FOO:	MOVE A,(P)
;;;	10$	PUSHJ P,10HACK		;THIS LINE IS FOR DEC-10 ONLY
;;;		MOVE A,-1(P)
;;;	Q%	PUSHJ P,OLDHAK		;THIS LINE IS FOR OLD I/O ONLY
;;;		POPJ P,

DEFINE 10$
IFN D10,TERMIN

DEFINE 10%
IFE D10,TERMIN

DEFINE IT$
IFN ITS,TERMIN

DEFINE IT%
IFE ITS,TERMIN

DEFINE 20$
IFN D20,TERMIN

DEFINE 20%
IFE D20,TERMIN

DEFINE 10X
IFN TENEX,TERMIN

DEFINE SA$
IFN SAIL, TERMIN

DEFINE SA%
IFE SAIL,TERMIN

DEFINE CMU$
IFN CMU,TERMIN

DEFINE CMU%
IFE CMU,TERMIN

DEFINE T10$
IFN TOPS10,TERMIN

DEFINE T10%
IFE TOPS10,TERMIN

DEFINE 20X
IFN TOPS20,TERMIN

;;; NEWRD IS FOOLISH NEW READER FLAG (HISTORICAL ARTIFACT -- FLUSH EVENTUALLY)

DEFINE NW$
IFN NEWRD,TERMIN

DEFINE NW%
IFE NEWRD,TERMIN

DEFINE BG$
IFN BIGNUM,TERMIN

DEFINE BG%
IFE BIGNUM,TERMIN

DEFINE DB$
IFN DBFLAG,TERMIN

DEFINE DB%
IFE DBFLAG,TERMIN

DEFINE CX$
IFN CXFLAG,TERMIN

DEFINE CX%
IFE CXFLAG,TERMIN

DEFINE DX$
IFN DXFLAG,TERMIN

DEFINE DX%
IFE DXFLAG,TERMIN

DEFINE HN$
IFN HNKLOG,TERMIN

DEFINE HN%
IFE HNKLOG,TERMIN

DEFINE KA
IFN KA10,TERMIN

DEFINE KAKI
IFN KA10+KI10,TERMIN

DEFINE KI
IFN KI10,TERMIN

DEFINE KIKL
IFN KI10+KL10,TERMIN

DEFINE KL
IFN KL10,TERMIN

DEFINE PG$
IFN PAGING,TERMIN

DEFINE PG%
IFE PAGING,TERMIN

DEFINE SFA$
IFN SFA,TERMIN

DEFINE SFA%
IFE SFA,TERMIN

DEFINE HS$
IFN HISEGMENT,TERMIN

DEFINE HS%
IFE HISEGMENT,TERMIN

DEFINE REL$
IFE D20\<D10*PAGING>,TERMIN

DEFINE REL%
IFN D20\<D10*PAGING>,TERMIN
;


SUBTTL	GENERAL MACROS

DEFINE CONC A,B			;HAIRY CONCATENATOR MACRO
A!B!TERMIN

DEFINE LOCKI			;LOCK OUT USER INTERRUPTS UNTIL UNLOCKI'D
	PUSH FXP,INHIBIT
	SETOM INHIBIT
TERMIN

DEFINE UNLOCKI			;RELEASE THE USER-INTERRUPT LOCK, AND CHECK TO SEE 
	PUSHJ P,INTREL		;IF ANY INTERRUPTS WERE STACKED UP WHILE IN LOCKED STATE
TERMIN

DEFINE LOCKTOPOPJ		;LOCK ALL THE ENSUING CODE UNTIL THE
	PUSH P,CINTREL		;EXITING POPJ P,
	LOCKI
TERMIN

DEFINE UNLKPOPJ			;UNLOCK, THEN POPJ P,
	JRST INTREL
TERMIN

				.SEE CHNINT
DEFINE .5LOCKI			;HALF-LOCK INHIBIT
	PUSH FXP,INHIBIT
	HRROS INHIBIT
TERMIN

DEFINE .5LKTOPOPJ
	PUSH P,CINTREL
	.5LOCKI
TERMIN

IRP PL,,[,FX]
DEFINE SAVE!PL AL/	;CALLED LIKE SAVE A B C
IRPS AC,,AL
	PUSH PL!P,AC
TERMIN
TERMIN
DEFINE RSTR!PL AL/	;CALLED LIKE RSTR C B A
IRPS AC,,AL
	POP PL!P,AC
TERMIN
TERMIN
TERMIN


DEFINE MACROLOOP COUNT,NAME,C		;FOR EXPANDING MANY MACROS
IFSN C,, .CRFOFF
REPEAT COUNT,[ CONC NAME,\.RPCNT
]
IFSN C,, .CRFON
TERMIN

;SKIP IF TYPE, USING TT AS TEMP, ACCORDING TO BIBOP TYPE BITS
DEFINE SKOTT /Z
	SKOTT% N,L,Z
TERMIN
;SKIP IF NOT TYPE, USING TT AS TEMP, ACCORDING TO BIBOP TYPE BITS
DEFINE SKOTTN /Z
	SKOTT% E,GE,Z
TERMIN

DEFINE SKOTT% N,L,X,TYP
IFN TT-<X>,	HRRZ TT,X
	LSH TT,-SEGLOG
IFN <TYP>-LS,[
	MOVE TT,ST(TT)
	TLN!N TT,<TYP>
]
.ELSE	SKIP!L TT,ST(TT)
TERMIN

;%%% %%% LABEL


DEFINE %			;THIS IS GOOD FOR LIST STRUCTURE
,,.+1!TERMIN


DEFINE INFORM R,S,T,U,V,W,X,Y,Z,$,%
PRINTX ≤	R!S!T!U!V!W!X!Y!Z!$!%
≤
TERMIN

DEFINE WARN R,S,T,U,V,W,X,Y,Z,$,%
WARN1 [R!S!T!U!V!W!X!Y!Z!$!%]
TERMIN

DEFINE WARN1 CRUFT
IFL 40-.LENGTH ≤CRUFT≤,[ .ERR ######
PRINTX ≤	###### CRUFT
≤
]
.ELSE .ERR ###### CRUFT
TERMIN

;;; USEFUL MACRO FOR .FASL FILES.  CAUSES LOADING TO PRINT MESSAGE.

DEFINE VERPRT NAME,VRS=[???]
IFN .FNAM2-SIXBIT /MID/,[
%%%==.fnam2
.SXEVAL	  ((LAMBDA (X)
	     (COND ((STATUS NOFEATURE NOLDMSG)
		    (TERPRI MSGFILES)
		    (TYO #73  MSGFILES)
		    (PRINC (QUOTE L/o/a/d/i/n/g/ NAME/  ) MSGFILES)
		    (PRINC X MSGFILES)
		    (TYO #40  MSGFILES)))
	      (PUTPROP (QUOTE NAME) X (QUOTE VERSION)))
	   (MAKNAM (DELQ #40
			 (QUOTE (#<<<%%%&<770000,,0>>←-36>+40>
				 #<<<%%%&<7700,,0>>←-30>+40>
				 #<<<%%%&<77,,0>>←-22>+40>
				 #<<<%%%&770000>←-14>+40>
				 #<<<%%%&7700>←-6>+40>
				 #<<%%%&77>+40> )))))
]
.ELSE [
.SXEVAL    (COND ((STATUS NOFEATURE NOLDMSG)
		  (TERPRI MSGFILES)
		  (TYO #73  MSGFILES)
		  (PRINC (QUOTE L/o/a/d/i/n/g/ NAME/ VRS/ ) MSGFILES)))
.SXEVAL	   (DEFPROP NAME VRS VERSION)
]
TERMIN

;; Silent VERPRT, which doesn't print the message, just does the DEFPROP
;; of the version property

DEFINE SVERPRT NAME,VRS=[???]
IFN .FNAM2-SIXBIT /MID/,[
%%%==.fnam2
.SXEVAL    (PUTPROP (QUOTE NAME)
		    (MAKNAM (DELQ #40
				  (QUOTE (#<<<%%%&<770000,,0>>←-36>+40>
					  #<<<%%%&<7700,,0>>←-30>+40>
					  #<<<%%%&<77,,0>>←-22>+40>
					  #<<<%%%&770000>←-14>+40>
					  #<<<%%%&7700>←-6>+40>
					  #<<%%%&77>+40> ))))
		    (QUOTE VERSION))
]
.ELSE [
.SXEVAL	  (DEFPROP NAME VRS VERSION)
]
TERMIN

;MACRO TO HANDLE UNWIND-PROTECT
;	UNWINDPROTECT CODE,CONTINUATION-CODE
;CAUSES CONTINUATION TO BE INVOKED AFTER CODE IS EXECUTED
;THE STATE OF THE PDLS MUST BE THE SAME BEFORE AND AFTER CODE EXECUTES.
;  CODE SHOULD BE THOUGHT OF AS A FUNCTION CALL.
; CODE IS THE CODE TO BE INVOKED AND PROTECTED.
; CONT IS THE "CONTINUATION" TO BE RUN WHEN UNWINDING THE STACK, OR AFTER
;    CODE IS RUN
DEFINE UNWINDPROTECT CODE,CONT,\LABEL
	JSP TT,PTNTRY		   ;SETUP AN UNWIND PROTECT
	JRST LABEL
	CONT
	POPJ P,
LABEL:
	CODE
;ASSUMPTION IS THAT FOLLOWING JSP CLOBBERS THE WORLD
	JSP TT,PTEXIT		   ;RUN CONTINUATION, PRESERVES A
TERMIN

;;; HERE COME THE RANDOM "RPG" MACROS FOR IN-LINING  THE PDL-FIXUP CODE

DEFINE PFIXPDL AC
	HRRZ AC,P
	MOVE P,C2
	SUBI AC,(P)
	HRLS AC
	ADD P,AC
TERMIN

DEFINE FXPFIXPDL AC
	HRRZ AC,FXP
	MOVE FXP,FXC2
	SUBI AC,(FXP)
	HRLS AC
	ADD FXP,AC
TERMIN

DEFINE FLPFIXPDL AC
	HRRZ AC,FLP
	MOVE FLP,FLC2
	SUBI AC,(FLP)
	HRLS AC
	ADD FLP,AC
TERMIN

DEFINE SPFIXPDL AC
	HRRZ AC,SP
	MOVE SP,SC2
	SUBI AC,(SP)
	HRLS AC
	ADD SP,AC
TERMIN


;NBITMACS NBITMACS XX YY


IF1,[

;;; FEATURE SO THAT HAIRY SUMS OF BITS MAY BE WRITTEN NICELY.
;;;	BITMAC FOO,FOO.
;;; CAUSES THE FORM
;;;	FOO<A+B+C>
;;; TO EXPAND INTO THE FORM
;;;	FOO.A+FOO.B+FOO.C

NBITMACS==0

DEFINE BITMAC XX,YY,ZZ=[1,,525252]
DEFINE XX<BITS>
IRPS J,K,[BITS]
YY!!J!K!TERMIN TERMIN
BITMA1 XX,YY,[ZZ]\NBITMACS
NBITMACS==NBITMACS+1
TERMIN

DEFINE BITMA1 XX,YY,ZZ,NN
DEFINE BTMC!NN
EXPUNGE XX,YY
XX==ZZ
YY==ZZ
IFSN [ZZ], IFGE <.TYPE ZZ>, EXPUNGE ZZ
TERMIN
TERMIN

IRP FOO,,[%TB,%TI,%TJ,%TX,%TO,%TS,%TC,%TG,%TT,%PI,%PJ]
IFDEF FOO, SV$!FOO==FOO		.SEE BITMAC
.ELSE SV$!FOO==1,,525252
EXPUNGE FOO
TERMIN

BITMAC AS,AS.			;LH ASARS
BITMAC TTS,TTS.,[1,,725252]	;LH TTSARS
BITMAC FBT,FBT.			;LH F.MODE WORD IN FILE ARRAYS
BITMAC RS.,RS.			;FOR READER SYNTAX BITS
BITMAC RS%,RS%,525252		;READER SYNTAX BITS, LH SHIFTED INTO RH
BITMAC IB,IB.,[525252,,525252]	;WORD 1 INTERRUPT BITS
BITMAC %TB,%TB,SV$%TB		;LH .TTY USER VARIABLE
BITMAC %TI,%TI,SV$%TI		;LH TTY IOCHNM BITS (SOME PER-IOT)
BITMAC %TJ,%TJ,SV$%TJ
BITMAC %TX,%TX,SV$%TX		;RH TTY CHARACTER BITS
BITMAC %TO,%TO,SV$%TO		;LH TTYOPT VARIABLE
BITMAC %TS,%TS,SV$%TS		;LH TTYSTS VARIABLE
BITMAC %TC,%TC,SV$%TC		;LH TTYCOM VARIABLE
BITMAC %TG,%TG,SV$%TG		;6-BIT BYTE TTYST1,TTYST2 GROUPS
BITMAC %TT,%TT,SV$%TT		;LH TTYTYP VARIABLE
BITMAC %PI,%PI,SV$%PI		;FULL WORD .PIRQC VARIABLE
BITMAC %PJ,%PJ,SV$%PJ		;LH .PIRQC VARIABLE
]		;END OF IF1
;



;;; MACRO FOR .FASL LOSERS WHO .INSRT THIS FILE TO USE
;;; IN PLACE OF THE "END" PSEUDO.  THIS GENERATES AN "END"
;;; AFTER PERFORMING SOME CLEANUP.  MANY SYMBOLS ARE EXPUNGED
;;; SO THAT .FASL FILES WILL NOT SPEND INFINITE TIME TRYING TO
;;; PASS THEM TO DDT.

DEFINE FASEND
IF2,[
EXPUNGE  NIL A B C AR1 AR2A NACS T TT D R F FREEAC P FLP FXP SP
EXPUNGE  LERR ACALL AJCALL LER3 ERINT PP STRT SERINT TP IOJRST UUOMAX
EXPUNGE  CALL JCALL CALLF JCALLF NCALL NJCALL NCALLF NJCALF NUUOCLS
EXPUNGE  NERINT NASCII
EXPUNGE  %UDF %UBV %WTA %UGT %WNA %GCL %FAC %IOL
EXPUNGE  %%UDF %%UBV %%WTA %%UGT %%WNA %%GCL %%FAC %%IOL
EXPUNGE  ASAR TTSAR
EXPUNGE  AS.SFA AS.JOB AS.FIL AS.RDT AS.OBA AS.SX AS.FX AS.FL AS.DB AS.CX
EXPUNGE  AS.DX AS.GCP
EXPUNGE  TTS.CL TTS.IM TTS.BN TTS.TY TTS.IO TTS.CN TTS.GC
EXPUNGE  TTSDIM TTS.1D TTS.2D TTS.3D TTS.4D TTS.5D
EXPUNGE  FI.EOF FO.EOF FI.BBC FI.BBF TI.BFN FT.CNS F.GC
EXPUNGE  F.MODE FBT.CM FBT.SA FBT.CP FBT.LN FBT.AP FBT.CC FBT.ND
EXPUNGE  F.CHAN F.JFN F.FLEN F.FPOS F.DEV F.SNM F.PPN F.FN1 F.FN2
EXPUNGE  F.RDEV F.RSNM F.RFN1 F.RFN2
EXPUNGE  F.DIR F.FNM F.EXT F.VRS
EXPUNGE  L.6DEV L.6DIR L.6FNM L.6EXT L.6VRS L.D6BT L.N6BT L.F6BT
EXPUNGE  LOPOFA
EXPUNGE  TI.ST1 TI.ST2 TI.ST3 TI.ST4 ATO.LC
EXPUNGE  AT.CHS AT.LNN AT.PGN FO.LNL FO.PGL FO.RPL LONBFA
EXPUNGE  FB.BFL FB.BVC FB.BYT FB.IBP FB.BP FB.CNT FB.HED FB.NBF
EXPUNGE  FB.BWS FB.ROF FB.BUF
EXPUNGE  J.INTF J.LFNM J.GC J.INTB J.STAD J.UIND LOJOBA J.SYMS J.CRUF
EXPUNGE  SR.CAL SFCALI SR.WOM SR.UDL SR.FML SR.FUN SR.PNA SR.FUS SR.LEN
EXPUNGE  SO.OPN SO.CLO SO.REN SO.DEL SO.TRP SO.PR1 SO.TYI SO.UNT SO.TIP
EXPUNGE  SO.IN SO.EOF SO.TYO SO.OUT SO.FOU SO.RED SO.RDL SO.PRT SO.PRC
EXPUNGE  SO.MOD SO.POS
EXPUNGE  ST.LS ST.$FS ST.FX ST.FL ST.BGN ST.SY ST.SA ST.VAC ST.$PDLNM
EXPUNGE  ST.$XM ST.$NXM ST.PUR ST.HNK ST.DB ST.CX ST.DX ST.

IRP X,,[02,1N,12,23,2N,0,1,2,4,01,012,01234,0234,3456,1234567
13456,234,345,234567,76543,45]
EXPUNGE  LA!X FA!X
TERMIN
MACROLOOP NBITMACS,BTMC,*
]		;END OF IF2
END 
TERMIN

;SYMVC SYMARGS SYMPNAME SY.ONE SY.LAP SY.PUR SY.CCN SY.OTC SY.ZER SY.

SUBTTL SYMBOL BLOCK-STRUCTURE DEFINITIONS


;;; FORMAT OF SYMBOL HEADER FOR BIBOP:
;;; THE MAIN HEADER OF A SYMBOL IS A SINGLE WORD IN SYMBOL SPACE.
;;; THE RIGHT HALF CONTAINS THE PROPERTY LIST, AND THE LEFT HALF
;;; POINTS TO THE REST OF THE HEADER, WHICH IS IN THE IS2 OR SY2 AREA.
;;; SINCE THE REST OF THE HEADER (ALSO CALLED A "SYMBOL BLOCK") MUST
;;; LIE ON AN EVEN WORD BOUNDARY, THE LOW BIT OF THE LEFT HALF OF
;;; THE MAIN HEADER IS NORMALLY ZERO. THIS BIT IS USED BY THE
;;; GARBAGE COLLECTOR FOR MARKING PURPOSES, AND THEN RESET TO ZERO.
;;; THE SYMBOL BLOCK IS 2 WORDS LONG:
;;;		<VARIOUS BITS>,,<POINTER TO VALUE CELL>
;;;		<ARGS PROPERTY>,,<PNAME LIST>
;;; THE "VARIOUS BITS" ARE:
;;;	4.9-3.9	ONES (FOR NO PARTICULARLY GOOD REASON)
;;;	3.9	ZERO (RESERVED FOR SPECIAL VALUE CELL/LAP HACK)
;;;	3.8	1 => SYMBOL BLOCK MAY BE PURE (SEE GCMARK)
;;;	3.7	ONE IFF COMPILED CODE NEEDS THE SYMBOL
;;;	3.6	ONE IFF COMPILED CODE REFERENCES BY OTHER THAN CALL UUO
;;;		(IMPLIES 3.7 WHICH *MUST* ALSO BE ON)
;;;	3.5-3.1	ZERO (SO CAN INDIRECT THROUGH THE WORD TO GET VALUE)
;;; THE ARGS PROPERTY IS IN THE SAME FORMAT FASLOAD USES,
;;; TWO NINE-BIT BYTES DECODED AS FOLLOWS:
;;;		0 => NIL
;;;		777 => 777 (EFFECTIVELY INFINITY)
;;;		N => N-1, N NOT 0 OR 777
;;; THUS 000006 = (NIL . 5), 004005 = (3 . 4), AND 002777 = (1 . 777)
SYMVC==0		;BITS,,VC
SYMARGS==1		;ARGS PROP,,PNAME
SYMPNAME==1

SY.ONE==:777000		;ONES (NO GOOD REASON!!)
SY.LAP==:400
SY.PUR==:200
SY.CCN==:100
SY.OTC==:040
SY.ZER==:037

SY.==:1,,<SY.ONE+SY.PUR+SY.OTC>
;ASAR TTSAR AS.SFA AS.JOB AS.FIL AS.RDT AS.OBA AS.DX AS.CX AS.DB AS.SX AS.FX AS.FL AS.GCP TTS.CL TTS.BM TTS.IM TTS.BN TTS.TY TTS.IO TTS.CN TTS.GC TTSDIM TTS.1D TTS.2D TTS.3D TTS.4D TTS.5D

SUBTTL	FORMAT OF ARRAYS

;;; ARRAYS ARE POINTED TO BY A TWO-WORD SAR (SPECIAL ARRAY CELL).
;;; SARS RESIDE IN A SPECIAL SPACE CALLED SAR SPACE.
ASAR==:0	;SAR POINTER POINTS TO ASAR (CODE DEPENDS ON THIS)
TTSAR==:1	;TTSAR COMES JUST AFTER IT
;;; THE FIRST WORD OF THE SAR, CALLED THE ASAR, POINTS TO THE ARRAY
;;; HEADER; PUSHJ'ING INDIRECTLY THOUGH IT GETS TO THE ARRAY
;;; SUBSCRIPT EVALUATION CODE. THE LEFT HALF, EXCLUDING THE
;;; INDIRECT AND INDEX BITS, CONTAINS VARIOUS BITS DESCRIBING
;;; THE TYPE OF THE ARRAY:


AS.SFA==:200000		;SFA ARRAY 
AS.JOB==:100000		;JOB ARRAY 
AS.FIL==:40000		;FILE ARRAY 
AS.RDT==:20000		;READTABLE
AS.OBA==:10000		;OBARRAY
AS.DX==:4000		;DUPLEX		;THESE ARE
AS.CX==:2000		;COMPLEX	; THE ACCESS
AS.DB==:1000		;DOUBLE		; METHODS -
AS.SX==:400		;S-EXPRESSION	; EXACTLY ONE
AS.FX==:200		;FIXNUM		; SHOULD BE SET
AS.FL==:100		;FLONUM		; IN EACH ASAR
AS.GCP==:40		;GC SHOULD USE AOBJN PTR TO MARK ARRAY

;;; THE SECOND WORD, CALLED THE TTSAR, POINTS TO THE ARRAY DATA
;;; AND IS INDEXED BY ACCUMULATOR TT. ITS LEFT HALF, EXCLUDING
;;; AGAIN THE INDIRECT AND INDEX BITS, CONTAIN MORE INFORMATION
;;; ABOUT THE ARRAY:

TTS.CL==:40000		;CLOSED FILE
TTS.BM==:20000		;TOPS-10  I/O BUFFER HAS BEEN MOVED
TTS.IM==:2000		;1 => IMAGE		;BOTH 0
TTS.BN==:1000		;1 => BINARY (FIXNUM)	; => ASCII
TTS.TY==:400		;0 => DSK-TYPE, 1 => TTY
TTS.IO==:200		;0 => IN, 1 => OUT
TTS.CN==:100		;COMPILED CODE NEEDS THIS SAR
TTS.GC==:40		;USED AS MARK BIT BY GC
TTSDIM==:410300	;BYTE POINTER FOR # OF DIMENSIONS (1-5)
TTS.1D==:100000		;DEFINITIONS
TTS.2D==:200000		; FOR SPECIFYING
TTS.3D==:300000		; NUMBER OF
TTS.4D==:400000		; ARRAY
TTS.5D==:500000		; DIMENSIONS

;;; S-EXPRESSION ARRAYS HAVE THE FOLLOWING FORM:
;;;		-<# WDS FOR GC MARK>,,<1ST WD OF DATA TO MARK>
;;;	HEADER:	JSP TT,<N>DIMS	;ASAR POINTS HERE; N=# OF DIMS
;;;		<ADDRESS OF SAR>	;LH USED BY FLASH
;;;		<DIMENSION 1>
;;;		   ...
;;;		<DIMENSION N>
;;;	DATA:	<ENTRY 0>,,<ENTRY 1>	;TTSAR POINTS HERE
;;;		   ...			;DATA PACKED 2/WD
;;;		<ENTRY X-1>,,<ENTRY X>
;;;
;;; THE FORMAT OF A NUMBER ARRAY IS AS FOLLOWS:
;;;		<GC AOBJN PTR>	;PROBABLY MEANINGLESS
;;;	HEADER:	PUSH P,CFIX1	;CFLOAT1 FOR A FLONUM ARRAY
;;;		JSP TT,<N>DIMF	;N=# OF DIMS
;;;		<ADDRESS OF SAR>	;LH USED BY FLASH
;;;		<DIMENSION 1>
;;;		   ...
;;;		<DIMENSION N>
;;;	DATA:	<ENTRY 0>	;TTSAR POINTS HERE
;;;		<ENTRY 1>	;FULL-WORD DATA 1/WD
;;;		   ...
;;;		<ENTRY X>

;;; THE AOBJN POINTER AT THE TOP OF EACH ARRAY IS MEANINGFUL ONLY
;;; IF THE AS.GCP BIT IS 1 IN THE ARRAY'S ASAR; IT INDICATES
;;; WHAT ENTRIES IN THE ARRAY GC SHOULD MARK. FOR S-EXPRESSION
;;; ARRAYS, THIS IS GENERALLY THE ENTIRE ARRAY; FOR OBARRAYS,
;;; IT INCLUDES THE BUCKETS BUT NOT THE SCO TABLE. FOR
;;; READTABLES, WHICH ARE OTHERWISE FIXNUM ARRAYS, UNDER NEWRD
;;; THE GC AOBJN POINTER INDICATES THAT THE LIST OF CHARACTER
;;; MACRO FUNCTIONS SHOULD BE MARKED.
;;; NOTE THAT IF SUCH AN AOBJN POINTER IS OF THE FORM <-N>,,<DATA>,
;;; THEN 2*N ENTRIES ARE MARKED; THE LEFT HALF IS THE NUMBER
;;; OF WORDS TO BE MARKED, WITH TWO ENTRIES PER WORD.
;;; CORRESPONDS TO ARRAY TYPE BITS IN ASAR'S.
;FI.EOF FO.EOP FJ.INT FI.BBC FI.BBF TI.BFN FT.CNS F.GC F.MODE FBT.CM FBT.SA FBT.CP FBT.LN FBT.EC FBT.SE FBT.FU FBT.ND FBT.SC F.CHAN F.JFN F.FLEN F.FPOS L.6DEV L.6DIR L.6FNM L.6EXT L.6VRS L.6DEV L.6DIR L.6FNM L.6EXT L.6VRS L.D6BT L.N6BT L.F6BT F.DEV F.FN1 F.FN2 F.RDEV F.RFN1 F.RFN2 F.DIR F.FNM F.EXT F.VRS LOPOFA TI.ST1 TI.ST2 ATO.LC AT.CHS AT.LNN AT.PGN FO.LNL FO.PGL FO.RPL LONBFA FB.BYT FB.BFL FB.BVC FB.IBP FB.BP FB.CNT FB.HED FB.NBF FB.BWS FB.BUF

SUBTTL	FORMAT OF FILE ARRAYS

;;; FILE ARRAYS ARE ARRAYS WHICH HAVE THE AS.FIL BIT SET
;;; IN THE ASAR AND SOME EXTRA BITS IN THE TTSAR DESCRIBING
;;; THE TYPE OF ARRAY.
;;; A FILE ARRAY CONTAINS A NUMBER OF VARIABLES RELATED TO
;;; THE FILE, AND POSSIBLY A BUFFER FOR DATA.
;;; THE PREFIX OF EACH NAME OF A FILE ARRAY COMPONENT INDICATES THE
;;; TYPES OF FILE ARRAYS TO WHICH IT IS APPLICABLE.  THUS TI.ST1
;;; IS ONLY FOR TTY INPUT FILE ARRAYS.

;;; NOTE: COMPONENTS MARKED (RELOC) MUST HAVE THEIR RIGHT
;;; HALVES RELOCATED WHEN THE ARRAY IS MOVED.
.SEE GT3D

;;; THE FOLLOWING ARE INDICES INTO THE FILE ARRAY'S DATA AREA
;;; (I.E. THEY ARE USED TO INDEX THROUGH THE TTSAR).

	FI.EOF==:0	;EOF FUNCTION
	FO.EOP==:0	;END OF PAGE FUNCTION
	FJ.INT==:0	;INTERRUPT FUNCTION FOR USR DEVICE

	FI.BBC==:1	;BUFFERED BACK CHARS FOR ASCII FILES
			;  LEFT HALF: SINGLE CHAR (3.8=1 IF ANY,
			;	SO CAN DISTINGUISH ↑@ FROM NONE)
			;  RIGHT HALF: LIST OF CHARS FOLLOWING THE ONE
			;	IN THE LEFT HALF
			.SEE $DEVICE

	FI.BBF==:2	;LIST OF BUFFERED BACK FORMS (NOT IMPLEMENTED)

	TI.BFN==:3	;BUFFER-FORWARD (PRESCAN) FUNCTION FOR READ

	FT.CNS==:4	;ASSOCIATED TTY FILE FOR OTHER DIRECTION
			.SEE STTYCONS

;;; SLOTS 5, 6, AND 7 ARE RESERVED FOR EXPANSION.

F.GC==:10	;NUMBER OF SLOTS GC SHOULD EXAMINE

	F.MODE==:10	;MODE BITS
FBT.CM==:400000		;4.9	0=BUFFERED, 1=CHARMODE
FBT.SA==:200000		;4.8	SAIL CHARACTER SET (OUTPUT ONLY)
FBT.CP==:100000		;4.7	CURSORPOS WILL SUCCEED (?)
			;	ON ITS, REFLECTS %TOMVU (CAN MOVE UP)
				.SEE OPNTO1
FBT.LN==:40000		;4.6	HANDLE TTY IN LINE MODE
SA$     FBT.AP==:20000	;4.5	OPENED IN APPEND MODE
SA% 10% FBT.AP==:20000	;4.5	OPENED IN APPEND MODE
SA% 10$ FBT.AP==:0	;4.5	NOT YET HACKED FOR VANILLA TOPS-10
FBT.EC==:10000		;4.4	OUTPUT TTY IN ECHO AREA (ITS ONLY)
FBT.SE==:2000		;4.2	TTY CAN SELECTIVELY ERASE
FBT.FU==:1000		;4.1	TTY SHOULD READ/PRINT FULL 12.-BIT
			;	CHARACTERS (FIXNUM MODE)
FBT.ND==:400		;3.9	DON'T MEREGEF WITH DEFAULTF (NEVER LEFT ON
			;	IN OPTIONS WORD)
IT% FBT.CA==:0		;THIS SHOULD WORK CORRECTLY
IT$ FBT.CA==:40		;3.6	CLA DEVICE (ITS ONLY)
FBT.SC==:20		;3.5	SCROLL MODE
			;THE RIGHT HALF IS USED TO INDEX VARIOUS TABLES.
			;1.4-1.3 0=ASCII, 1=FIXNUM, 2=IMAGE
			;1.2	0=DSK, 1=TTY
			;1.1	0=INPUT, 1=OUTPUT

	F.CHAN==:11	;I/O CHANNEL NUMBER
			;FOR ALL IMPLEMENTATIONS, THIS IS THE INDEX INTO
			.SEE CHNTB	; THE CHANNEL TABLE.
			;FOR THE ITS AND D10 IMPLEMENTATIONS, IT IS
			; ALSO THE I/O CHANNEL NUMBER.

	F.JFN==:12	;THE JOB-FILE NUMBER FOR THIS FILE

	F.FLEN==:13	;THE LENGTH OF THE FILE, OR -1 IF RANDOM ACCESS IS IMPOSSIBLE.
			; MAY NOT BE UP-TO-DATE ON AN OUTPUT FILE, BUT FILEPOS
			.SEE FPOS5	; UPDATES IT FIRST IN THIS CASE.

	F.FPOS==:14	;FILE POSITION
			;FOR SINGLE MODE FILES, THIS IS THE ACTUAL FILE POSITION.
			;FOR BLOCK MODE, THIS IS THAT OF THE BEGINNING OF
	.SEE FB.BUF	; THE BUFFER IN THE FILE ARRAY, AND ONE
	.SEE FB.B	; MUST LOOK AT FB.BVC AND FB.CNT
	.SEE FB.CNT	; (OR WHATEVER) TO CALCULATE THE EXACT FILEPOS.
			;THE POSITION IS MEASURED IN CHARACTERS FOR ASCII FILES,
			; AND WORDS FOR FIXNUM FILES.
			;THIS VALUE MAY BE GARBAGE IF F.FLEN IS NEGATIVE.

;;; SLOTS 15-17 ARE RESERVED.

IFN ITS+D10,[
;;; FROM F.DEV TO F.RFN2 ARE USED BY JOB ARRAYS ALSO.
;;; MUST HAVE (F.DEV, F.SNM/F.PPN, F.FN1, F.FN2) IN THAT ORDER.
;;; DITTO FOR (F.RDEV, F.RSNM/F.RPPN, F.RFN1, F.RFN2).
L.6DEV==:1		;LENGTH OF DEVICE NAME IN "SIXBIT" FORM
L.6DIR==:1		;LENGTH OF DIRECTORY NAME
L.6FNM==:1		;LENGTH OF FILE NAME
L.6EXT==:1		;LENGTH OF EXTENSION (TYPE)
L.6VRS==:0		;LENGTH OF VERSION (GENERATION)
]		;END OF IFN ITS+D10
IFN D20,[
;;; FOR D20, "SIXBIT" FORM IS REALLY AN ASCIZ STRING.
L.6DEV==:8		;LENGTH OF DEVICE NAME IN "SIXBIT" FORM
L.6DIR==:8		;LENGTH OF DIRECTORY NAME
L.6FNM==:8		;LENGTH OF FILE NAME
L.6EXT==:8		;LENGTH OF EXTENSION (TYPE)
L.6VRS==:2		;LENGTH OF VERSION (GENERATION)
]	;END OF IFN D20

L.D6BT==:L.6DEV+L.6DIR		;LENGTH OF DEVICE/DIRECTORY "SIXBIT" FORM
L.N6BT==:L.6FNM+L.6EXT+L.6VRS	;LENGTH OF FILE NAMES IN "SIXBIT" FORM
L.F6BT==:L.D6BT+L.N6BT		;LENGTH OF TOTAL FILE SPEC IN "SIXBIT" FORM

;;; THESE ARE THE NAME WHICH WERE GIVEN TO OPEN.
	F.DEV==:20		;DEVICE NAME
IFE D20,[
  IT$	F.SNM==:F.DEV+L.6DEV	;SYSTEM NAME (SNAME)
  10$	F.PPN==:F.DEV+L.6DEV	;PROJECT-PROGRAMMER NUMBER
	F.FN1==:F.DEV+L.D6BT	;FILE NAME 1
	F.FN2==:F.FN1+L.6FNM	;FILE NAME 2 (D10: EXTENSION)
;;; THESE ARE THE NAMES RETURNED BY THE TRUENAME FUNCTION.
	F.RDEV==:F.DEV+L.F6BT		;"REAL" DEVICE NAME
   IT$	F.RSNM==:F.RDEV+L.6DEV		;"REAL" SYSTEM NAME
   10$	F.RPPN==:F.RDEV+L.6DEV		;"REAL" PPN
	F.RFN1==:F.RDEV+L.D6BT		;"REAL" FILE NAME 1
	F.RFN2==:F.RFN1+L.6FNM		;"REAL" FILE NAME 2
]	;END OF IFE D20
IFN D20,[
	F.DIR==:F.DEV+L.6DEV	;DIRECTORY
	F.FNM==:F.DIR+L.6DIR	;FILE NAME
	F.EXT==:F.FNM+L.6FNM	;EXTENSION
	F.VRS==:F.EXT+L.6EXT	;VERSION
;;; THE "REAL" FILE NAMES ARE NOT STORED, BUT FETCHED BY JSYS EACH TIME.
;	F.RDEV	
;	F.RDIR
;	F.RFNM
;	F.REXT
;	F.RVRS
]		;END OF IFN D20


LOPOFA==:70	.SEE ALFILE	;LENGTH OF PLAIN OLD FILE ARRAY

IFL LOPOFA-<F.DEV+L.F6BT>, WARN [DEFINITION OF LOPOFA IS TOO SMALL]

IFN ITS+D20+SAIL,[
;;; FOR ITS, THESE ARE TTYST1 AND TTYST2 FOR GIVING TO TTYSET.
;;; FOR D20, THESE ARE THE CCOC WORDS FOR GIVING TO SFCOC.
;;; FOR SAIL, THESE ARE THE ACTIVATION WORDS FOR SETACT.
	TI.ST1==:LOPOFA+0	;TTY STATUS WORD 1
	TI.ST2==:LOPOFA+1	;TTY STATUS WORD 2
IT%	TI.ST3==:LOPOFA+2	;TTY STATUS WORD 3
IT%	TI.ST4==:LOPOFA+3	;TTY STATUS WORD 4
]		;END OF ITS+D20+SAIL

	ATO.LC==:LOPOFA+4	;LAST CHARACTER FLAG FOR ASCII OUTPUT:
				;ZERO: NORMAL STATE.
				;POSITIVE: LAST CHARACTER OUTPUT WAS A SLASH,
				; SO THE AUTOMATIC TERPRI SHOULD BE INHIBITED.
				;NEGATIVE: LAST CHARACTER OUTPUT WAS A <CR>,
				; SO IT MAY BE NECESSSARY TO SUPPLY A <LF>.

	AT.CHS==:LOPOFA+5	;CHARPOS

	AT.LNN==:LOPOFA+6	;LINENUM

	AT.PGN==:LOPOFA+7	;PAGENUM

	FO.LNL==:LOPOFA+10	;LINE LENGTH
				;NORMALLY INITIALIZED TO 1 LESS THAN THE ACTUAL WIDTH
 				; OF THE DEVICE TO ALLOW FOR SLASH OVERRUN.
				.SEE STERPRI	;MAY BE NEGATIVE, IN WHICH CASE THE
						; MAGNITUDE IS THE ACTUAL VALUE.

	FO.PGL==:LOPOFA+11	;PAGE LENGTH

	FO.RPL==:LOPOFA+12	;"REAL" PAGEL FOR TTYS

;;; SLOTS 13-17 ARE RESERVED FOR EXPANSION.

LONBFA==:LOPOFA+20	;LENGTH OF NON-BUFFERED FILE ARRAY

;;; EVERYTHING AFTER THIS IS ONLY FOR FILES WITH BUFFERS

	FB.BYT==:LONBFA+0	;NUMBER OF DATA BYTES PER WORD

	FB.BFL==:LONBFA+1	;LENGTH OF BUFFER IN BYTES

	FB.BVC==:LONBFA+2	;# VALID CHAARS IN BUFFER (ONLY INPUT FILES)

IFN ITS+D20,[
	FB.IBP==:LONBFA+3	;INITIAL BUFFER BYTE POINTER (RELOC)
	FB.BP==:LONBFA+4	;CURRENT BUFFER BYTE POINTER (RELOC)
	FB.CNT==:LONBFA+5	;COUNT OF REMAINING BYTES IN BUFFER
]		;END OF ITS+D20
IFN D10,[
	FB.HED==:LONBFA+3	;ADDRESS OF 3-WORD BUFFER RING HEADER
	FB.NBF==:LONBFA+4	;NUMBER OF BUFFERS
	FB.BWS==:LONBFA+5	;SIZE OF BUFFER IN WORDS (NOT COUNTING BUFFER HEADER)
SA$	FB.ROF==:LONBFA+6	;(NEGATIVE) RECORD OFFSET IN BYTES, I.E. FILEPOS
				; OF THE PHYSICAL BEGINNING OF THE FILE
]		;END OF IFN D10

	FB.BUF==:LONBFA+10	;BEGINNING OF BUFFER
				;FOR ITS AND D20, THE DATA BUFFER BEGINS HERE.
				;FOR D10, THE BUFFER RING STRUCTURE BEGINS HERE.
				;FOR TTY INPUT FILES, THE "BUFFER" IS AN ARRAY
				; OF INTERRUPT FUNCTIONS FOR EACH ASCII CHARACTER.
;J.INTF J.CINT J.LFNM J.CRUFT J.GC J.INTB J.STAD J.UIND LOJOBA J.SYMS

SUBTTL	FORMAT OF JOB ARRAYS

IFN ITS,[

;;; JOB ARRAYS ARE ARRAYS WHICH HAVE THE AS.JOB BIT SET
;;; IN THE ASAR.  THE TTS.CL BIT IS RELEVANT HERE ALSO,
;;; INDICATING A CLOSED JOB ARRAY.
;;; THE ARRAY CONTAINS VARIOUS DATA ASSOCIATED WITH THE JOB.

;;; NOTE: COMPONENTS MARKED (RELOC) MUST HAVE THEIR RIGHT
;;; HALVES RELOCATED WHEN THE ARRAY IS MOVED.

;;; THE FOLLOWING ARE INDICES INTO THE FILE ARRAY'S DATA AREA
;;; (I.E. THEY ARE USED TO INDEX THROUGH THE TTSAR).

	J.INTF==:0	;INTERRUPT FUNCTION (NEEDED BY INT SYSTEM)
	J.CINT==:1	;CHANNEL INTERRUPT FUNCTION
	J.LFNM==:2	;LOAD FILE NAMELIST?
	J.CRUFT==:3	;RANDOM CRUFT (USUALLY PROPERTY LIST)

J.GC==:4	;NUMBER OF SLOTS GC SHOULD EXAMINE

;SLOTS 3-12 RESERVED

;;; F.DEV THROUGH F.RFN2 (12 TO 21) APPLY TO JOB ARRAYS ALSO.

	J.INTB==:LOPOFA+0	;INTERRUPT BIT, OR ZERO FOR FOREIGN JOB
	J.STAD==:LOPOFA+1	;START ADDRESS
	J.UIND==:LOPOFA+2

LOJOBA==:FB.BUF

	J.SYMS==:FB.BUF	;START OF SYMBOL TABLE, IF ANY

]		;END OF IFN ITS
;SR.CAL SFCALI SR.WOM SR.UDL SO.OPN SO.CLO SO.REN SO.DEL SO.TRP SO.PR1 SO.TYI SO.UNT SO.TIP SO.IN SO.EOF SO.TYO SO.PRO SO.FOU SO.RED SO.RDL SO.PRT SO.PRC SO.MOD SO.POS SO.ICL SO.OCL SO.OUT SR.FML SR.FUN SR.PNA SR.FUS SR.LEN STPFL NM

IFE SFA, SFCALI==-1
IFN SFA,[
SUBTTL FORMAT OF SFA OBJECTS

;;; AN SFA OBJECT HAS THE AS.SFA BIT SET IN THE ASAR.   TTS.CL IS IGNORED.

;;; THE FOLLOWING ARE INDICIES INTO THE SFA ARRAY AND ARE UNMARKED FROM:
SR.CAL==:0	;THE LISP CALL UUO XCT'ED TO INVOKE THE SFA FUNCTION
SFCALI==:SR.CAL	;FOR COMPILED CODE
SR.WOM==:1	;WHICH-OPERATIONS MASK:  ENCODED MASK OF THE OPERATIONS THAT
		; THE SFA CAN PERFORM.  USED FOR QUICK TESTING IN CERTAIN
		; DISPATCH CASES.  BITS AS FOLLOWS:
SR.UDL==:2	;USER DATA LENGTH

;;; ***NOTE:  THE HALVNESS OF THE BITS MUST NOT CHANGE ***
;LH BITS
  SO.OPN==:400000	;OPEN
  SO.CLO==:200000	;CLOSE
  SO.REN==:100000	;RENAMEF
  SO.DEL==:040000	;DELETEF
  SO.TRP==:020000	;TERPRI
  SO.PR1==:010000	;PRIN1
  SO.TYI==:004000	;TYI
  SO.UNT==:002000	;UNTYI
  SO.TIP==:001000	;TYIPEEK
  SO.IN==:000400	;IN
  SO.EOF==:000200	;EOFFN
  SO.TYO==:000100	;TYO
  SO.PRO==:000040	;PRINT-OBJECT
  SO.FOU==:000020	;FORCE-OUTPUT
  SO.RED==:000010	;READ
  SO.RDL==:000004	;READLINE
  SO.PRT==:000002	;PRINT
  SO.PRC==:000001	;PRINC
;RH BITS
  SO.MOD==:400000	;FILEMODE
  SO.POS==:200000	;FILEPOS
  SO.ICL==:100000	;CLEAR-INPUT
  SO.OCL==:040000	;CLEAR-OUTPUT
  SO.OUT==:020000	;OUT


SR.FML==:3	;FIRST MARKED LOCATION

SR.FUN==:3	;RH IS SFA FUNCTION
SR.PNA==:4	;RH IS PRINTNAME
SR.FUS==:5	;LH IS FIRST USER SLOT

SR.LEN==:5	;NUMBER OF WORDS NEEDED BY THE SYSTEM
]		;END IFN SFA


;;; Size of hunks
IFDEF SEGLOG,	 HNKLOG==SEGLOG-1
IFNDEF SEGLOG,	 HNKLOG==11;;@ END OF DEFNS 228

;;; DON'T HACK THIS $INSRT - UNIFY DEPENDS ON IT
;;@ MACS 74		LOTSA MOBY MACROS
;;;   ***** MACLISP *** RANDOM MIDAS MACROS FOR USE IN LISP SOURCE *
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************

SUBTTL	RANDOM MACROS


;;; MACRO TO REMOVE SYMBOLS OF THE FORM "GXXXXX"

DEFINE GEXPUN
DEFFLUSH
.GSSET 0
STPFL==0
.TAG FOO	FLUSH
IFE STPFL, .GO FOO
TERMIN

DEFINE DEFFLUSH \SYM
DEFINE FLUSH \ZZX
IFSE SYM,ZZX, STPFL==1
EXPUNGE ZZX
TERMIN
TERMIN


DEFINE HAOLNG NM,N
	RADIX 2
	NM==HAOWNG \N
	RADIX 8
TERMIN

DEFINE HAOWNG A
.LENGTH /A/
TERMIN


DEFINE MAYBE DEF
IF1,[
IRPS SYM,,[DEF]
IFNDEF SYM, DEF
.ISTOP
TERMIN
]
TERMIN


DEFINE TBLCHK START,LENGT
IFN .-<START>-<LENGT>, WARN [WRONG LENGTH TABLE]
TERMIN

;

;;; "POP IMMEDIATE" MACRO TRIES TO DECREMENT A PDL POINTER IN THE BEST WAY.

DEFINE POPI <AC,N>
;; IFN KL10, ADJSP AC,-<N>		.STOP
IFDEF R70, IFDEF LR70, IFL <N>-LR70,  SUB AC,R70+<N>	.STOP
	SUB AC,[<N>,,<N>]
TERMIN


;;; "PUSH N SLOTS" MACRO PUSHES ZERO WORDS ONTO A PDL.

DEFINE PUSHN <AC,N>
IFE <N>, .STOP
IFE <N>-1, PUSH AC,R70		.STOP
IFE AC-P,{
	PUSHN1 AC,N,NPUSH
.STOP}
IFE AC-FXP,{
	PUSHN1 AC,N,0PUSH
.STOP}
IFE AC-FLP,{
	PUSHN1 AC,N,0.0PUSH
.STOP}
	WARN [PUSH AC,N   UNKNOWN PDL]
TERMIN

DEFINE PUSHN1 <AC,M,XPUSH>
IFLE <M>-N!XPUSH,  JSP T,XPUSH-<M>	.STOP
	JSP T,XPUSH-N!XPUSH
	PUSHN1 AC,<M-N!XPUSH>,XPUSH
TERMIN

;%HISEG %LOSEG CURSTD %LOSEG %HISEG CURSTD


SUBTTL $LOSEG, $HISEG, 

IFN D10,[

IFN HISEGMENT,[
DEFINE $LOSEG	;MACRO TO SWITCH TO LOW SEGMENT FOR 2SEG ASSEMBLY
IFN %LOSEG+1,[
%HISEG==.-HILOC
LOC FIRSTLOC+%LOSEG
%LOSEG==-1
CURSTD==STDLO
]		;END OF IFN %LOSEG+1
.ELSE WARN [ALREADY IN LOW SEGMENT]
TERMIN

DEFINE $HISEG	;MACRO TO SWITCH TO HIGH SEGMENT FOR 2SEG ASSEMBLY
IFN %HISEG+1,[
%LOSEG==.-FIRSTLOC
LOC HILOC+%HISEG
%HISEG==-1
CURSTD==STDHI
]		;END OF IFN %HISEG+1
.ELSE WARN [ALREADY IN HIGH SEGMENT]
TERMIN
]	;END IFN HISEGMENT
IFE HISEGMENT,[
DEFINE $LOSEG
TERMIN
DEFINE $HISEG
TERMIN
]	;END IFE HISEGMENT
]		;END OF IFN D10



;

SUBTTL PIONAGAIN, PIPAUSE, PION, TICCMAP

IFN ITS,[

DEFINE PIPAUSE			;DISABLE INTERRUPT SYSTEM
	.SUSET PIHOLD
TERMIN

DEFINE PIONAGAIN
	.SUSET PINBL
TERMIN

DEFINE PION
	.SUSET PINBL
TERMIN

]		;END OF IFN ITS

IFN D10\D20,[

DEFINE PIPAUSE
	PUSHJ P,DALINT
TERMIN

DEFINE PIONAGAIN
	PUSHJ P,REAINT
TERMIN

DEFINE PION
	PUSHJ P,ENBINT
TERMIN

]	;END OF IFN D10\D20


IFN D20,[
;DO THE "BODY' WITH "CODE" SUCCESSIVELY SET TO TERMINAL-INTERRUPT-CONTROL OPTIONS
DEFINE TICMAP {BODY}
IRP CODE,,[CB,CD,CG,CW,CX,CZ,CA,CV,CE,CF]
	BODY
TERMIN
TERMIN
]	;END OF IFN D20

;ZZZ ZZZ


SUBTTL FUMBLE, STUMBLE, AND GRUMBLE


DEFINE FUMBLE FF,RIDER,SPECS		;FOR SPACES
STUMBLE FUMBLE,FF,RIDER,0,SEGSIZ,[SPECS]
TERMIN

DEFINE GRUMBLE PDL,RIDER,SPECS	;FOR PDLS
STUMBLE GRUMBLE,PDL,RIDER,20,100,[SPECS]
TERMIN

DEFINE STUMBLE NAME,FF,RIDER=[IFE 0],LO,HI,%SPECS
ZZZ==0
IRP SPEC,,[%SPECS]
IRP COND,VALS,[SPEC]
IFN COND,[
IRP M,,[MIN,MAX]Q,,[LO,HI]V,,VALS
RIDER,[
IFL V-Q, M!!FF==:Q
.ELSE M!!FF==:V
]
.ELSE M!!FF==:0
TERMIN
ZZZ==ZZZ+1
]
.ISTOP
TERMIN
TERMIN
IFN ZZZ-1, WARN \ZZZ,[ SPECS SUCCEEDED FOR NAME FF]
EXPUNGE ZZZ
TERMIN

;PGTPMK NPGTPS

SUBTTL PGBOT, [PGTOP], PAGEUP, SEGUP, SPCBOT, SPCTOP

;;; NOTE THAT PGBOT DEFINES PGTOP FOR THE NEXT USE, WHILE
;;; PGTOP IS AUTO-EXPUNGING (AND VICE VERSA).

DEFINE DPGBOT
   DEFINE PGBOT SPC
      PGTPMK==.
      DEFINE PGBOT SPC1
         WARN [ILLEGAL PGBOT SPC1]
      TERMIN
      DEFINE PGTOP SPC1,CRUFT
         IFSN SPC1,SPC, WARN [PGTOP SPC1 DOESN'T MATCH PGBOT SPC]
         CONC CPG,\NPGTPS,:	CONSTANTS
         CONC ECPG,\NPGTPS,::
         PGTOP1 \NPGTPS,\.-PGTPMK,[CRUFT]
         NPGTPS==NPGTPS+1
         DPGBOT
      TERMIN
   TERMIN
   DEFINE PGTOP SPC,CRUFT
      WARN [ILLEGAL PGTOP SPC,CRUFT]
   TERMIN
TERMIN

DPGBOT

DEFINE PGTOP1 N,SIZE,STUFF
PRINTX ≤	P!N:  SIZE	[STUFF]
≤
TERMIN

.XCREF PGTOP1

DEFINE PAGEUP
REL$ LOC .RL1+<<.-.RL1+CURSTD+PAGSIZ-1>&PAGMSK>-CURSTD
REL% LOC <<.-CURSTD+PAGSIZ-1>&PAGMSK>-CURSTD
TERMIN

DEFINE SEGUP PT
REL$ LOC .RL1+<<PT-.RL1+CURSTD+SEGSIZ-1>&SEGMSK>-CURSTD
REL% LOC <<PT+CURSTD+SEGSIZ-1>&SEGMSK>-CURSTD
TERMIN


;ZZY ZZ ZZX ZZY


DEFINE SPCBOT SPC
REL$ ZZ==.-.RL1
REL% ZZ==.
ZZY==.TYPE B!SPC!SG
IFN <17-ZZY>*<3-ZZY>*<11-ZZY>,[
IFN B!SPC!SG-., WARN [FORMERLY B!SPC!SG=]\B!SPC!SG,[, BUT NOW B!SPC!SG=]\ZZ
]
IFN <ZZ+CURSTD>&SEGKSM, WARN \ZZ+CURSTD,[=BAD BOUNDARY FOR B!SPC!SG]
B!SPC!SG==.
TERMIN

;;; NOTE WELL! ZZW MUST BE SAFE ACROSS THE SPCTOP MACRO

DEFINE SPCTOP SPC,TYP,CRUFT
ZZ==.
SEGUP .
ZZX==<.-B!SPC!SG>/SEGSIZ
ZZY==.TYPE N!SPC!SG
IFN <17-ZZY>*<3-ZZY>*<11-ZZY>,[
IFN N!SPC!SG-ZZX, WARN [FORMERLY N!SPC!SG=]\N!SPC!SG,[, BUT NOW N!SPC!SG=]\ZZX
]
N!SPC!SG==ZZX
IFL ZZX-5, SPCTP1 \ZZX,[CRUFT]\<.-ZZ>
IFGE ZZX-5, SPCTP2 \ZZX,[CRUFT]\<.-ZZ>
TERMIN

DEFINE SPCTP1 N,CRUFT,U
IRP Q,,[0,1,2,3,4]R,,[ZERO,ONE,TWO,THREE,FOUR]
IFE N-Q,[
PRINTX ≤	***** R CRUFT SEGMENT≤
IFN N-1, PRINTX \S\
IFN U, PRINTX \ [U UNUSED WORDS]\
PRINTX \
\
]
IFE N-Q, .ISTOP
TERMIN
TERMIN

DEFINE SPCTP2 N,CRUFT,U
IRP Q,,[5,6,7,10,11,12,13,14,15,16,17,20,21,22
23,24,N]R,,[FIVE,SIX,SEVEN,EIGHT,NINE,TEN
ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN,SIXTEEN,SEVENTEEN
EIGHTEEN,NINETEEN,TWENTY,N (OCTAL)]
IFE N-Q,[
PRINTX ≤	***** R CRUFT SEGMENT≤
IFN N-1, PRINTX \S\
IFN U, PRINTX \ [U UNUSED WORDS]\
PRINTX \
\
]
IFE N-Q, .ISTOP
TERMIN
TERMIN


.XCREF SPCTP1 SPCTP2

;NPURTR NIOCTR


SUBTTL PURTRAP, IOCTRAP, 2DIF, AND INTPRO MACROS

;;; FEATURE FOR AUTOMATIC TRAPOUT ON PURE PAGE VIOLATIONS
;;; STANDARD USAGE IS TO REPLACE
;;;		MOVEM X,Y	;COULD CAUSE PURE PAGE TRAP
;;; WITH
;;;	PURTRAP PATCH-LOC,AC,	MOVEM X,Y
;;; IF THE INSTRUCTION CAUSES A PURE PAGE VIOLATION,
;;; THEN THE PURE PAGE TRAP HANDLER WILL TRANSFER TO FOO,
;;; WITH ALL ACS, ETC. INTACT (HOPEFULLY), RATHER THAN
;;; ERRORING OUT, WHICH IS THE DEFAULT. SEE PURPGI.
;;; FOR DEC-10, THERE IS AN EXPLICIT CHECK FOR TRYING TO CLOBBER 
;;; THE HISEG.

;;; A SIMILAR FEATURE FOR IOC TRAPS
;;; STANDARD USAGE IS:
;;;
;;;	BAR:	XCT D		;D HAS .IOT
;;;	   IOCTRAP TT,FOO,N	;N IS OPTIONAL
;;;		<MORE CODE>
;;;
;;; IF THE INSTRUCTION AT BAR CAUSES AN IOC ERROR,
;;; THEN THE IOC ERROR CODE IS PUT INTO ACCUMULATOR TT,
;;; AND CONTROL TRANSFERRED TO FOO WITH ALL OTHER ACS INTACT.
;;; IF N IS GIVEN, ONLY IOC ERROR CODE N IS TRAPPED.

IFN ITS+D20,[

DEFINE PURTRAP X,B-INST
	INST
PURTR1 \.-1,\NPURTR,D,X
NPURTR==NPURTR+1
TERMIN

DEFINE PURTR1 L,N,AC,X
	DEFINE ZZP!N
		CAIN AC,L
		 HRROI AC,X
	TERMIN
TERMIN

;;; FOR COMMENTS ON 2DIF, SEE BELOW
DEFINE 2DIF INST,X,Y
	<INST>\<,,<X>-<Y>>
TERMIN
]		;END OF IFN ITS+D20


DEFINE IOCTRAP AC,X,N
IOCTR1 \.-1,\NIOCTR,AC,X,N
NIOCTR=NIOCTR+1
TERMIN

DEFINE IOCTR1 L,N,AC,X,N
	DEFINE ZZI!N
	IFSN [N],[
		CAIE D,N
		 JRST .+3
	]
		CAIN R,L
		 MOVE R,[SETZ X(AC)]
	TERMIN
TERMIN

;N2DIF

IFN D10,[

DEFINE PURTRAP X,B-INST
HS$	CAIL B,HILOC
HS$	  JRST X
	INST
TERMIN
] ; END -- IFN D10,


;Hack for PWIOINT for WITHOUT-INTERRUPTS, in BIND
;PURTRAP is OK for non-D10, but must check explicitly for PWIOINT in D10
;I'm not sure if this HS$ is the right thing.  It wants to check in all cases
;where a pure trap won't happen, such as PLISP at SAIL --RWK

IFE D10,[
DEFINE BNDTRAP LBL,X,B-INST
IFSN LBL,,LBL:
	PURTRAP X,B, INST
TERMIN
] ;END -- IFE D10

IFN D10,[
DEFINE BNDTRAP LBL,X,B-INST
	CAIN B,PWIOINT
	  JRST X
IFSN LBL,,LBL:
	INST
TERMIN
] ;END -- IFN D10,

IFN D10,[
;;; FEATURE FOR TWO-SEGMENT DEC-10 ASSEMBLIES TO WIN ON THE
;;; MANY INSTRUCTIONS IN LISP WHICH ARE OF THE FORM
;;;		JRST FOO-BAR(X)
;;; WHERE FOO IS IN ONE SEGMENT AND BAR IN THE OTHER.
;;; THE CORRECT WAY TO WRITE THE ABOVE INSTRUCTION IS
;;;	2DIF	JRST (X),FOO,BAR


DEFINE 2DIF INST,X,Y
IFN %HISEG+1,	2DIF1 \.-HILOC,HILOC,[X][Y]\N2DIF
IFE %HISEG+1,	2DIF1 \.-FIRSTLOC,FIRSTLOC,[X][Y]\N2DIF
N2DIF==N2DIF+1
	INST
TERMIN

;;; A COUPLE OF CROCKS:
;;;	[1] THE .CRFON AND .CRFOFF IN ZZD!N INTERACT WITH
;;;	    THOSE IN THE MACROLOOP MACRO.
;;;	[2] THE OFFSETS ALLOW ADDRESSES CONTAINING . IN
;;;	    THE 2DIF'ED INSTRUCTION (KNOCK PLASTIC).
;;;	    I.E. THE OFFSET F+L-. IS A HACK SO THAT
;;;	    ANY .'S IN X OR Y WILL REFER TO THE 2DIF'D
;;;	    INSTRUCTION AND NOT TO THE PLACE WHERE THE ZZD!N
;;;	    GETS EXPANDED.

DEFINE 2DIF1 L,F,X,Y,N
.CRFOFF
	DEFINE ZZD!N
	.CRFON
	OFFSET F+L-.
		MOVEI T,X
		SUBI T,Y
	OFFSET 0
	.CRFOFF
		HRRM T,F+L
	TERMIN
.CRFON
TERMIN

;;; THE ZZD MACROS GET EXPANDED IN THE INIT ROUTINE.

]	;END OF IFN D10

;NPRO


DEFINE INTPRO W
REL$ PROENT \.-.RL1,W,\NPRO
REL% PROENT \.,W,\NPRO
TERMIN

DEFINE PROENT L,W,N
	DEFINE PRO!N
REL$		W,,L+.RL1
REL%		W,,L
	TERMIN
	NPRO==NPRO+1
TERMIN

DEFINE NOPRO		;BEGINS INTERVAL WITH NO INT PROTECTION
INTPRO INTOK
TERMIN

DEFINE SFXPRO		;CODE PROMISES TO RETURN THROUGH AN SFX CELL
INTPRO INTSFX
TERMIN

DEFINE XCTPRO		;FOLLOWING INSTRS MUST BE XCT'D BEFORE INT
INTPRO INTXCT
TERMIN

DEFINE BAKPRO		;MUST BACK UP TO HERE IF INT HAPPENS
INTPRO INTBAK
TERMIN

DEFINE SPECPRO H	;USED A SPECIALIZED PROTECTION ROUTINE
INTPRO H
TERMIN

;;; NO PROTECTION FOR ABSOLUTE LOCATIONS FROM 0 UP TO NEXT INTERVAL
DEFINE PRO0
	INTOK,,0
TERMIN

;;; THE PRO MACROS ARE EXPANDED AT PROTB (Q.V.)

;ZZ ZZ ZZ GS SEGBYT LONUM HINUM PAGSIZ PAGMSK PAGKSM NPAGS NNUMTP NTYPES


SUBTTL ST AND GCST HACKERS

IFN PAGING,[

;;; THESE MACROS ACTUALLY FILL IN THE SEGMENT TABLES, FOR ITS ASSEMBLIES

DEFINE $ST SPC,BITS
IFN .-ST-<B!SPC!SG/SEGSIZ>,[
	WARN [SEGMENT TABLE PHASE ERROR - TABLE LOC=]\.-ST,[, B!SPC!SG/SEGSIZ=]\B!SPC!SG/SEGSIZ
	LOC ST+<B!SPC!SG/SEGSIZ>
]
IFN N!SPC!SG, $ST1 SPC,\N!SPC!SG,BITS
TERMIN

DEFINE $ST1 SPC,N,XBITS
ST.!SPC:
ZZ==0
IRP TYPE,,[LIST,FIXNUM,FLONUM,BIGNUM,SYMBOL,RANDOM,ARRAY]BB,,[LS,FX,FL,BN,SY,RN,SA]
IFN <XBITS>&BB,[
REPEAT N, <XBITS>,,Q!TYPE
ZZ==ZZ+1
]
TERMIN
IFN ZZ-1, WARN [IMPROPER TYPE BITS FOR SPC SPACE: ]\XBITS
TERMIN

;;; THERE ARE NO INITIAL HUNKS!!!
;;; THESE MACROS HAVE THEREFORE NOT BEEN HACKED FOR HUNKS!!!


DEFINE $GCST SPC,LINK,BTBP,BITS
IFSE LINK,L, L!SPC!SG==0
IFN .-GCST-<B!SPC!SG/SEGSIZ>,[
	WARN [GCST PHASE ERROR - TABLE LOC=]\.-GCST,[, B!SPC!SG/SEGSIZ=]\B!SPC!SG/SEGSIZ
	LOC GCST+<B!SPC!SG/SEGSIZ>
]
IFN N!SPC!SG, 	$GCST1 \N!SPC!SG,SPC,LINK,BTBP,BITS
TERMIN

DEFINE $GCST1 N,SPC,LINK,BTBP,BITS
GS.!SPC:
REPEAT N,[
ZZ==(BITS)
IFSE BTBP,B, ZZ==ZZ+BTB.←<5-SEGLOG>
.ALSO BTB.==BTB.+BTBSIZ
IFSE LINK,L, ZZ==ZZ+L!SPC!SG←<22-<SEGLOG-5>>
.ALSO L!SPC!SG==.-GCST
	ZZ
]
TERMIN

]		;END OF IFN PAGING

IFE PAGING,[

;;;  THIS MACRO MAKES UP THE CODE THAT INITIALIZES THE SEGMENT TABLES
DEFINE 10ST SPC,STENT=[$XM,,QRANDOM]GCENT=0,LINK,BITS
IFN N!SPC!SG,[
	MOVEI T,B!SPC!SG
	LSH T,-SEGLOG
	MOVE TT,[STENT]
REPEAT N!SPC!SG,	MOVEM TT,ST+.RPCNT(T)
IFN GCENT,[
	MOVSI TT,GCENT
REPEAT N!SPC!SG,[
IFSN BITS,,[
	HRRI TT,(AR1)
	ADDI AR1,1
]		;END OF IFSN BITS,,
	MOVEM TT,GCST+.RPCNT(T)
]		;END OF REPEAT N!SPC!SG
]		;END OF IFN GCENT
IFSN LINK,,[
IFG N!SPC!SG-1,[
	HRLI T,-N!SPC!SG+1
	DPB T,[SEGBYT,,GCST+1(T)]
	AOBJN T,.-1
]		;END OF IFG N!SPC!SG-1
	HRRZM T,LINK
]		;END OF IFSN LINK,,
]		;END OF IFN N!SPC!SG
TERMIN

]	;END OF IFE PAGING

;;; $<GS>T IN DDT IS GOOD FOR LOOKING AT GCST
GS==<777000,,>\<<1←<22-<SEGLOG-5>>>-1>

;;; FOR FETCHING LINK FIELD WITH A LDB
SEGBYT==<22-<SEGLOG-5>>←14+<22-SEGLOG>←6

;;@ END OF MACS 74


SA% LRCT==:NASCII+10	;SPACE SUFFICIENT FOR CHARS AND SWITCHES
SA$ LRCT==:1010
10$ LIOBUF==:200		;LENGTH OF STANDARD VANILLA I/O BUFFER


LONUM==400	;MINIMUM MAGNITUDE OF LOWEST NEGATIVE INUM
HINUM==1000	;MINIMUM MAGNITUDE OF LARGEST POSITIVE INUM
		;SOME CODE ASSUMES HINUM IS AT LEAST 777
		;MUCH CODE ASSUMES HINUM IS AT LEAST 177 (FOR ASCII CHARS)


IFN ITS, PAGLOG==:12		;LOG2 OF PAGE SIZE
				; (DAMN WELL BETTER BE 12 FOR ITS!!!
IFN D10, PAGLOG==:11		; SOME CODE ASSUMES IT WILL BE 11 OR 12)
IFN D20, PAGLOG==:11

IFE D10*PAGING, MEMORY==:<1,,0>	;SIZE OF MEMORY!!!
IFN D10*PAGING, MEMORY==:776000	;ON D10 SYSTEMS, CAN'T USE ALL OF MEMORY
PAGSIZ==:1←PAGLOG		;PAGE SIZE
PAGMSK==:<777777←PAGLOG>&777777	;MASKS ADDRESSES TO PAGE BOUNDARY
PAGKSM==:PAGMSK#777777		;MASKS WORD ADDRESS WITHIN PAGE
NPAGS==:MEMORY/PAGSIZ		;NUMBER OF PAGES IN MEMORY

NNUMTP==:2+BIGNUM+DBFLAG+CXFLAG+DBFLAG*CXFLAG	;NUMBER OF NUMBER TYPES
NTYPES==:3+HNKLOG+1+NNUMTP+1	;NUMBER OF DATA TYPES, COUNTING RANDOM
;SEGSIZ SEGMSK SEGKSM NSEGS BTBSIZ SGS%PG BTSGGS ALPDL ALFXP ALFLP ALSPDL ALFXP ALFLP ALPDL ALSPDL

;;;	IF1

SEGSIZ==:1←SEGLOG		;SEGMENT SIZE
SEGMSK==:<777777←SEGLOG>&777777	;MASKS ADDRESSES TO SEGMENT BOUNDARY
SEGKSM==:SEGMSK#777777		;MASKS WORD ADDRESS WITHIN SEGMENT
NSEGS==:MEMORY/SEGSIZ		;NUMBER OF SEGMENTS IN MEMORY
BTBSIZ==:SEGSIZ/40		;SIZE OF BIT BLOCKS
				;(ENOUGH BITS FOR A SEGMENT, 40 PER WORD)
SGS%PG==:NSEGS/NPAGS		;NUMBER OF SEGMENTS PER PAGE

BTSGGS==1			;GUESS AT THE NUMBER OF INITIAL BIT SEGMENTS

IFN PAGING,[
ALPDL==4*PAGSIZ			;DEFAULT TOTAL PDL SIZES
ALFXP==4*PAGSIZ
ALFLP==1*PAGSIZ
ALSPDL==2*PAGSIZ
]		;END OF IFN ITS+D20
IFE PAGING,[
ALFXP==SEGSIZ		;DEFAULT TOTAL PDL SIZES
ALFLP==SEGSIZ
ALPDL==3000
ALSPDL==1400
]		;END OF IFN D10


;;; GROSSLY DETERMINE MIN AND MAX PARAMETERS FOR EACH SPACE AND PDL


FUMBLE FFS,,[[1,[0.25,40000]]]
FUMBLE FFX,,[[PAGING,[0.2,14000]],[PAGING-1,[0.25,3000]]]
FUMBLE FFL,,[[PAGING,[0.15,2*SEGSIZ]],[PAGING-1,[0.25,SEGSIZ]]]
FUMBLE FFD,IFN DBFLAG,[[1,[0,SEGSIZ]]]
FUMBLE FFC,IFN CXFLAG,[[1,[0,SEGSIZ]]]
FUMBLE FFZ,IFN DXFLAG,[[1,[0,SEGSIZ]]]
FUMBLE FFB,IFN BIGNUM,[[PAGING,[3*SEGSIZ/4,2*SEGSIZ]],[PAGING-1,[0.2,SEGSIZ]]]
FUMBLE FFY,,[[PAGING,[SEGSIZ/2,6000]],[PAGING-1,[SEGSIZ/2,3*SEGSIZ]]]
FUMBLE FFH,IFN HNKLOG,[[1,[0,2*SEGSIZ]]]
FUMBLE FFA,,[[1,[40,SEGSIZ]]]
GRUMBLE PDL,,[[1,[200,1400]]]
GRUMBLE SPDL,,[[1,[100,1400]]]
GRUMBLE FXP,,[[1,[200,1000]]]
GRUMBLE FLP,,[[1,[20,200]]]
;IB.ALARM IB.TIMER IB.PARITY IB.FLOV IB.PURE IB.PCPURE IB.SYSUUO IB.AT3 IB.AT2 IB.AT1 IB.DEBUG IB.RVIOL IB.CLI IB.PDLOV IB.LTPEN IB.MAR IB.MPV IB.SCLK IB.1PROC IB.BREAK IB.ILAD IB.IOC IB.VALUE IB.DOWN IB.ILOP IB.DMPV IB.AROV IB.42BAD IB.C.Z IB.TTY IB.PDLOV IB.MPV

;;;	IF1


;;; ********** INTERRUPT BITS **********

IFN ITS,[

;;; THESE NAMES SHOULD BE PHASED OUT IN FAVOR OF THE ITS-STANDARD %PI SERIES.

;;; LISP SETS ITS INTERRUPT MASK (.MASK USET VARIABLE) ONLY FROM
;;; THE CONTENTS OF LOCATION IMASK, WHICH INITIALLY CONTAINS STDMSK.
;;; DEPOSITING DBGMSK THERE BEFORE STARTUP DISABLES ALL INTERRUPTS
;;; EXCEPT TTY AND PDL OVERFLOW, SO THAT DDT WILL TRAP ILOP, MPV, ETC.

IB.ALARM==200000,,	;  REAL TIME CLOCK (ALARM CLOCK)
IB.TIMER==100000,,	;  RUN TIME CLOCK
IB.PARITY==1000,,	;+ PARITY ERROR
IB.FLOV==400,,		;  FLOATING OVERFLOW
IB.PURE==200,,		;+ PURE PAGE TRAP (WRITE INTO READ-ONLY)
IB.PCPURE==100,,	;+ PURE INSTRUCTION FETCH FROM IMPURE
IB.SYSUUO==40,,		;+ SYS UUO TRAP
IB.AT3==20,,		;  ARM TIP BREAK 3
IB.AT2==10,,		;  ARM TIP BREAK 2
IB.AT1==4,,		;  ARM TIP BREAK 1
IB.DEBUG==2,,		;  SYSTEM BEING DEBUGGED
IB.RVIOL==1,,		;+ RESTRICTION VIOLATION (?)
IB.CLI==400000		;  CORE LINK INTERRUPT
IB.PDLOV==200000	;  PDL OVERFLOW
IB.LTPEN==100000	;  LIGHT PEN INTERRUPT
IB.MAR==40000		;+ MAR INTERRUPT
IB.MPV==20000		;+ MEMORY PROTECTION VIOLATION
IB.SCLK==10000		;  SLOW CLOCK TICK (.5 SEC)
IB.1PROC==4000		;* SINGLE INSTRUCTION PROCEED
IB.BREAK==2000		;* .BREAK EXECUTED
IB.ILAD==1000		;+ ILLEGAL USER ADDRESS
IB.IOC==400		;+ I/O CHANNEL ERROR
IB.VALUE==200		;* .VALUE EXECUTED
IB.DOWN==100		;  SYSTEM GOING DOWN OR BEING REVIVED
IB.ILOP==40		;+ ILLEGAL INSTRUCTION OPERATION
IB.DMPV==20		;+ DISPLAY MEMORY PROTECTION VIOLATION
IB.AROV==10		;  ARITHMETIC OVERFLOW
IB.42BAD==4		;* BAD LOCATION 42
IB.C.Z==2		;* ↑Z TYPED WHEN THIS JOB HAD TTY
IB.TTY==1		;  INTERRUPT CHAR TYPED ON TTY

]		;END OF IFN ITS
IFN D10,[
IB.PDLOV==AP.POV	;  PDL OVERFLOW
IB.MPV==AP.ILM		;+ MEMORY PROTECTION VIOLATION

SA% STDMSK==AP.REN+AP.POV+AP.ILM+AP.NXM+AP.PAR
SA$ STDMSK==<404,,230000>
]		;END OF IFN D10

;;; ********** I/O CHANNEL ASSIGNMENTS **********


;;; PAGE 376 IS RESERVED FOR COPYING (SEE IP1), AND 377 FOR DISUSE.
;;; (THE DISUSE AS TO DO WITH AN OLD HARDWARE BUG IN BLT.)
;;; ON AI, PAGE 375 IS FOR MAPPING PAGE 0 OF THE DISPLAY SLAVE.

IT$	P6=MEMORY-3*PAGSIZ	;PAGE 0 OF PDP6 SLAVE IS MAPPED INTO PDP-10 MEMORY

]		;END OF IF1
;TOPN BOTN NPURTR NIOCTR N2DIF NPRO %LOSEG %HISEG FIRSTLOC STDLO STDHI CURSTD STDLO STDHI CURSTD


;IFE <ITS+TENEX>*USELESS,	NPGTPS==0
IFE 0,	NPGTPS==0
TOPN==0
BOTN==0
.XCREF TOPN BOTN
	NPURTR==0
	NIOCTR==0
	.XCREF PURTR1 NPURTR NIOCTR

N2DIF==0
NPRO==0+1		;NUMBER OF INTERRUPT PROTECTION REGIONS
			;NOTE DEFN OF PRO0 IN MACS FILE
.XCREF NPRO


IFN D10,[
HS$	.DECTWO HSGORG	;DEC TWO-SEGMENT RELOC OUTPUT
HS%	.DECREL		;ONE SEGMENT ASSEMBLY
IFN PAGING, LOC 140	;FOR PAGING ASSEMBLY NEED ABSOLUTE ADDRESSING
%LOSEG==-1		;INITIALLY START IN LOW SEGMENT
%HISEG==0		;START AT 0 RELATIVE TO HIGH SEG ORIGIN
]		;END OF IFN D10

IFN ITS, IFDEF .SBLK, .SBLK	;EVENTUALLY FLUSH "IFDEF .SBLK"
20$	.DECREL			;FOR TOPS-20 NEED DEC RELOCATABLE FORMAT
20$	LOC 140			;BUT FORCE ABSOLUTE ADDRESSING
.YSTGWD				;STORAGE WORDS ARE OKAY NOW



FIRSTLOC:

IFN D10,[
HS$ HILOC==.+HSGORG			;HISEG GENERALLY STARTS AT 400000
HS% HILOC==.
;;; FOR DEC-10, FIRSTLOC AS LOADED WITH RELOCATION MUST BE
;;;		STDLO+M*SEGSIZ
;;; AND SIMILARLY HILOC WHEN LOADED MUST BE
;;;		STDHI+N*SEGSIZ
;;; FOR INTEGRAL M AND N.  INIT WILL ENFORCE THIS IN ORDER
;;; TO PRESERVE SEGMENT BOUNDARIES CORRECTLY.
;;; CURSTD IS THE STDXX FOR WHICHEVER IS THE CURRENT SEGMENT.
STDLO==140		;SIZE OF JOB DATA AREA
STDHI==10		;VESTIGIAL JOB DATA AREA
CURSTD==STDLO		.SEE $LOSEG
]		;END OF IFN D10
IFN PAGING,[
STDLO==0
STDHI==0
CURSTD==0
]		;END OF IFN PAGING

IFN PAGING, BZERSG==0		;BEGINNING OF "ZERO" SEGMENT(S)
IFE PAGING, BZERSG==FIRSTLOC-STDLO


;GOINIT GOINI7 SUSCON LISPGO LISPSW SUSFLS KA10P

SUBTTL	FIRST LOCATIONS (41, GOINIT, LISPGO); UUO AND INTERRUPT VECTORS

LOC 41
	JSR UUOH		;UUO HANDLER
10X	WARN [TENEX INTERRUPT VECTOR?]

LOC FIRSTLOC
GOINIT:
IT$	.SUSET [.S40ADDR,,[TWENTY,,FORTY]]	;SET .40ADDR
	MOVEI A,READTABLE
	MOVEM A,VREADTABLE
IFN USELESS,[
	MOVE A,[RCT0,,RCT]
	BLT A,RCT+LRCT-1	;RESTORE READ CHARACTER SYNTAX TABLE
]		;END OF IFN USELESS
	MOVEI A,TTYIFA
	MOVEM A,V%TYI
	MOVEI A,TTYOFA
	MOVEM A,V%TYO
	MOVEI A,TRUTH
	MOVEM A,VINFILE
	SETZM VINSTACK
	SETZM VOUTFILES
	SETZM VECHOFILES
	MOVEI A,QTLIST
	MOVEM A,VMSGFILES
IFN USELESS&ITS,[
	MOVEI T,IB<MAR>		;RESET THE MAR BREAK FEATURE
	ANDCAM T,IMASK
	.SUSET [.SAMASK,,T]
	.SUSET [.SMARA,,R70]
]		;END OF IFN USELESS
	MOVEI A,OBARRAY
	MOVEM A,VOBARRAY	;GET BACK TOPLEVEL OBARRAY
	SETZM V%PR1
	SETZM VOREAD
	SETZM TLF
	SETZM BLF		;??
	SETZM UNRC.G		;CLEAR STACKED NOINTERRUPT STUFF
	SETZM UNRRUN
	SETZM UNRTIM
	SETZM UNREAR
	SETZM TTYOFF
	JSP A,ERINIT
GOINI7:	SETZB A,VERRLI		;NULLIFY ERRLIST
	PUSHJ P,INTERN
	JUMPE A,LISPGO
	PUSHJ P,REMOB2		;GET STANDARD COPY OF NIL ON OBLIST
	JRST GOINI7

;;; HERE IF NOT STOPPING AFTER A SUSPEND
SUSCON:	MOVEI A,TRUTH		;RETURN T RATHER THAN NIL
	MOVEM A,-1(FLP)
	;;; FALL INTO LISPGO
LISPGO:	SETOM AFILRD		;START HERE ON ≠G'ING
IT$	.SUSET GOL1		;SET .40ADDR
IT$	.SUSET GOL2		;GET INITIAL SNAME
20$	RESET			;RESET OURSELVES ON STARTUP
	JRST 2,@LISPSW		;ZEROS OUT PC FLAGS, AND TRANSFERS TO LISP

IT$ GOL2:	.RSNAM,,IUSN 	;KEEP THESE ON SAME PHYSICAL PAGE
IT$ GOL1: 	.S40ADDR,,.+1
IT$ 		TWENTY,,FORTY		


LISPSW:	%ALLOC		;ALLOC CLOBBERS TO BE "LISP"
SUSFLS:	TRUTH		;NON-NIL MEANS FLUSH SHARABLE PAGES BEFORE SUSPENDING
KA10P:	0		;NON-ZERO ==> KA PROCESSOR (AS OPPOSED TO KL OR KI)

;TWENTY THIRTY FORTY UUOGLEEP JPCSAV


IFN ITS,[
TWENTY==:20		;VARIOUS PLACES OFFSET FROM TWENTY ARE USED BY DDT
THIRTY==:TWENTY+10	;RECALL THAT THE LEFT HALF OF .40ADDR IS THE ".20ADDR"
;;;	ADDRESSES IN THE 20 BLOCK, SWIPED FROM DDT ORDER
;;;	25	HOLDS "." DURING A USER TYPEOUT INSTRUCTION
;;;	26	CONDITIONAL BREAKPOINT INSTRUCTION
;;;	27-30	.BREAK 16,'S FOR RETURNING FROM 26
;;;	31	INSTRUCTION FOR BREAKPOINT WHICH DIDN'T BREAK
;;;	32-33	JRST'S TO PROGRAM FROM 31, OR DATA FOR INSTRUCTION IN 31
;;;	34	INSTRUCTION BEING ≠X'D
.SEE MEMERR
.SEE UUOGL2
;;;	35-36	.BREAK 16,'S FOR RETURNING FROM 34
.SEE $XLOST
.SEE UUOGL2
;;;	37	HOLDS ≠Q DURING A USER TYPEOUT INSTRUCTION
.SEE PSYM1


FORTY:	0			;.40ADDR USER VARIABLE POINTS HERE
	JSR UUOGLEEP		;SYSTEMIC UUO HANDLER
	-LINTVEC,,INTVEC	;SYSTEMIC INTERRUPT HANDLER

;;; THAT'S SYSTEMIC, NOT NECESSARILY SYSTEMATIC!!!

;;; ITS PASSES THE BUCK TO THE USER ON UUO'S 0 AND 50-77.
;;; THEY TRAP THROUGH THE .40ADDR, NOT NECESSARILY 40;
;;; SINCE LISP TREATS THESE AS ERRORS, WE CAN AFFORD TO SAVE
;;; THE JPC AND OTHER GOODIES HERE.

UUOGLEEP:	0
	.SUSET [.RJPC,,JPCSAV]
	JRST UUOGL1

]		;END OF IFN ITS
JPCSAV:	0
;NSFC NSFC NSFC

SUBTTL	SFX HACKERY

;;; SFX MACRO TELLS WHERE A LONG PIECE OF SEMI-CRITICAL (MAY BE QUIT
;;; OUT OF, BUT MUST NOT PERMIT USER INTERRUPTS IN) CODE MAY BE MUNGED
;;; IF INTERRUPTED IN THE MIDDLE SO THAT WHEN DONE IT WILL RETURN TO
;;; THE INTERRUPT HANDLER. SUCH CODE INCLUDES ARRAY SUBSCRIPT
;;; COMPUTATIONS (SINCE AN INTERRUPT COULD DISPLACE THE ARRAY)
;;; AND ALL CODE WHICH MODIFIES THE SPECIAL PDL.

NSFC==0		;COUNTER FOR MACRO SFX
.XCREF NSFC

IFE PAGING,[

DEFINE SFX A/
SFSTO \.-FIRSTLOC,\NSFC,[A]
NSFC==NSFC+1
	A
TERMIN

DEFINE SFSTO PT,NM,IN
DEFINE ZZM!NM
FIRSTLOC+PT
TERMIN
DEFINE ZZN!NM
IN
TERMIN
TERMIN

]		;END OF IFN PAGING


IFN PAGING,[

DEFINE SFX A/
SFSTO \.,\NSFC,[A]
NSFC==NSFC+1
	A
TERMIN

DEFINE SFSTO PT,NM,IN
DEFINE ZZM!NM
PT
TERMIN
DEFINE ZZN!NM
IN
TERMIN
TERMIN

]		;END OF IFN PAGING


;;; THE ZZM AND ZZN MACROS ARE EXPANDED AT SFXTBL (Q.V.)
;UNBND2 ABIND3 SETXIT SPECX AYNVSFX 1DIMS ARYGET ARYGT4 ARYGT8 1DIMF ANYGET 1DIMD ADYGET 1DIMZ AZYGET SPSV

;;; **** ALL USES OF THE SFX MACRO MUST APPEAR ON THIS PAGE ****

   SFXPRO
10$ UNBD2A:
10$	POP FLP,R		   ;Restore R
UNBND2:	MOVE TT,(SP)
	MOVEM TT,SPSV	;ABOUT LOADING TT WITH SPSV, SEE UNBIND
	MOVE TT,UNBND3
SFX	POPJ P,

ABIND3:	PUSH SP,SPSV
SFX	POPJ P,

SETXIT:	SUB SP,R70+1
SFX	JRST (T)

SPECX:	PUSH SP,SPSV
SFX	JRST (T)


AYNVSFX:			;XCT'ED BY AYNVER
SFX	%WTA (D)

1DIMS:	JSP T,AYNV1		;1-DIM S-EXP ARRAYS COME HERE
ARYGET:	ROT R,-1		;COMMON S-EXP ARRAY ACCESS ROUTINE
	ADDI TT,(R)
ARYGT4:	JUMPL R,ARYGT8
	HLRZ A,(TT)
SFX	POPJ P,

ARYGT8:	HRRZ A,(TT)
SFX	POPJ P,


1DIMF:	JSP T,AYNV1		;1-DIM FULLWORD ARRAYS COME HERE
ANYGET:	ADDI TT,(R)		;COMMON FULLWORD ARRAY ACCESS ROUTINE
	MOVE TT,(TT)
SFX	POPJ P,


IFN DBFLAG+CXFLAG,[
1DIMD:	JSP T,AYNV1		;1-DIM DOUBLEWORD ARRAYS COME HERE
ADYGET:	LSH R,1			;COMMON DOUBLEWORD ARRAY ACCESS ROUTINE
	ADDI TT,(R)
KA	MOVE D,1(TT)
KA	MOVE TT,(TT)
KIKL	DMOVE TT,(TT)
SFX	POPJ P,
]		;END OF IFN DBFLAG+CXFLAG


IFN DXFLAG,[
1DIMZ:	JSP T,AYNV1		;1-DIM FOUR-WORD ARRAYS COME HERE
AZYGET:	LSH R,2			;COMMON FOUR-WORD ARRAY ACCESS ROUTINE
	ADDI TT,(R)
KA	MOVE R,(TT)
KA	MOVE F,1(TT)
KA	MOVE D,3(TT)
KA	MOVE TT,2(TT)
KIKL	DMOVE R,(TT)
KIKL	DMOVE TT,2(TT)
SFX	POPJ P,
]		;END OF IFN DXFLAG

   NOPRO

SPSV:	0	;IMPORTANT TO SPECPDL BINDINGS
			.SEE $IWAIT

;;; **** THERE MUST BE NO MORE USES OF THE MACRO SFX BEYOND HERE ****
EXPUNGE SFX SFSTO
;INTFLG NOQUIT UNREAL REALLY ERRSVD IMASK LFAKP LFAKFXP FAKP FAKFXP CMUP MONL6P UPIINT CCOCW1 CCOCW2 TENEXP VTS20P INTPC1 INTPC2 INTPC3 PDLSVT SUPSAV LV2SVT LV2SVF LV2ST2 LV3SVT LV3SVF LV3ST2 DSMSAV CINTAB CINTSZ

SUBTTL	INTERRUPT FLAGS AND VARIABLES

;;; INTFLG INDICATES WHETHER IN INTERRUPT IS PENDING:
;;;	 0 => NO INTERRUPT
;;;	-1 => USER INTERRUPT PENDING (STACKED IN INTAR)
;;;	-2 => ↑X QUIT PENDING, DON'T RESET TTY
;;;	-3 => ↑G QUIT PENDING, DON'T RESET TTY
;;;	-6 => ↑X QUIT PENDING, DO RESET TTY
;;;	-7 => ↑G QUIT PENDING, DO RESET TTY

INTFLG:	0

;;; MAY NOT ↑G/↑X QUIT OR ALLOW USER INTERRUPTS IF NOQUIT NON-ZERO
;;; NON-ZERO IN LH MEANS GC IN PROGRESS; IMPLIES
;;;	PDL POINTERS AND NIL MAY BE CLOBBERED
;;; NON-ZERO ONLY IN RH MEANS PDL POINTERS AND NIL ARE OK

NOQUIT:	0
¬
;;; MAY NOT ALLOW "REAL TIME" INTERRUPTS (CLOCK AND TTY) WHEN
;;; UNREAL IS NON-ZERO. MUNGED BY THE FUNCTION NOINTERRUPT.
;;;	0 => ALL INTERRUPTS OKAY
;;;	-1 => NO INTERRUPTS OKAY
;;;	'TTY => ALARMCLOCK OKAY, TTY NOT OKAY

UNREAL:	0

REALLY:	0	        ;IF NON-ZERO, THE ADDRESS OF A PDL SLOT FOR THE
			;UNBINDER TO UNBIND A SAVED UNREAL INTO.
			;SO THAT UNWPR1 CAN KEEP UNREAL SET WHILE BILDING IT.

.SEE WIMUNB
.SEE UNWPR1

ERRSVD:	0	.SEE ERRBAD

;;; INTERRUPT MASK IS ALUAQS IJITIALIZED FROM THIS WORD.
;;; FOR ITS, THIS IS THE .MASK (AND .MSK2) WORDS.
;;; FOR TOPS10 AND CMU, THIS IS THE APRENB WORD.
;;; FOR D20, THIS IS THE CHANNEL ENABLE WORD
;;; DEPOSITANG DBGMSK INTO IT BEFORE STARTUP CAN AID DEBUGGING.
;;; FOR ITS AND D20, IMPURE LISPS WILL HAVE DABUG MASKS IN THESE
;;; LOCATIONS; THE PUBIFY ROUTINE INSTALLS THE STANDARD MASKS.
.SEE PURIFY
.SEE DBGMSK

IFN <D10+D20>, OIMASK:	0 ;HOLDS OLD INT MASK WHEN INTS ARE DISABLED
SA% INTMSK:
IMASK:	STDMSK			;INTERRUPT MASK WORD
IT$ IMASK2:	STDMS2		;ITS HAS TWO INTERRUPT MASKS


LFAKP==5			;MUST BE LONC ENOUGH FOR USES BY
LFAKFXP==6			; PDLOV, ERINIT, AND PURIFY
FAKP:	BLOCK LFAKP		;FAKE REGPDL, FOR USE BY PDLOV AND ERINIT
FAKFXP:	BLOCK LFAKFXP		;FAKE FIXPDL, FOR USE BY PDLOV AND ERINIT

IP$ VALFIX: 0			;-1 --> VALRET 'S@)I∪≥∞N↓∪&A%∃β→→2↓αA
∪a≥+~~)∪(H∩$∩∩]'∃
A-β1')$~(~∃∪
8Aλb`16~∃π5+ t∩@∩∩wπ5*A≠∨9∪)∨$|~∃∪
∀A'β∪0Y6~∃5∨≥_m@t∩`∩ll[→Y_A≠=≥∪)∨HA∨$A	))I }~∃t∩w≥⊂A∨A%
A'¬∪_~∃t∩w≥⊂A∨A%
≤AλD`~∀~(vvvA%A≥∨8[5%<XA)⊃%&Aπ∨9)β∪≥LA)⊃
↓β		%∃'&A∨_AαA+M$['U!!→∪∃λ~∀vlvA∪≥Q%%+A(A!%=π''=$\@AQ⊃
A→%' A'e')~↓∪≥)I%+!(↓⊃β≥	1$~∀lvvA/%→_A∂%-
A∪PAβ≥2↓∪≥)I%+!(↓→∪' ↓	∨'8O(A!I∨π'LA∪)'∃→\AM
A∪9(`\~(~∃+!%∪≥(t$`~∀~)∪
≤A⊂d`Y64∀vvv↓)∨!&4d`A∪9)%%U!(A-¬%∪β¬1&~∀4∀vvv↓
→β∂LA')U A¬2↓β→→∨Aβ≥λ↓'+'!∃≥λ~∃
π∨π.Dt∪ππ=εb∩wQQSfA]←eIf↓[CrA	J@Ee∃[←IK1KHDA¬hACY1←GCi%←\Ai%[JXA¬]HACP~∃ππ=π.dt%ππ∨εH∩vAgQCeh[U`AMe=ZAgkMaK]g%←\XAQ↑ACG
←k]h↓M←d@Da0↑dA0AIS→MKeK9GKf~))≥a t∩`$wβYg<AgKh↓k`ACLACE←YJ~∃-Q&da h@`@∩m≥←\Z@ASLAMsgiK4AQCf↓iQJAYSeik¬XA)KI[S]C0A'kaA←eh~(~∀vvlA¬→∨
⊗A∨↓)⊃%∀A→∨π¬)∪∨≥LA∪≤A]⊃∪π⊂↓)⊃
AAεA∪&↓')∨%∃λA∨≤↓β≤A∪9)%%U!(\~(vvvA=≥
A→=πβ)∪=≤A
∨HAβπ A∨AQ∨!&ZH`O&AQ⊃%
↓→-1&~∃∪9)!εbh∩`~∃%≥)!εHt∩`~)∪≥)!ft∩`4∀~∀vlvA)5!∨%βI2A→∨
β)∪∨9&A+'∃λA¬2↓∪≥)I%+!(↓⊃β≥	1%&~)!	→'Y(t∩`$w+'⊂A¬2@⊃!	→∨XA)≡AMβ-
A¬εA(A]⊃∪→
↓≠+≥∂%≥∞A)!
A∪≥Q!	_~)'+!'¬,t@`$∩∩w+MλA¬dA∪≥)M+ ~∃1,e'-Pt∩`∩$∩w→Y_@d↓!β%β5)%LtA'βY
A(~)→,e'Yt∩`$∩∩v∩$@@@@↓'β-
↓~∃→Xe'(dh∩`∩∩$v∩∩@@@A'∃π∨≥λ↓'β-
↓(~∃→Xg'-(h∩`∩∩$w→-∃_@fAAβ%β≠∃)%&hA'β-∀A(~∃1,g'-_t∩`∩$∩v∩∩@@@AMβ-
A_~∃→,M'(dt$`∩∩∩l∩∩@@@A'
∨≥λAMβ-
AP~∃	'5'β,t$\∩∩∩m!∨∪≥Q$A∪9)≡A'5β→_AM)βπ⊗↓+'λ↓¬2A	M≠∪≥(4∀∪¬→=π⊗@b@∩∩w)<A¬
AMβ
X↓¬+(@PA'⊃∨U→λA¬∀A≠β1%≠+~A⊃!)⊂4∃∪(J↓π≤]5`t∩`∩$∩w/⊃∃%
A)<A1∪PAβ
)∃$A=44∀~∀vlvAβ&↓))2A%≥)%I+!(A
⊃β≥≥∃_A≠+M(A¬
↓	3≥β5∪πβ→12Aβ→1∨πβ)∃λXAβ9λA)⊃∃%
AβI
~∀vlvA
]$Aπ!β≥≥1&A)⊃¬≤A)⊃∀A)∨)¬_A!∨M'∪¬→∀A≥+≠	$A∨_A∪≥)∃%%+!PAπ⊃βIβπ)I&X~∀lvvAα↓)β¬→∀A∪&AU'λAQ≡A')=%
A)!
A∪≥→∨%≠βQ∪∨≤\A)⊃
↓)β¬→∀A∪&@Dp\A/=%	&A1∨≥∞\4∀vvv↓αA5I≡A≥Q%2A∪LA+≥+MλXA9∨≥5I≡A⊃βLA∪≥)∃%%+!PAπ⊃βIβπ)H\@A∪_A)⊃
↓)β¬→∀~∀vvlA≥)I2A∪&↓≥∂βQ∪-
X↓)⊃≤↓)⊃
A
⊃β≥≥∃_A∪&↓β''∪≥≥λA→∨$A'=≠
A∨Q⊃$AU'
\~(~∀wπ!β≥≥0Aβ''%∂≥≠9)&A
=$A≥∨8[')β9	β%λ }RA∪9)%%U!)&~(~∃π∪9)β∧t4∃)∪π5β @]Q∪εCπ=	
~∃I!βP@bp\4x\[π%≥)β∧xX@`∩$∩w∪≥%)∪β→12A+≥U'λ~)π∪≥)M4zz\5π∪≥)¬∧~∃:$∩w≥⊂A∪
≤↓λd`∩4∀~∃∪→≤A'β%_Y6~)'β∪→5β∪_t%¬→∨π,@fd\$w
∨$↓≠β∪_↓++≡~):∩w9λA∨↓∪
≤AMβ∪_~(_w')Q3.bAM))3.HA'))e_bA'Q)3_d↓'))3∧bA')Q3αdA
π∨εb↓ππ∨εHA1βπQ.A1β
)_A'Q	)∪.↓'βπ)\bA'β
).dAMβπ).LA'βπQ.hA'¬π)_b↓'βπ)0dA'β
)_fAMβπ)_PA+∪'Qβ⊗A∂
%'$AA	→') A!	→M)αA!⊃→')∧↓!	→'Qε~∀~(~∃'+	))_@↓	
∪9∪)∪∨9&A∨↓))2AM)β)+LA/∨%⊃&~∀~)∪
≤A%)&Y64∀vvv↓∪≥∪)%β_A)Q2A')¬)+&A%&Aβ&↓
∨→→=/&t~(vvv∪¬π)∪-¬)∪∨≤↓π⊃β%Lt~∀vlv∩∪=[=_X↓=≤[=hXA=85=>XAM!βπ
0@x@|P@R@↓vA|AI+¬∨+P@Aπ$4∀vvv$∪→¬%¬π↔(A%¬%¬π↔(4∀vvv%∪≥)I%+!(↓π⊃β%Lt~∀vlv∩∪=[=⊂X↓=⊗XAy_XA=8[=4X↓=8[=|XA'!¬π
~∀lvv∩∪y⊂Aβ≥⊂A'!β
A	≡↓≥∨(A%≥)%I+!(~(vvv∪M!βπ
↓β≥λA	βπ↔'Aβπ
A=+)!+PA∪≤A%≠β∂
↓≠∨	
0Aβ→_↓∨)⊃I&A∪≤↓β'π∪$\~∀vlv∪β→0Aπ⊃βI&Aπ!≡A∪≤↓!∩A≠=	
@Q∃π⊃≡A]⊃≤AQ3!λ$XA1
!(AI+¬∨+PA	∨M≤O(A∃π⊃≡\4∀vvv4∀vvv↓%πβ1_A)⊃¬(A)⊃∀A)/1-
Aπ!β%βπQ$A∂I∨+!&↓β%
t4∀vvv%=A=∧[=Ay⊗[=_↓=≤[=HA=([y4A=%	%βπ↔∃(A=8↓=<A=|~∀vvl∪α[4Q+!!∃$AπβM
RXA∧[t@Q1∨/$↓πβ'
$~∀vvl∩`Zr4∀vvv$B@D@@H@JL@N@0@\@tv@}AA8A@↓xA|~(vvv∩(@V@Z↑@zAxA>~∀lvv∩x|@P@$AvA|↓→¬%β
↔(AI¬%βπ-(~∀lvv∪=≤A=&~(vvv∪y∀A=∩4∀vvv%β→)≠=	
~∀lvv∪=4~∀vvl∪%+¬=+(~∀lvv∪'Aβπ
Ay⊂~∀]M
@KQ∞~∀∪M))3.DzztdLd`d`0Xd`d@dd∩∩m')β)U&A/∨I	&A
=$A≥∨I≠β_A5∨	
~(∪'))e.dzzhdfddH`XXdH`dfd4∀∪')Q3_bzttdfd@d`XXH`d`d@∩∩w'Qβ)+&↓/∨%	LA
∨$↓→∪≥
↓≠∨	
4∀∪')Q3_dzttdbd@d`XXHd`ddH~∀∪'Q)3αbtzt`dHdddX0ddddHd∩∩wM)β)+LA/∨%⊃&A
∨HAβ→→=ε~∀∪M))3αHzztfH`ddd0X`d`Hdd~∃t∩∩w9λA∨↓∪
≤A%)&~∀4∃∪
≤↓λd`Yl~∀vvlAπ←]Qe←X[
QCeC
iKd[=kiakP[π←]Qe←X@4Aio↑↓ESif↓M←dA∃CGPA
←]ie=XAGQ¬eCGi∃d~∀vlv@@`ZASO9←eJX~∀vvl@@b@4AaeS9hA=00@@~∀lvv@@H@ZA←Uiakh↓k][←⊃SMSK⊂X@@~(vvv@f@ZAMS[kY¬iJAM=e[Ch↓CGiS=\~∃%¬	∪0@P~∀∪π
∨εbzttbbbDbbbdLfdbdLbbbb4∀@@∪
π∨εdtztbbDbbbbDbfbbDb```@~∃%β⊃∪0@p4∀vA'∃
Aππ=π.bA¬≥λAπ
∨π.b4∀~∀vlvA
←UdAGY¬ggKf↓←LAo¬WJ[k@AG←]Qe←X~)1βπ)\zzu)PK/↔-)(K/-≤W)(∃/↔ WQ(K/↔∧~∃1β
)_zzi)(K/-~∃'Q	)∪.tz`∩∩m')β≥⊃β%λAQ%≠∪9β_A∪9)%%U!(A/=%λ@Z↓]←hAIKCYYdAkgK⊂B~∃)%π≠β ↓w')	Q∪.z{M)	)∪\Vxc>pfjZ]Q∪εCπ=	
|⎇x~∃:∩$w≥λ↓∨A∪→≤Aλd@~∀~∃%
≤A'¬∪_Y64∃'βπQ.bzzhnnnn\nnnnLn`~∃Mβπ).Hzzt`L````@`j``@~∃'β
).fztt```@``dh@```~)'βπ)\hzzt@````Td```@`~∀~)'βπ)0bzzt\njbn\jnnf\`~∃'¬π)_dtzt``@````@````4∃'βπQ_fzzh````@````@``~∃Mβπ)_Pzzt`@````H````@~∃:∩$w≥λ↓∨A∪→≤A'β%_~∀~(~∀~∀4∀~∀~)'+¬)Q_∪≥Q%∪&↓)≡A-¬%∪∨+LA%∨+Q∪≥&↓πβ→→∃λA¬2↓∃'$~(~∃+∪M)β⊗t$`∩∩wM)βπ⊗↓+ @Q¬π)+β1→2XAE++
$AαA+M$A∪9))%I+!(~(∪∃%'PA+∪'Q⊗b~∀4∃∂π%M$t∩`$∩w∂ε↓%')=%
\A
→β≥LA+ A)+'(A	
∨%∀Aβ≤~(∪∃%'PA∂π%M$`∩v↓β¬≥∨I≠β_A∃1∪(@!∂π≥⊂A∪&A9∨%≠β0A1∪PR\~∀4∃∪
≤↓!β∂∪9∞Y6~)!	→'Q⊂t∩`$∩vE!⊃_A'(↓⊃βπ⊗λ\A∂Q&AαA9.A!¬∂
A
=$AαADL,
	JRST PDLST0	; AND UPDATES ST AND GCST APPROPRIATELY.

IFN D20,[
PDLSTA:	0		;TEMPS FOR SAVING ACS
PDLSTB:	0
PDLSTC:	0
]		;END OF IFN D20
]		;END OF IFN PAGING

;CHNTB TMPC DPAGEL DLINEL LJOBTB JOBTB


SUBTTL	NEWIO I/O CHANNEL ALLOCATION TABLE

;;; ENTRIES:
;;;	4.9 => CHANNEL IS LOCKED FOR A PARTICULAR PURPOSE
;;;	1.1-2.9 => ADDRESS OF FILE ARRAY SAR
;;; IF AN ENTRY IS NON-ZERO BUT ITS FILE ARRAY SAR'S
;;; TTS.CL BIT IS SET, THE CHANNEL MAY BE DE-ALLOCATED.
;;; THIS ORDINARILY HAPPENS ONLY ON A QUIT OUT OF $OPEN.
;;; CHANNEL 0 (TMPC) IS PERMANENTLY LOCKED FOR USE OF THE ERR
;;; DEVICE, FOR UPROBE, ETC.  NOTE THAT ITS PUTS .OPEN
;;; AND .CALL FAILURE CODES ON CHANNEL 0 ARBITRARILY.

IFN ITS+D10, LCHNTB==:20	;NUMBER FIXED BY OPERATING SYSTEM
IFN D20, MAYBE LCHNTB==:40	;THIS NUMBER IS BASICALLY ARBITRARY

CHNTB:
OFFSET -.
TMPC::	400000,,NIL	;FIXED TEMPORARY CHANNEL
IFGE LCHNTB-.,	BLOCK LCHNTB-.
.ELSE	WARN [TOO MANY FIXED I/O CHANNELS]
OFFSET 0


;;; DEC-10 I/O BUFFER HEADERS (MUST REMAIN FIXED IN CORE)
;;; THEY ARE NAMED BFHD0, BFHD1, ..., BFHD17.

IFN D10,  REPEAT LCHNTB,  CONC BFHD,\.RPCNT,:  BLOCK 3



DPAGEL:	60.		;INITIAL DEFAULT PAGEL
DLINEL:	70.		;INITIAL DEFAULT LINEL

IFN JOBQIO,[
LJOBTB==10		;EIGHT INFERIOR PROCEDURES
JOBTB:	BLOCK LJOBTB
]		;END OF IFN JOBQIO
;TTYIF1 TTYIF2 FI.EOF FI.BBC FI.BBF TI.BFN FT.CNS F.MODE F.CHAN F.FLEN F.FPOS F.@	,↓]
≤DA]
8dA]I	,A_]↓,4∀~∀~)'+¬)Q_∪∪≥%)∪β_↓))2A%≥!+(↓
∪→
↓β%%βd~∀
∀$[]∂XY))e∪d∩$w∂εA¬∨¬∃≤↓!∨∪≥Q$~∃Q)3∪Dt∪∃'@A)(XE	∪≠&4∀∩∪)Q3∪
α$∩w!∨%≥)$↓¬βπ⊗↓)≡A'¬$~∀∩$`∩∩w%→→∂¬_A
∨HA+'HA)≡A¬ππ'L@ZA	%≠≥'%∨≤A∪LA5%<~∃))e∪dt4∃∨

M(@Z8~∀∪
$]∨ht∪≥∪0∩∩w=A
+9π)∪∨8@P}}$~∀∪
$]¬¬εht∩`X1≥∪_∩$s¬+
→%λ↓¬βπ⊗↓β⊃β%L~∀∪
$]¬¬ht∪≥∪0∩∩w¬U

%∃λA¬β
⊗A
∨I≠&~∀%)∩]¬→≤tt∪E))3¬U∩∩wA%
['
β≤A
U≥π)∪=≤~∀∪→(]π≥Ltt∪)Q3∨
α$∩wβ'M∨π∪βQλA)Q2A∨+Q!+(A→∪→
~(∪%!∃β(@f0@`∩∩$∩w+≥U'λAM→∨)&4∀∪]5∨	
thA'αJ%
¬(]
~XXd$w≠∨	∀@Qβ'
∪∩A)Q2A∪≤↓'∪≥∂1
R~∀$∩A'α⊂∪
¬(9π≠9
	(]→≤0Xd~∀%]π⊃¬≤tt∩4b∩∩w
⊃β≥≥∃_@F@!∪≥∪)%β→→2↓∪→→≥β_R~(d`H∪_]∃
≤ht∩∩]A%∪∪≤$∩w∃
8@Q
∨HAλd`↓∨≥→2$~∀d`∀∩∩∩`4∀∪]→→≤th∩Zb∩$w/
A∃1!πPA%β≥⊃∨~Aβ
π'&↓)≡A¬∀A∪→→∃∂β_~(∪]
A∨&tt$`∩∩w→∪⊃
AA∨'∪)%∨≤~∀%%!¬(@fX`∩∩∩$w+≥+MλA'1∨)&~)∪
≤A%)&WλD`Y6~(∪]	∃(tt∩%'∪1¬%(A9)Q38∩w⊃-∪π∀~∃∪(⊂∪]'9~tt∩$`∩∩wM≥β≠
Q
∪→1λA∪8R~∀b@H∪]A!≤tt$∩`∩∩m!!≤@!
∪→→∃λA∪≤$~∀∪9
≤bth~∃∪(⊂∩∩∪'%1¬∪(↓8]→∪M ]8∩m
∪→
↓≥β≠
b~∀b@H∩∩∪M∪1¬∪PA9→∪M!8~∀%]
≤Htt~∃%(H∩∩%'∪1¬%(A9∪9!+)8$w
∪→∀A≥β≠∀@d~∀D`H∩∩%'∪1¬%(A9∪98~∀∪_]%	Xtt∪¬1∨π⊗@P∩∩w)I+
A
%→
A≥¬≠&~):∩∩w∃≥λA∨_A∪
≤↓∪)&W⊂b`~∃%
≤AλH`Y6~(∪]	∃,tt∩%β'π∪$A9))e8~∃:$∩w≥⊂A∨A%
≤AλH`~∃→=εA))e∪dW1∨!∨
∧~∃∪
8A∪)&-λd`WMβ∪_Yl~∀v∪Q∩U'(Dtt~∃%(H∩∩%'))3\b∩∩wQ)2A'Qβ)+&↓/↔%	L~∀d`⊂∩∩∪π
∨εb~)'αH∩$∪'βπQ.b~∀l∪)∩]M(dtt4∃∪(H$∩∪')Q3.d~(d`H∩$∪ππ∨d~∃'∧H∩∩∪Mβπ).H~∀v∪Q∩U'(Ltt@~)'αH∩$∪'βπQ.f~∀H`H∩∩%1βπ)\~∀b`⊂∩∩∩`4∀v∪)$Y'(hht@~∃MαH∩∩%'βπ)\h~∀d@H∩∩∪M)	)∪\~∃∪(⊂∩∩∩`4∃:∩∩m≥λA=A∪
8A∪)&-λd`WMβ∪_~(]→'∀∩∪¬→=π⊗@h4∀v∩∩$`∩∩]M
AβQ≡]→ε4∀v∪βP]π⊃&ht∩`∩$wπ⊃βI!∨&~(v∪β(9→≥≤th∩`∩∩m→∪≥9+~~∀l∪β(]A∂≤tt$`∩∩wAβ∂≥U~~∀v$∩∪¬→=π⊗@b@~∀f∪1∨≥¬
∧tt∪¬1≠π⊗@D`~∃→=εA))e∪dW→∧]¬+_~∀v∪→∧]¬+_tt∩∩$s∪≥)∃%%+!PA
+≥
)∪∨≥L~∃∪
∀A'β∪0Y6~∀$∪≥∪_0Y∪≤`-=α∩wy∩∩∪yα@@EM∪∂≥β0@A∨≤4∃∪(J$∪#π≤9¬∧XY9∪_∩wy@A=λ[¬%¬⊗∩∪=@@~∃%(H∩∪Eπ≤]¬λXY∪≤@W=ε∩m=∧@Ay∧[¬%∃β⊗∩∪yε@A∂A')βPA∨
4∀∩∪∪8`W=λ0Y≥∪_$w=λ@↓∂εA'Qβ(A∨8∩∪=
4∀∩∪≥%_XY∪8`W=∞$w=@@@@@@@@@@∪=∞A⊃β%⊂A#+∪P~∃%Aβ(@LX∪≥∪0XY≥∪0∩w=⊂5=~@Q→≠%≠βPA

∃π!∨%LR~∀∩%→∪_X1→∪_∩m=≤∩∩%=≡~∀$∪≥∪_0Y≥∪_$w= ∩$∪="~)∪ J∩%∪∀`Wy$XY≥%_∩w=H@A+/I∪!
A=≤p≤$MrM↓hR&@"A⊃∀L@L
wJ%∩3F¬wUb'≠THλ
ZtR5λT⊃s@∨BDo!Pλ/+P$S*⊗⊂/∃⊂&`aT'FE∧Bdg_∃W*⊗⊗'∩f∧]o∃⊂⊂*kT$j"P∪c#∨DW*FE∧Bdg_∃W+⊗⊗$S_∃o+B]o+⊂λ**,P∪e∧Do∃P⊂**⊗P#c#βEDdS_∃o,⊗'$fα]o,⊂λ)cc*λ(jdjαDo$FB∧Ddg∃o-⊗'$f∧No-⊂⊂⊃gP*'H""*∧BMP⊂⊂∂ f*&Sb"←εB∧Dg$S⊗⊗'$S∧]o.αDDagS*)'fλ)$cd∃⊗a) PebjεB∧Dg$S⊗⊗'$S∧]o/αDDo/CE)"h⊃`j⊂≡∪ iadRUY∨⊗O↔⊗c!!*c∨∧g$f⊗'$fα]`f&λ'j$"T)P$g∩j `f∪,P*g∃ibbεB.D]bS"⊂$c⊃P)`dSεEεE∩c'⊂)Pdf⊗-CE)"h⊃`j⊂_L_⊗∧g∩f∩⊗'∩f∧]`S($ a⊃j aP
 iadRP_⊂*∩)'jcR⊂ iaRdP_[MTFE)⊃h"`jλ~_⊗∧S$f⊗⊗∪$f∧]S'kP!Se*)'S⊂/≡'∃f&∨⊂∃h⊂*'H/ ⊂∀__⊗Y
[TFEαDg$f⊗$gλ
o D]H⊂⊂/ CEDhPg↔!!⊗$gλ
o!D]W!⊂/!CE∧DdS_∃o"⊗'$fα]o"εB∧Dg$S⊗⊗$g∃o#DNo#⊂/⊃FE)"T"`j⊂V∧g$S⊗⊗'$SεE∧DS$f⊗⊗∪$f∧]W'⊂/'CE∧Dg∩f∩⊗'∩f∧]o∀⊂/(FB∧Ddg∃o)⊗$g_∃W+D]o∀⊂/)FB∧Ddg∃o*⊗'$f∧No*εEαDdg_
o+⊗⊗∩dε0+↑W	;↑V ↑W
		IN0+↑X,,NIL	;↑X ↑Y
↓	IN0+↑Z,,NIL	;↑Z
REPEAT 3,	NIL,,NIL
		QCN.BB,,NIL
		NIL,,NIL
		NIL,,IJ0+↑G	;LOWERCASE ↑G
REPEAT 11,	NIL,,NIL
		IN0+↑Z,,NIL
REPEAT <NASCII/2>-<.-FB.BUF>, NIL,,NIL
]	;END IFN SAIL
OFFSET 0
;TTYOF1 TTYOF2 FO.EOP FT.CNS F.MODE F.CHAN F.FLEN F.FPOS F.DEV F.FN1 F.FN2 F.RDEV F.DEV FO.LNL FO.PGL FO.RPL


SUBTTL	INITIAL TTY OUTPUT FILE ARRAY

	-F.GC,,TTYOF2		;GC AOBJN POINTER
TTYOF1:	JSP TT,1DIMS
		TTYOFA		;POINTER BACK TO SAR
		0		;USER MAY NOT ACCESS, SO SAY DIMENSION IS ZERO
TTYOF2:
OFFSET -.
	FO.EOP::	QTTYMOR		;END OF PAGE FUNCTION
	REPEAT 3, 0
	FT.CNS::	TTYIFA		;STATUS TTYCONS
	REPEAT 3, 0
	F.MODE::	FBT.CM,,3	;MODE (ASCII TTY OUT SINGLE)
	F.CHAN::	-1		;CHANNEL # (INITIALLY ILLEGAL)
20$	F.JFN::		.PRIOU		;JFN
20%			0
	F.FLEN::	-1		;NOT RANDOMLY ACCESSIBLE
	F.FPOS::	0		;FILE POSITION
	REPEAT 3, 0
IFN ITS+D10,[
	F.DEV::		SIXBIT \TTY\	;DEVICE
IT$	F.SNM::		0		;SNAME (FILLED IN)
10$	F.PPN::		0		;PPN (FILLED IN)
	F.FN1::
IT$			SIXBIT \.LISP.\	;FILE NAME 1
10$			SIXBIT \LISP\
	F.FN2::
IT$			SIXBIT \OUTPUT\	;FILE NAME 2
10$			SIXBIT \OUT\
	F.RDEV::	BLOCK 4		;TRUE FILE NAMES
]		;END OF IFN ITS+D10
IFN D20,[
	F.DEV::		ASCII \TTY\
]		;END OF IFN D20
LOC TTYOF2+LOPOFA
		BLOCK 4
		0		;ATO.LC		LINEFEED/SLASH FLAG
		0		;AT.CHS 	CHARPOS
		0		;AT.LNN 	LINENUM
		0		;AT.PGN 	PAGENUM
	FO.LNL::	71.		;LINEL
	FO.PGL::	200000,,	;PAGEL
	FO.RPL::	24.		;"REAL" PAGEL
OFFSET 0
			BLOCK <LOPOFA+LONBFA>-<.-TTYOF2>

;SWS ERRTL CATRTN EOFRTN PA4 INHIBIT ERRSW BFPRDP CATID CATSPC CATLIS CATUWP CATCAB CATALL CATCOM LEP1 KMPLOSES UIRTN RSXTB PNMK1 GCD.A UNBND3 SIXMK2 SAVMAR GCD.B AUNBD EXP.S ATAN.S UNMTMP FPTEM IFLT9 EQLP GCD.C ATAN.X GWDCNT GCD.D ATAN.Y GWDORG GWDRG1

SUBTTL	SUPER-WRITABLE STUFF - MEST BE SAVED UPON USER INTERRUPT;;	DONT ALLOW USER INTERRUPTS WHILE:
;;;		(1) NOQUIT IS NON-ZEBO - THIS PROTECTS GC,
;;;			RETSP, SUBLIS, AND OTHERS.
;;;		(2) INHIBIT IS NON-ZERO - THIS PBOTECDS
3;;			MANY AREAS OF SEMI-CBITICAL CODE,
;;9	↓	(CF. LOCCI AND UNLOCKI @≠β
%∨&R4∀vvv$∩PfR↓+≥%¬_A∪&↓≥∨≤[i%≡@!	β!9	&A∨8A1β
(A-β1+
R~(rvv∩$∩ZA$B&MαM→α~>∩αR"∃∧r>&:$*JJV¬!α~Vt~R&>ph(4*≥:MiHhP4)M[YαR"*α~>2dzV&::αNRV41α&M¬~εZ⊗"αP≤DY`∧r∧(U∃∃8ZB∧5(→T*∩	~2∧≥(X∃$,EaPS[74∧t⎇D	tte∀λU∃∃8ZBb∧*ZB∧J9r∧≤~H4B∧→hB¬∀X_B∧tXXB¬$tλDz¬I	∃~pQ'3KZ	→e$-*
$-⊃1λ

SqtdλtQ0*H(⊂ 
9tUλ	XH∩⊂)HK04j81λ⊃J(31+AQL¬U]H!"c`T"PP*∩ ¬ COMPILER DEPEJDS OHA↔9≠'∪≥≤A)↓
↓→≥∂Q⊂A∂4⊂vvv↓)⊃
A∃%%'PA
%β5
Aβ&↓αAπ∨9' ∩εu!αBε∀
6⊗R-⊃0⊂@ ¬εE⊃i)*'∞∧X∧]T   RESTORAT@∪∨8A
∨$↓%%'∃(∩¬π¬)%)≤βP%@%]α∩1αα(U≥∧z(∃$Ly`λλitH⊂h~⊂r	@c⊂ @∃$)'kCE"gc∀*'∃∧L∧Y`⊂DL RESTORATIK@≤A=_	α∃ly6→α%∩εB>- 4*B	!`⊂K↓↔5∧∧D
$-≥Iz$
$α3sD	qH⊃it⊂πi⊂∀"j*i∪∧A$g∩$a$j∞α   	9H
∨≤55β%≡z|A∪9⊃∪¬∪P@Q	1β2RA¬→_AM$A∪9)%%U!)&~(∩∩f@ZbXX@@@z|↓∪⊂~"L∩&Aαb1α⊗D~⊗BQ¬"ReαLrR⊗J∃*BRLhR⊗JJ≥9`%5λI`≠α	XTU4	dj¬λ∧R)@*⊂'gλ"i)'T⊂"*i∩dεG ERRSET
∩∩lAβπ%*ε"∩Ja↓
Vu∩⊗ε1⊂∧∧M~λ:D`:Q1⊂∩dε @)!
A2@∧∧`8H⊂
$∩iP ↔ORD
		; @/!⊂→αr⊃↓
-∩JN⊗ ¬U¬-9λT"∩λ)D`8p¬P$TP( ∃SH@λ\4⊃¬
¬∩∩AhK%nI∞DλU3PjI3s@⊂∃βH@∪π A/β≥Q&A))dA!%
5'πβ≤4⊂∩α∩l∩Q%¬λXA∀*ε∩I→d*Hβ"B!⊃,¬Dj⊗dP#'T⊂ aj∩hεATILπ⊂→αr⊃α∞-∩N =*	u_h!⊃⊂KX∀∧∧9α"`⊗ERNE@'LXA¬+PA≥≡AA%α['
β≤4PH$%@1→dL@λ⊃Sj$⊃Shλd∧EFERNE@'LAβ(A¬→_~∀$∩∩g∀Aa↓∃λ∧∧L2λ¬r*I⊂∧g RAAD
λCATID:∪≥%_∩∩wI⊂tAπ¬)π⊂A%	⊗:$J~&∞
"&.d
D8Q!⊂HK9IβB∧iH∀=~	→d$L8~DL@Qh∀jXU⊗4λT⊂πc⊂⊃) fbCE	CATSPC==0λ`@β↓A@%Z↓↓↓α≥α⊗∞_→B¬¬)x4-≥9→d:∧βQ1(D⊂Q(λIsQ(¬	u∩⊃*$⊂R5
4⊂∧ k⊃FA∧DB]P⊂⊂λ&b`g∩dεG)
	CATLIS=td``@@`∩v@@AεQI⊂RA∪LA!∂∪9)$AQ_
α¬∧b&NQ∧z→α∞
"≤Bλ¬⊂(zc"B(`j*kT≤¬0~bβ↓AAAα↓∪@4λλλ
YUr3HE4⊂SjH0q⊗λ!T!$
P 	S FUNCTIH∂8hP&∞ε$~ε	UβVβ#β∧∧↓↔hλλ∧λp5⊂i¬0P4J)10	
λ)$⊂(∪dg*"T⊂*'P
!cg)H#*g⊂⊂βATCH-PAGS)
	CATALL==020000	;    CATCH-AHL: RH IS FUNCTIONMF DWLεAβ%≥&~∀∪
β)π∨4zz`b@```∩l@@@A→%∨~A
∨⊂⊗BLb⊗⊃α≤z∩¬1∧"5α∞b2→1∧r>AαMαJ>≡ph(4*d*AEUjq6⊗J∃"0⊂K5%"RR$	D,TzIα∧|d
4|lT	t2∧Z*%≤-D
¬-≤∧↓PT\X	Dm≤Z7SjKE`(ZTTueV-C"A⊃+Tq(T⊃0TjJβ"C!*24U	@≥∧X∧Ne'gεV i'P∂←⊂ ⊂DL DOC OF MOST RECENT USER INT FRAME
↓	.SEE UIJT0
λ
∃%M1)∧t$QαR∩$p∞B≡LrR⊗I¬"0~¬(X∀"¬9→e$
∧
D∀HUB∧LhHUD,Dλ%J∧⊃Q hU	iT[!⊗HJj8T*¬λID`)2b.j85Q(
Jβ"C!(pqH↔B""%@)bbP⊃ab!!βE*g!∪ →P~			.SEE UNBIND	;SAVE TT
SIXEK28	0		,¬'
↓'∪1≠¬⊗~∀~)'β-≠¬$t∩∩$Y'
↓'+' Dh∩w≥∃	≤OPA¬
A%_A'∂LXA¬+PA/⊃≡↓πβ%L}~∃∂
λ]∧t$∩∩]'∃
A∂π⊃¬∧~∃¬+≥¬λh∩∩α]M
AβU≥¬∪≥⊂∩w'βY&Aλ↓
∨$A¬+≥¬∪9λ~*-BA:MPH$%:≤*∃α⊗E%nJ,j⊗6
-∩MαNL:9α>2αεJ≤hRεRεprMh$HI2N⊗*αεRεpInNε4*MαNL::Mα|1αεJ=→↓rabbex4U*:6Rm↓h$$KZV:εl)αR⊗m4*~¬"⊗%HHH%nBα;∀j¬x→e%~
I∧M~
Ir∧∀T
4LTλ∃~¬λ9e"
∀⊃PTLiJCKP⊃⊃∩`*q1(	_S∪p*A.qλ
85Q1∧	⊃4Q!QQ03
πB,α!↔t⊃∪∧
⊃r3JH4H∃*	sH⊃)j∀V(
Ih⊃4*X3β"A⊃ +ThX(⊃4*X3β"AQQpq¬hnB"!∃Tq1$λpq⊂H!"P5λ→KVεA⊃"+ThX(⊂5λ→B.uλY4∪tH~V(⊗∧
P3∃(Q"QuhHsU∞A⊗β"C!(pqHGB""%Jq1(λxq⊂PAQP5⊂)eV.B!⊃+Tq(T⊂5⊂)a.u⊃)Z∪tP*+(⊗(
h3∃1!QQuq	zQnB&↓.stI_r3H	xH∪⊂*
∩1R(85∩3id(⊃jx∀Ql$	4h⊃jx∪tQeV#"C!(uq∀Hv.B,↓Q@↓Gq6∀	F(⊃phEU2λλ	u∀T∧λ5L⊂DλS⊂5ε∀∪13*d∃04	zh⊃phEURλ	J∪QHλ~3PTDλ∪∃⊂d
R3QDλ4⊃SHv(∃⊂()∃, λ~3PQD	3S6ε∧⊃tQ*:lλ⊃j(4tl∧λqP2)D⊂tu(8(⊂P(:⊗1Hλ)ss∩$
∪t⊂*:λ∀∪
Zlλ∀	J4lh
	∃4mD
∪∃4g∧∀S ~λ)kg PeP)"⊂%aP)⊃')k⊂∀"")kλ)"$a∀P)"$S!d⊂!Si!(⊂∪eg!dβEεE"V(&~]αX∧D]U"fh⊂⊃'i⊂"V(&'b⊃FEεE⊃ab↔*R≥∧DDK)bbP⊃ab!!βE!%j∀(≥∧DBW)bbH! ej∀ abFB"k_!∞∧DDW∀bbP"U fεE⊃& j_N∧DDW∀bbP#∪ j)dV"FE&Qfk≥∧L∧DW)QbP&bSa"aεBεE*`T'iU∧BDYVXO←⊂*kT$j"Vλ∨≡X⊂∂←⊂"`T("g"λ↔ aaQiiP(∪iFE#Pb↔#$∞∧DDW∀bbP#Pb!!εB&('#∞∧DD]KXP&bPg)P'∪j⊂ P∪'g#P∀' fbH∀#$j∀P g PNBUF)
α			.SEE RINTERN
AUNBR8∧∩`∩$p∞Nε4*MαI∧26Iα
*:
&t 4*∩e"¬h%H%m
∧z→αRLj⊗Mα$*2εR*z∩,J⊂¬≤DzYD"¬(YT⎇Q(∩*H3#"A⊃ ∧W)QbP""S(BEεB)$g#∞α	αAPFNG1:
TABLU1:	0	∀~)β+≥¬_pλ$%]~εJ⊗α4∧2∧iz"∧
Yh$L@Qβ"I_Q(⊂I_qP
fK-FE&S&l⊂≥αDYQ&Rdε" IL¬')%Uβ!β∨8~∃∂%∃'&`@PI@%M∀:Jεε$*JA	∧J0∃≥J*T
∧→y`hUβ""'bg"∪c⊂$c⊃P!$cS*fFE∩c'⊂!∩cc"fK-FE#T iiX∞∧X∧]HαMINλAβ≥λ	∂%βQ% D↓∪⊂~NαJ%,≥I→t`@ PqH→3∞B)*Tu⊂α	3DRAJSFER @∨≤αα~ε&e*J∀4T~N@,8W LU*:Bαp↔:E∀h8d-∩	yb¬≥X84,,AQ%hH↔8T`(α⊂'cλ$c'⊂αIGNUM
∀~)∪ ⊃⊂LJ6NQPI0∃≥H~E-~∧εαdλβ"R(iH∩5
5λ⊂v*8q∞∞AQPP0jK1H
∧L∧]`~ERO ON BIRST @→∨= A)⊃I_∞@,yλλ a`∀RACE.
λBOOLI:∪'∃)5∧A⊂Y)(∩m
>>d*ε 2	→e≥∀U0jI3s@⊂⊃'i⊂!∪dπDE
λλ
¬)=!β' π JK⊃⊃∪@91H&∀∃∩⊃)@⊂*'hd"c"S⊂ ij⊃i$ieH''j∀)$g*⊃b⊂$cλ+$g#∩d∧E
		∩v↓∪&A∪9∪∪
α4∃∪
≤ααVN⊗d*NM⊃¬αJ&:e1h%md~VJJ,rQαB∀J2Qαd*Z,GeSλh*	E-≠¬!∪H↔:EM∧T¬R¬i≠∧u,T	u∩¬_iDl@U3#!! R1HT⊂R1ij3+⊗aQT∪∃*6nB0(Hλ⊃⊗∃*εE(∪*i[≥αc b D,TT	;FLOAT-POINT INSP	%+
)∪∨≤αα~>I∧
J&R@∧∧<,hZ$
∧βtC!+ ∧D]QdεD OF AFE BIGNUM¬

λ	∃∪→_A+π∃→β'&0A⬬I'&t∩m↔∪≥λ↓_∞→αα:E,4dλD-≤~(T"∧h)tj¬λ∧R)@*_⊂~
λ	↓	; - -xA∨
→dA⬬I →αα:E,4aQ HHα.`ε∧∂(∂∪βH
→2↓_
>→l
∀∃(Zb¬≥JXd0HαB"!↔h
`⊂∂←⊂!'U$⊂∀"∩ij$g⊃h¬ISHED BY TYOSTεR4Uα2VMβ∞A⊗α".gIK∪Gd∃r⊃*(αP ∀HERE AR@
A≤ααεJ≡_h ∃∀TC KQ)∀4rλ¬4hYα"`∪S, P@%A%π(t$p∞BJLrQ=4
∧
∀Yj2∧≤zYe%~¬	D,5EEE∀Ly
BHh*:t`(0rfA⊗α".jZq1⊂⊃'i⊂+S P!d⊃a`ING @∪≤ααNRε%*L4(LRJNQ¬~RεQλh ∀Li`¬-≤YHU≥~βλ∃→tqfDεα.sIZS03	K(∩Q*)h 
H3∪∀d
⊗3h
K4⊃(	xH⊂rλ~@εE∧BDX + =0≤A
⊃β$A%&A
∨HA
∪→∃&A>tbd4λHH%m↓h↓uyα≤BεIαM→α~>⊂∧¬%%∀	t`)⊗#"A⊃ ∧]P⊂≡P≡ @π⊃β$↓∪&A
=$A¬∨Q⊂A
∪1&Aβ9λA))d~∃%		↔εt∩@∩∩g≤
R,Dλ%∀02`⊂⊂βHARAAP	$αaα>→∧*b&Q∧2J>5¬∩∩∞α
⊂4*J$rN@3!⊗HK8∧p*Hαb⊂'∃d¬BER (BEFLπ%
A⊃π&l
16>⊂j:>Q∧JMα∩,~&∩⊗ ¬⊂hU(HE≥NB,↓⊃,p	`U ¬D VAH	+
↓≠@F↓≠A	%∂∪)&↓)≡A∀J≡"Q∧z→α∩,~& ,→D¬∧|→j@hU(I∀*nB,↓⊃,sU)X4R0d	0P4hT⊃∃4I→β#P)⊃`b$g⊃FE$c∪⊂*abS"iiVαi")'Sh≥∧Xα]i'fPg(⊂⊗H i"P∀'f`gλ'*fbT f)P∪e←FE∀"$g!R≥∧X∧B]igjT!bP'Q⊂!d T ab"T)P#'T⊂)"`Qε@
CORBP*	0	;BYTE-POIH
)HA
∨$↓%ββλαjN>Vα(4*¬yλTb¬9zU∀≤T	∃~∧)ItZ	x`hP⊃↔4
≤9→∩∧⎇$
4MD)~B¬≥JXd2∧→`λλ9tQ#!)2sPiπB,α'dg)j∀*ab$Re`∞ FMR MAKNAMTO GET NEXT BYTE
;PNBP PNBUF JCLBF ATMBF REMFL VEDBL0 DVS1 DVS2 DVSL DD1 DD2 DD3 D@D NORMF QHAT @¬≥≠'XA
βπ_A
βπ⊂Aβ∂		(A3β≥	¬(AQ'β-
↓	'β-∀A%'βY
A
'¬-
A≥Iλba
0A→¬π1¬→α-*6!α-∩J>I∧*J
∩2αVV>4qαVV%~YαVαZE%≥d
U-∃:d¬-,→JCJ¬X¬4
:H⊂
jSa%c@∪*jikλ&)ciCEαE≥N]P"$⊃P(' SbP!*Q!"a IS USED FOR VARIH∂+~αε*⊃¬~V*∩∃IαBVα*∧m≤Z5`hSαh
MH*$"P∀)$f`T,P ⊂URPOSE IS AACUMULATING P@%%_
Qαt
6⊗M∧z→αε$z6MaQ"`*q1(
)3Q⊃*)A"Ng]P$jλ$iP S)`∂ USED FMR @-¬→% ∧∧tD
5-≥λYd"¬8¬∀I→β#iVβE↔!bQP+ f∀ jεE)bbP∀ji`"S εE≥Nβ; JCL, NAMESDRIH
∂&↓∨A
%→&@!'!
∪β→→dA
∨$↓λd`A≥)∃
≤↓∃'3&$X~∧]M
@@4∩R:LhQ`≠[4λU∃∀z ∧l-:8∀<*λ:E∀Lhp¬¬∀x8U≥≤→hr`hαKThX(⊃4J)3rC!πnn`λ→Qλ∀i@P ∂N8@A
∨HA'>l)αBVα*∧m≤X4¬$Dα4hλ*1QQ*$⊃uQ*)⊂4∀d
⊂⊃(λ$cg*SP*"fT)P∞
20%	MAYBE LP@≥¬Up∃Uβ&∪@ ¬→λ	∧f`lP ¬ LPL¬¬+tztj@h  (E

IFN BIGNUM,[
REIFL:	0	;REIAINDER FLAG
VATBL0:	0	;DIVISION STUFF
DVS1:↓0
DVS2:	0
DVSL:	0
DD10∀∩@~∃	λHp∩`~)	fT$`~¬	⊃_t∩`4∃≥∨%5t∩`4⊃#⊃βPpλ%@hRα:6≥1i↓↓h*~ε≤1`%@hR~ε∞#P%@4T
≡∩
#P%@4UJε≡∩∃!`⊂K↓Q%%≤~hS@K↓Q$%≤~hS@K↓Q%∃≤~hSPK↓Q$5≤~hS@K↓Q$e∀F⊗∧4c!⊗K\izB¬∀X_DLTt	∀b∧(~4*β⊗¬b∧4H_phUQ⊃∪L,hD∧`8H∩1ID⊂R1ij3#"I_Qh∩H9α!#∃L~⊗W⊗αa&'aRP 
CL@@VdPZT∩w5+'(A!β%
A¬(A	¬' @dβ!α↑∩_h*2*≤bα3Tπ&Ee2Psλ ε¬

λ
¬+U∨⊂t∩$∩∩g↔∃ A	!∪&A+U~A'%*~	α≤z2R&<J6@-4
4z¬Iλ∃"∧x4∧d
4
∀T	∃"pQ(U∃∀z' KQ!∀U∃:@¬-,yαhTX($$3αB"!⊃.p	gSbP! S 'f@ TEMP FOR UUK HANDDER
UUOFN:	0			;POINTER TO FUNCTIH∂9∧"VJ&t9αR"*αVV>@ε∩∧dyzhUZZE≥∪!⊗hUZZE%≥dεB&↓α@
UURSV 4$`⊂∀*ZT@∃∞.A⊃+Tq(T∃0
`S*∧]b∪bigβU⊂!gg⊃&$ajλ+dj$λ*j`⊂SVλ
*-*BNYβ!∪@ ¬*jSβBKG~	0			8π∪A%_	↓*∃~⊗@"	Yt$+λ∀
Zλ⊂u
XQH∪i@⊂("&βE&*jThε5 :h\[+=⊂∩α∩m' ∩V41αRα
!α:⊗,"MαN
2& 4tλd`:H⊂
$⊃P*`∃O HANDLAR
LSWS==:.-SUS		;TOTAL LENGTH OF SU@!∃$[/%%)β¬→∀A')+→∩(LRJNQ¬*V
.8ε⊂hPβ"Ng]P∃∃
∃∃∃∃
⊂)`∀UFB @'¬)⊗⊃¬*B>→¬*N⊗I∧J0∃$X*%-¬DλTd∀h∩λZQ(
E%JJJE%@εEβ≥c#)H εF@0αα~~1∧2~eα42¬αhhb∧∀hε,D	T⊃QJ4⊂π ⊂FFX NPFBL NP@

K⊃αεB42Mα⊗αλd5BλZ∧4∀DλU∧QPYλ ¬F@-
&A:52εAα42P∀~λZE (qS∀j↓ ¬εE∀h¬BTTL	F@%∃
A'$zJε≡*α2&NαJ2b∧→hB∧ph⊂)@ ∧ ALLOC PARAMET@%&4⊂λ (αN`≥Nβ  ∀T(TTTT(TTA
I
A≥"0≥∀_xR∧dα4u
4λ¬∃∃
∃∃∃∃
∃

λ∧vv@X∧¬$DX∧q$λ4Q(
Zq1⊂⊂αY @)!
A-βI∪⊂≡Vα4∧9β`∞@'∃%&A$yαε2dz≤
HT∧83∪∀d	qC"G]]P*∩ ¬ @-¬%∪∨+LA~J,)αNR⎇∩ε≡∃¬~Bε∞-→0∩α	hU (αi⊂(∃h∧ ONE @∨↓)⊃≤)α&8hQ`≠[4λ∩∧l~)4∀HT∧~¬λUD≤X∧∃∧
p5∩	→β⊂ @ PROPERLY PROTECT@λA
_∞ 58Z"Jλβ"C!≥]U@ @πβ+$J0≤@H(∪*Zuλ∀
(αibi∃α@
A∀*2εRM2∃αz(D-∀→hr∧|aQ#@7nb"(hβ)V#⊃,⊂FFL,FFD,@

ε1
¬ )d2~	242e $hiαdQP ⊗⊃ εQ2
λ.SEE @∂ε∩$∩w∂βI
ε≡*α≤@pε&"PβP	∂$4⊂λ (αB1HjnB,↓⊃ .s	~uλ⊃J(αbP)U'i cQP ISTλ
(L2~ahK$$¬\2&bh¬3*4λ∧ g⊃⊂(' SbP g⊃⊂!$cS*fP+SβRDS)
∪
→_tα`$∩∩`.4b0≤@U3 ⊂∃βH∂%	LA→β'P~∃	∧α &~~ π M≤X¬⊗A⊃ ∧]b∪h¬BLE-PRECIS@∪∨8A¬→∨9+⊂⊗LhR≥BA_d4≠!~4-⊗B"!↔pss*	⊃0 L¬+≠¬∃%&~∃⊃0@⊂&42`∪Pα4q*K@∧DDNβDGUBL@
[↓Iπ&≤J0≤@H⊂siZ⊂ε"lλ∀"*h∪ ¬P⊂R4⊂

≥ J~4'!∪Hα".h$cg*SP λEAD@%&4⊂λ&~5I`⊂K↓⊃⊂K]8ε3('` (PNAME-P	3!∀Aβ)∨4RA",
∩-*1P@)⊂π∩∧Q εH 4↓%⊗B,
Qα	i4d|u0%D∀q5∧XHUL¬↔&~(∪

αβP%@$HI`≥≤~*2αD~*$
Jλ∧∪i→β*"i∀T@
NF@`5βP∞E@⊗c#)BD@		;L¬+≠¬∃$A>2α~2λj$`8Tc"A_QPY∞α	S@2Iβ⊂∩HH%nNβ→T)pε⊂!∪'aeiH∀"`_PLICIT RE@)U%≤A-~⊗⊃⊃Q#@7nh∀i_pπ⊂!∩h∧ IN @
Zαα6⊗εu→α-α⊃3*
λ⊃TI@d¬  (β↓6@<βtQ∧	23R)ZαfP)⊃a`AIMED.
λ∧∩]≤*∃α≡≥~P≤C⊃Q J@Tq1$λ1pl*⊃ ¬∧W∀bbP#PβE0C5
∩]M
A∂
aε@Hh ⊂Jh∧q(T⊂∧ ∃NK
∀~(p
mm¬αVJ∃∧2J,T
5$⎇(_t*∧9zT`*⊃0	)H∀ ∞ON-P@∨'%)∪-
0A%→¬)∪-
↓)≡AA
→5∧∩⊗ $zp
!QL¬P≠; MU@'PA!%M%-
↓%⊗2
"&@4T	u∀⊃0	$Sα@∞A$BJ>V<Aα:B42eHQ!∀`*⊃QTg∧X∧DB]`ISTλ
(LrB4hε≥αX∧DDNβFIXNUH
4PJ0∃∧hiC@!,α"!↔qS∪i@*fFE⊃!∩∧g∀ εFDh∩`∩∩$p∞∩≡,∩2(β"Pk∧α∧g(⊃ εC 4$`∩$KZ≤@pε`⊂LEX
DX λ∪≥A
~IPI@$⊃↔4%-	HU@HαPQdA3Pλ#⊃!_
	0		∩w	∪∂:,h4(⊃⊗HH↔9d`4∀⊂
i⊃P)`→M@¬∨	&4⊂
"dA∀`*⊃QRπ⊂)"h⊃`j⊂$∪αK@→∨≤VbX@@∩w"αYd]_Q!⊂K⊃⊃∪@9β'P(∃i"P)Pi)FE∩c'⊂↔dεPFFS(≥
_XA/βI_	αnuα~	5¬"ε
2*αP≥∀yhr∧dYhu$EQQ L@T⊃QK⊗L¬∧XαD@]iVd¬BOL BLOCKS

λ∧vvVααε∩∩∀*NMα|1α↑z(B∧)zd*∧8¬4J(αg ∀↓!+%
↓'∂≠∃_
Qα4zIα⊗~!αNαλ∀8 εE≥Nβ; MUSPλA¬∩⊗N⊗α*d*¬(YD
⊂∧k"H'i""T$g#@ THROUGH EPF@
2d4⊂λ&⊗αλd5≠!⊗HHα.s	~uβ"A_4⊃QKπ@,α!⊃,¬c$V'*fFBα	E@!→
_t∩@∩∩αw→→∨:,h4*∩⊂∧@L-λhd#P⊗↓⊂HKαq∪jXS⊃#!!l∩∧Qh##!N∧X∧DB]agfT&"dεBα@X$	EPFFZ8	0			;DUPLEP⊂~)↓≥⊂L*B4h# K⊃⊃∪@8R1sJY!"B!⊗α""'g'P(∃i"P)Vda'f∀FE$'	∧b`#⊃$≥⊂)⊃h"`jλ$#%f∪βG+!0@`∩w!+∃↔&4⊂∩∩`$∩∩`.tyαBVα(R¬≤~*0hT_ibαrXZ∧4∃5Yd4∩D
t
∀d4-∧heR¬$_)D*¬z)t`(βP&"S πTH]
∪A
~E⊃P%@$HI`≥≥→X$l@λ⊂S	@a`@&4⊂⊂∀!_T5487 L∃h:4:\hh5≤:*8T=≤≠!∪@83Q⊂∪βF CURRENT VC REG@∪∨8@Q
Y∞M∞t2P∀≥4π3λ~uλ∃*81λ∃HT@
	L¬~Z≥↓`⊂Lhε∃HicWiQiR`#BDXNUMBE@$αα0≤2λ[¬%∀∀
d4∀⊂1hZc"B(hβ+!]αa# ⊗CS	∩∩m(
ε2,)α∞⊗daα5(XTdM8@λ¬λαhλ@!1∪π& αJεR-∩0∩¬X∧q(E εE∧Qh∧VCFLSP 4`∩]π∃
A∂π5β%⊗∩m ~⊗α *Ipπe@-T¬β→+∀[π→0[
%∨4[⊂∩ε≥!6NB~∃ -↓Q c\x9T\@λ⊂λ)∪βH	&~α6~~α4∧l4hε⊂∪c#&⊂∪c# → MFFA↓_
4h∧h	@ εF@0αα0∀QSλ	@ εF@2↓_
4h⊂λλxur∪dλβa`↔HLεbA∂
(∞"v λλxur∪f4⊃pp(i`k⊂⊃a`∞AST∧A∂π@A≡∞4bAα≡≤2bAα<~NAααλ∀`)0pλ⊂⊃a`
@%-(	α≡≥"& *λx5$k∀λt:αj`∪V IRMVF GCRMPAβI!≡∞αAP@!αE≥@;8εA∂π5↔⊂⊃αM→αεJ∀
0∀q1⊂∪$ebP⊂P( ∩OP@%)dA→&≥!`∩¬IλRα∃λ∧Sjλαi*,H' fbTQ
;8εvAβI
A'βI&P⊃αLqα$X:$,
9→d:∧βtQλZH∪qD
⊂πidU$gg IHAβI%β %¬~Bε∞*`4)@4ε`≥H g" THE "PROPERTY VAH	+L@	αε∀)α4≠	e,@4h⊃λYβ'j$Sα@∞A$B∃αHYd=⊂⊂	FBα;; 6αα0≤2λ¬∩λT⊂4TH≠4k@⊂∃ibb @¬2A∂XA%Q' @1∧:J,H~"bααP4J(4∧V⊂⊂dεD OTHE@%L~∀`-β0∞d
⊂πP%Qbh⊂*∀ ae@ LπAβI%β &~qα:>$)`∩¬IλR∧Li~DLD	t(4TP+∀⊂3Q↓QL¬P≠lA%β⊃)β¬→∀Aβ%
↓_
>Q∧J0∩∧x9T\@λ⊂	dSαCE TH@ %∧
J*	iu"∧α3@⊂⊂αPS.
λ¬≡∞lZ1h→_t9αefεBαλ
)YY`~¬λ∧SiI4h∩*4⊂3@⊂⊂d∧@∪'PA+'⊂A)=¬αJ>R,~Qαiybl
IyTL~λ∧Q(_λεf`PβRO
8εvvA→+⊂~∞αI∀`9β)P#∀'bP!⊃dg#@ GC'ED,∧Aβ
⊂Aβ)∃~A>p∧¬$DQQ#@7nh⊂)I4p
 IS OF T@⊃
↓
∨%~α↓↓"~αYb¬∀J@λ¬@⊂ ∞@+4R@A<B⊗J∃β!P@'nh
DQ*g⊂$TP*$"H εUNCTION↓)≡A¬∀A!%∨Qπ)⊂~∀`-β0∞a~Q∃⊂∩iP ∀HE SAR OF TH@
A∀*ε∩R∩2*λ9t`(q0	'⊃bεE≥Nβ;	NUM @∪&↓αA2M~Aαh¬3( ¬R (GPβ%¬_
R⊗,!α:2M~Aα→jTjHβ"Ng]DD↑⊂iaddH!`λAR VALUE> FOR READ-MACRO FUL¬π)∪=_λ (αN`≥Nβ P@%=→∪&A%&A+∧"ε@$X@λλ,P ∪SGCP@%<Aβ≥λααNN≡≥∩⊗ "βC"J
Ss∩*7@∧g$S∧¬∀~(p
mm¬2εJ&⎇*MαJr∩>T
∧
∀→XU$4ThλitH⊃h~PP1hT⊂ss	Hαa`∀OR.¬
;8εvA≠U' ⊃αα
$-≤X∧UHT∀Q3λ~α 	VE ORDER WITHIN GROU@!LXλ (αC"G]]P#PβH∪≤ααBεJj⊗@$X∧TdλSt@λX0r⊂∀h abH∀#&'SαUM IF@A→ A≥∨≤αj`∀
)u⊂hRh8T*∧x8S∧≠↓Q L@1QTg↓323HhTb"!↔pε$iU∧A∧fQ εX 4%≠∪≥
→0∩α∩m
∪ "u*44λLj~
1PJ6&:420$∧KZ~2>u*44(H" LXhd#Pα32)@ εFD			0↔	=+¬→
4⊂
∞a J6~~≠P&&&t2~$HI`≤≤βs4	H4∧εE⊃,∩∧fQ εZ:	MINFFX	↓	;DUPLEX	∃¬≤H∪≠
→t&lJ0∀QPB!⊃,¬a$QdεUM
λ∧∪≠
→2t&lJ0∀QPDBDX@'e≠¬∨_4⊂
"dA∀l4i∞D
Q0λ"Ph∧ HNKH	>8¬3
@λ∪2)@ εFH	8π⊃+≥-&~∀∪5
~¬PJ6&:42∧$⊃↔5≤
*1P@)1S@⊂α-MFFS)NFF, WARL∧A7≠→ZA$
α2∃¬:J>~8∧∧dhzDE@ εEεBα;;+↓→β≥∂Q⊂A>2α~J⊗,b&NR~↓r
⊗4zJ*EH∀5$X ∂AQKP	bQP#ah
!
	L¬~~α7 K⊃⊃∪@9α 	ST
∪≥→
0t∩@∩∩∩w→∪1:αYPhPα3QHi∞B,↓⊃".qIIqU3!QQ⊂@∩αdεFFD8	0			;DOUBLE
@π0H∪9
¬ε@PI@$$KZ∞.6∧b⊗`4T"a⊂&t2~iHK$$%\"VB∩-@4*
8 &*~4⊃h%@HH%n
L::V4hP&*~5Ih%@HH%nNβ→T∀|AQ$DrA→d44π$¬∀-λX∃"∧	i4d|u2∩bβ↓↔4E,i:0hP→hd4!⊗HH↔:4
∃1Q$L4d¬blthj2lTheB¬<~)b¬\hhbj¬H_$d*λ¬tIyβ#P&⊃e#j$↔FEεE∩c'⊂*Tbf"iTU$j)K-FE#Pi`']αX∧D]U f*bH'c⊂∀∀j j*TP#akR'TFEαDD]XKα1 =≡ DASPLAQ MESSAGE DURIH
∞A≥ε~∀∩$∩vb\β⊃↓uy∧~2>
∀*I↓:<B=Iα<JR!α<→αNR
"&NRL~L4*<~P≤Dv↔ K⊃↔5≤
hXB¬4→JT-~	xb¬<	uTdLhT¬4
)_∀∀dZ4∧%-)→d:∧x1PT<:y∧{∪!⊗hTx:tD{7!∪H+Q⊂K\_ib¬-8YD-≥5)∃%_Q!PT<8_5≤
g!∀)∪prd	P0te6"".iX4Rq(D⊂0td
p5Q(D∩⊃4HQ"QpiH4uNA_S∪pi4L'IP0te6/B"'~3S0*)q1λ_th∀h~Q1λ	λ4Q#!(pt∂'λβa`aT`k∃hβE#ac∪(≡]#P`aa`U∃c&(βE#ac⊗(≡U#P`a`∪AV+FHP	;TEST GCF;ZFFS ZFFX ZFFL ZFFY ZFFA SFSSIP∀AM
1'∪hA'
→M∪4A≥~fN≠$¬≥≤~9∃@$⊂πc)Tdh
 OFXSIZ OFLSIZ OSYSAZ Lπ'β'%0	α≡5~N&@$λt5E9≠"∧qS∀i≠H⊃tk~p∧m⊂⊃i`idVα
∀~(p
mm¬αεJεl*R-*4¬∀HZd@Uλ∃	@P 
EMLπ% %∧
22x8∃$Ly`AQL¬P≠lA≠+≥!αBJ-~⊗JZ*αJε2
"&@4T	u∀⊃0	$Sα@∞A∨_A≠∨'PA∨AQ⊃∪&AM)+
8~∀4SZVN⊗ ∧∧+(⊃pd
⊂πP$∪d∧D EXACD↓∞ε2≥*2εR,!α&:αHT=∀→D∧<≤β23J1"B6Hhβ)P~	0	∩∩m→∪' h ⊂MαQQKπ@,α!⊃,¬c$V'*fFBα	P∃
→_tα`$∩∩`.4b0≤@U3#!λα!∩∧V εFDh∩`∩∩$p∞∩>,∩2∧Q(5B≠(d4≠!⊗HH↔84`9αh&"V∧@
DX$	P∃
→0	h¬H$%@8JU∧dY↓P@(Qiα+λβ#!
αX∧DDNβBIGNUM~∀%0
4hε.A⊗α""'ilfa∪dεE$∪⊂∧	ZFFH: REPEAT H@≥↔1_∞≥-λ¬Bβ↔9¬,t1Q MThh∪@K↓⊃⊂K]8~%_h)_dbαβK6HhTk3HhKλ∃h~SH⊗kλβ#⊗@ TABLE WRONG @→9∂ ∩"βQP@@ ¬↔)QbP ∪SPCSIZE	0↔≤Jb*	xb∧00r∧
uq1*λ0S⊃$
t⊂0hUβ⊂⊂*Tbb⊂*∪β CAL@π ⊗2
"∃αB-∩≤,h¬⊂(x(⊂	"PβH	β∪5λ@8hP&N~≥~&i@!→dL58∧qe*q1ti≠@∧D]S$i`∀
λ	SFXSIZ:	L¬∪
E~≥*N,:N&HHI`≤4≠	e,hβ"B*8S∀r+≥	NIFLSG)'∂'%0λ$%\22>jYPhTH 	↓~q⊂Ti≠L¬∧XαDD]b∪h¬BLE
C@0α &N∞β
4MSαB,↓⊃".pi@d¬PLEX
∃	`H∪'	a'∪4t$`∩α∩m	+!→∃0~*∀9⊂&N∀rN&iPJ0∀∀j8rU≤Xz4MPα".h$cg*SFA∧iTlidm∞∧g)lSicU)QcidmαD]`∪YMBOL
λ¬⊃9 JN"~≤Jaiαα(U∧05λ		Rs∪hul+λε↓,r∃)@%iFEαii`iRm_
	NSARSG*SEGSIZ∩∩m'β%&4⊂
&~p↓0∩m8j5≤M%Yd42D
t
∀d5~JX9∃@$∃⊂0IH(⊂i∪dεG LEH
∂)!:~∧~(s'β5∃&A>2αNBε≤*Mα
,20≥∀T
5$
*@λ	@c⊂#aKα  COPIED↓
%∨~ααN~N≤J`∩∧Z@λλ→λπ⊂ U⊂)`∀ART OF CC.
λ	OFSSIZ:	0	↓	;LISD
λ	OFXSIZ:	0	↓	;FIP⊃≥U~~∧∪=
→'∪hp∩`∩$∩w
→=→+~~)	∧H∪=	¬'∪hp∩`∩$∩w	∨U¬→
~)∞a⊂Lz≥E9≠#@K↓⊃⊂K\9yU∧dY↓P@(⊗	α)X⊗∀r+≥X∧BDXDUPLEH
BG$	Lπ¬≥'%0	h%H$%@8)∀<UYQPPLz;∃≤M'!∪H⊃↔5≥LX)t`h)	b Ly	e≤M'$¬∀-λX∃"∧	i4d|u0%Dα.i
3RtaQ@∧giPidm≥αX∧DDNβSARS
IFN .-OFSSIZ-NBF, Tπβ%≤↓0∞-∃m~&iααH∀∀dT
u∀|hp∧d,hzDEhβ"C!πtr6HT⊃StDλ00r∧
t⊂0hT⊂Q3	ZβP#d∩a`λ TLεA∂%¬∧A
\A'∂5⊂~R~α~εN$bd4	u~⊗∃αα8t
≤≠(PKZ¬	∩`(αW⊂+Rh∧@⊃∨U(A	∨%_
:λ⊂¬ 9⊂πf"H#`i!⊂cbP!Sd∧LECTION↓
∪%'PR~∧∪≥
''∪hp∪≠βa
¬&∩$∩w2M~P$!_t5E9≠#@LX≠∧4∃↓⊃⊂K\i≠∧e,QQ L<iJ4MSαB3(≠⊃QS↓⊃ ∧]c∪'c*fCE"!$	GDBSIZ0∀∪5β1

⊂∩∩αw⊃∨ ⊗
d(4*∞β	↓_pr∀i≠L¬∧fPl##!BD@]aSd¬PLEX
∃	`H∪∂	a'∪4t%≠β "42`$∧KZ∩VBd*`4((r Lx)e≤M'!∀l
λhdH⊃↔4)1sU)Q"B1j;4r6G↓306λhV""!↔tpfP'fεE∩'∩∧cR')dm∞⊂)"h⊃`j⊂$∪%`OG+1, MAXFFH	;@@+9↔&~∀%∂'β'%4tβ≠¬1~~λH$%Nα8∃∃_Q)∀4r¬aT<589∃@%3QQED∃p4I@⊂-cFKi`m⊂∃ a&"H+i'g⊃P ENGPH@:4⊂_w
πM∂⊃εA→1'∂→,A¬→'≥→⊗A≥JN≡2X∧¬≤
8yDZ¬4∧Thy⊂h⊂JJqs∩d	30	cS%P )∀cb%@ @¬)¬β=	αX→∀`(R5⊂IJλ⊃pg↔λ⊃pg↔(⊂λ#∀i`m⊂∀ εP⊃≤J`∩¬λiE≤MαH∀
6Tr6AQ@εE≥Nβ; @%=_∞@%4	t2¬IλR∧≤λ→∀`*h∪∩)@%`	NG LAKE PAGES @∪≤ααR"∃∧:εJ
:∃α∞|b2ε∞αIu∩Q'3@7h⊂q(y13U∧
⊂0SλTλ∧#aTj∀W  FILLED IN AT IL¬∪(AQ∪⊂⊗∃ph &~α:4<D4εB&↓ ".iI4qβ!↓1P)Qf%U∧L∧@D]Q$hλNUM
α	FLSGLK8	0			;FLOLUM
DB$	D@SGLK8	0			;DOUBLE
@π0H∪
1'∂→,p∩`∩$∩wπ∨5!→⊂4⊂
αa J∩bN<b-h¬H$%@8JU∧dY↓PD∀tA∀∧u8yD[P⊗↓⊂HKαpR(yβ*fFB∧idiQd%P~	0	↓	;SYMBOL	∃⊃8H∪⊃≥M∂⊃⊗@RαJεB,
Qα	i4d|u0%Dα.i
3RtaQ@∧i`Tcf%@:	0			8π'β%L~∃∪
8@\[
M'∂→⊗αj24eD¬ 84S@⊂⊗β(
['≥→⊗A$
α2∃¬:J>:8∧∧dhzDE@ εE∧TY)cf∩]	0	8π ∩	~2∧mX∧u∧λSs∪	@hπ @)!≠'
A¬¬∨-
∧@Q'Ljα>⊃∧∩2>∞]→$4λhR
RN<b-h⊗↓∪@9⊂3RhXλ∪∩*:λ∪qDλR5λλ&#aeTFE$fTcf%@:	0	;LIJKED LAST OF UNALLOAATED IMPURA @'∃∂≠≥Q&@A∪9∪(Aπ∃)&A+@R~∃!I'∂→⊗βP%@%\b&:.,!α2&≥!α>→¬*:ε2dzεεR,!αBVα(R¬≤XyT,@U∀c!ε,	λ
:T∀S	7B,α'i`k"Q⊂(!)Qf%P+R ¬N HISEGGETS PURIFIED
P@∞HA1⊃'∂→,t∩`∩m→∪≥↔∃λA2M~Qα≡2α
2>≤ZMα~⎇⊃α2!∧Bε∞hP4(∀T∩R
ε|⊃h$
∧9⊂%5drα&R≤9*N⊗=~&i>∃"αN≠'b\t)~DαbH(d*⊂TwgF+4q(y∪q`∨βE(#BBVZ'!∩h)c@*SEGSIX/BTBSIZ>+NBITB,,		.SEE IL10S5
MAIL¬¬∪)	→(t∪	
¬)¬LZb∩w∃→⊃α"∩J⊗α:2∧4z$∧∧eD	t2∧X→∀`$⊂R5∧λS∪pi4⊂4Q(⊃"Qpg↔∞B,↓↔tP3HIs(∃λYαh⊂#∪i⊂#aCE#a\N]∧X∧NβRANDOIER↓)≠ ↓
∨$A≥ε~∀~(~∀]'∃
A'¬*JN&T(%nNMR∃αxd¬¬-(T∧5∀XT¬≥$z(∀<*λ~$,
4¬R¬-8XB∧l→→deJλ+∩¬≥H~E-~AQ"u≤XT∧d%
~∪⊂K4λ%-"λ→E≤z
(∀t$yYEJ¬X∧q(D⊂V(λH0k,&∧⊃P4iIp1λ	→U∪h		4q1aQ@4⊃J:r6NA→T⊃Tj8jTq(zr6B!↔s∩4jA"B4λk∀r6G!3T⊃K
qjThXtr6A⊃.qR+	U3#!!4⊃S
96NB)J⊃S∀huTq1j96B"'8S∪sJY#"Qλ$α4⊃λ*p∧m≥αX∧DDN`dg∪U⊂''P∩e$j$Pf⊂(*T"P"'Ua&"iK⊂)gg∪,PFE⊂l∩∧h⊂l)dm∞∧X∧DB]`dg	j⊂''H$g$j∩`f⊂(∃i"P!Sd¬PLICES, MAMA!
DX$	PDXSIZ2	0			;AIN'T LO INIT@∪β0A!+∀)α∩Vα	DL≤Z5B∧$_HEJλQ($: ~λ$u≤α6NA⊗α""'`dg∪U⊂''P∩e$j$Pf⊂(*T"P!$Qg*fiK⊂! a⊗PFE∧L∧DDDN`dg∪U⊂'"k⊃i⊂''H(*`∩E SYMBOLS!
H@≤H%!⊃≥≤Jaiα∀*Bεε"α":.dz≥-Eb↓@%nE*2.MαBf.U∧:>RRλα
∃α\J∩∩εt9¬$4PI@$$HI`≤→`u"∧hZd-∩	ir¬¬X∧Q$
p4Td	Q25	λαi⊂FB$c'⊂⊗h#)Tdm⊗g⊃#⊗⊂+Pi'⊂-T⊗VidVα TABLE @/I∨∃∞A1∃∂)!:~∀∪A&e'∪ht∪≥'de'∞UM∂'∪h∩∩w≥J6
>bαα2>≤ZL4(1n
¬~!α
¬~1ααLrb5αDJb5αl
b:Bhα"
B⎇∩≥αλ*∧,@Qλ∪Jλ⊂ε&⊂∪αPDLH PDLFL1 @!⊃→
_d↓1¬
ε↓1¬
@∧¬D∀iD¬D∀i∀¬D∀h⊂λ
⊃∪λλS∀λλT∀λ
t⊃∪∧T⊃∪∧QS∀∧QR∀∧Tt⊃	D⊂l@⊂⊃&!Y⊃,!Y∀aY⊂-∀aY⊂'PY⊂'c∪!Y⊂'Q,!Y∪iaYεB∧A≥]Nβ  ∀T(TTTT(TTA⊃¬∪%"AAβ%β≠∃)%&↓⊃βπ↔∃λA¬2↓β→	∨@TTT(TTTT(T~∀~)↓!'⊂h∩∩α∩$p∞
&t
Jeα¬∩>≥α≥αε∞∃∧B&≡hRB
∀K$$%\2&2HXB∧Ldλ%J∧→ID`8c"Tλtα/∂λYQ∪∩*:
p⊂(zr6K&↔IPλ QdieOXBEεB!(!f∞∧a!(∀icDDBD]a$SαARY PROG↓'!βπ∀A→∨.4⊂~¬∪→_A!β≥∪⊂~≥eX4*"Lrb5HK$%N"∩J⊗α:2∧|d	D
≥D
tm∀D	t2∧i	R∧Dβs⊃!QTεDDNβEND↓_∞→αL20∩¬λ_tL@Qc"I_Q(∀λ_p∧g#K-FE$∩l 
 4$`∩∩w¬	∩J-~Mαxd∧d
8@λ
@dπRD↓_∞→αdzP~¬8Xtl,jAPDl≠	eDk!⊗HKαr∩(y⊃0u∧
4p0IH(⊂gT ∧ OF NPM↓β¬∨-∀A→∂.ααN⊗≡l*0∃ Q)∧*⊂πi#N∧bg"∩$@		;FIRST AVAILABLE WGRD OF HISEG↓
∨$A1_∞ε∩Lr≥α
LrεJ@∀
¬∀|z(∀m_Q)∧*⊃3Qπ↓21L%Kl∪ ⊂∩c→⊗-R$f'aJ↑≡"g⊃$ 	-HIH	>~jNB∩DI.Bε=~&i5α∪b5∧_yU≤[eP+Q W"!↔q3Q∧	qH∩(hαP ⊂AGING
λ∧⊂∀'33@4∃∩⊃*8(⊂
+Sβ VALUES AR@
A-~⊗⊃α4zIᬬ
V&∞X¬T@Q1	~U⊗(
λα  NUH¬HAπ",~- 0β"KJ81(∀λI⊂π&eCE↔ ∪EE S@!∃∞
&t %nεt!α>RD*JL4TrB$β∪∞A⊗α".iIuh⊃)@ ∧ OF NUMBER @!⊃_Aβ%∃α~*uα∩2∧εB&↓ ∧]d∩c`λ EL¬⊃α|1α:Vl∩⊗IααλDb∧~(TλhαC"AQR1SD
⊂1r)@ π →64⊂
B∩d21E@!⊗HKαqSj$⊃S∃*9⊂∧g#H("&⊂∀ cbiH⊗P ∪EE E@%%_
&PhRB$β⊃Sε'@,α!↔qStD
4⊃⊂*I3Q`⊂∀h⊂⊗@ SEE ERINIT
P~∩$p∞⊗: ∧∧`8H∩1I@⊂( cRdεG

0⊗@YYαRα*α0∀4∧" FAW THINGS MUCT BE IL∧A)⊃%&A∂%⊃$
∀4∀]'∀A''∂
≠β  KZ6ε@	→U,@(⊂	dVα@&A→_∞Iαα:D`:P1q$
t⊂0hZc"B+λQP	]αX∧D]S$ibεB∧h##⊗≥∧X∧B]c$l∪*fFEαl##&∞α	0		8π
→∨9+~4T"↓ ≠λd4β!⊗HKαq∪jXS⊃#!λv	α+λβ#!]αX∧D]PdπE@!10~∃⊃0@∪1→
4`(K$%@8JU∧dXεβ!λQiα+λβ#!:	0		;@¬∪∂≥U~~(MB~5↔!∪H↔:5L@0Ss↓QR∪@∩αl##$∞α REPEAT HL¬↔2|9-E1∧jεb~4@%nλ¬3I:c"B+λβ# @:	0		;SARS
λ¬∪
≤α↓0∩mλhe~lhhbb¬x~$`$⊗v⊃He(⊂
 P&"P+T'g#@ LENGTHX
4Ph"&~p∧¬∧y→d:E1Q#@7nh∃	λαP'"V*⊂#'Ui⊂ ∀HIH
∂&↓≠#'(ααα*	→b¬$	~2∧⎇(HU⊂H+
∧$c!→T
EλI@HK9X∃≥∧Z λ
λα  PMSITILπ⊂~M¬"0~∧y~d(h+λdeβ!→T
DiJHK4
∧$bYIu≥≤_xR∧Lh¬⊃**U0λ*∀P jεB,# _P8∧∪≠βa
1 ~)1'!	0pλ&6
BNB∩`h!mmXαR"∃∧r⊗bQ∧26@-$
DDLhz2∧mX∧u∧λQ(∩)@⊂*$$TP ∂RDER~∃i!∩G!∀l
λ∧⊃	A .p(~α*`fλ("&⊂∀'idj∩dπ@≥ε↓
∨$A1_∞N→hphUαQS
π@∧f`V!&(∧B]`	NITIALIX¬⊗⊃∧
Qα⊗α)∀`)5λ⊃J)s(⊗
λα  ET AL.
P∃
DATE A GNE-SDOT OVERPOP IN SOME PLACES.
.SEE ERRPOP
ZSC2:	SPDLORG				;SC2 WITH ZEBO LEFT HALF
~∀lp
mα$B∃αh[¬"∧izU∩¬I	∀dth∪*Zuλ⊂HT⊂∧g THAS MRDER
OC28∧∩`∩mβ¬&A1∪⊂⊗&%→α~>∩αB$β∀c!)qS⊂f'B,β!)qR⊂f'B,β!)tplG∧XεEβ≥jai∩'%P)Qg"$P∩a`f&∩P 	NTAR ENRC.GUNRRUN UNRTIM ULREAR LIPSAPA∪A''λb↓∪!'<!Iα&¬~∩	E∧JBN∩3⊃α&B≥α¬α~
4"∧~
5∩∧~
42∧Y	∃∧∧βλ∪	→β*("∪⊂ 	NTP@@_A¬β¬β'∀A∪≥$jε%αLrRBε⊂∧∧L@U⊂s	4⊂∧g*∃* P$S*('kλ$g"$S&P$g∃'(λM↓%⊗⊗LrQαJ,*2>A∧
BJNαjB¬∀XZ55"	→e$IDα-∧~λ∃∩αX	∃ :Sh	*	30∃D∧4∩2)Ic"C!
u0U
Iα4P)Hα#f@ T¬β%∪¬¬→&↓∪⊂→αdzP~∧9z$(hαC"G]P# !qt HCT#d @
KYYf↓IP∨I¬*V>I→dZπ=l↔πε≥lphPβ"U*:R∪Rg↓,α"'btr4→y⊂⊂⊂ or CALL iNstre@
iSO\hASfAβ##'M∧	βOC,≠'π⊃∧¬π.v5qP@*q3Q	↔@∧X∧B]bt`4her 0 h∂dA
β⊃1∧¬⊗w∨L.V∨&≥ycBπ<XLD≠<yd∞≠h⊂~\py∪yH4:w5CE$a`S&$]∧L∧D]bZz42iλ_⊂7`2 CALL instp¬`↔∂&K?9i∧CC3JβWO↔⊂;Eβ#.s,4(hQ`≠[4	∩∧u14j4∃∩∩*4∀p
*Q ε NEED NOT BE @π⊂≡h∧r(Hαi"bλ)`ai⊃bεEεBα;;;↓'!βπ∀A~>⊂∧∧Dβλ⊂iλ3SQ)Jh⊂3HD⊂∧g#⊃i$gi∀P g"λ*ibf⊃iiP$S*)P S ∧ GC OVERFLOWS
MAY@@
A→%_
Rε⊂πSk∪¬0&¬RSpJ→3j`~J*ibf⊃iiUg⊃ ε

λ¬∪≥$
Ih¬H$%@9→d$
αλ∩)@*#P$SαTEBRUPT ARRAY (@
∪
<A#+U
R4PJ∀dx92∧dα3Uλ~@".hYβ*)$QiP'cλ!'i&H≡ g*λ⊃R⊗ T!P#'T⊂ 	NT BN>
λ	↓		8εA%∪≥⊃(A⊃¬→-ε↓β%
AA%∨)
)βλA	2A∂ε4⊂⊂∀λhQ`≠[4λTt⎇Xyα∧4z ∧dβλ⊂iλ3SQ)Jh⊂3HD⊂3QHZR3tJ4⊂3Q∧
4q3λZth∩)j∀h⊂)hλ⊃pd	uQ4Hi∪utaQS06(((∪∃)jQ04GW,L
f⊗λRSh(dgUMU*ibS iiUS!#εEβE*g)⊂β(
∞t$`∩∩v4d↑Zf↓
∨$A⊃⊃β3∃λA=0==∞A∪9)%%U!(~∃%
≤A-~⊗"⊗≥→1αVu∩ε $↔!∪K8Ye%∃∀λd`:H⊃⊃)H411∧λq∩(	→β*"i∀*h ∀
λ¬∪
≤ααVN⊗d*NMD
T`*S04G∧X∧]QdεTRY BORD@→βeλA≠¬$A&u"⊗JJ-αP (*Ye∃∃Y`∞A⊗α".hYβ*),H!'i D@→βeλA∃*0∃$→XR∧H~$l≤β∪pi1"U3J*⊂3 ≥αX∧D]QdεTRY BOR↓	⊗2
J⊗⊃αα(T@λ⊂
$SbP f⊂i&af∪βC@⊗~)+∃%¬$tα`$∩w&t"⊗aαLrR=↓∃∩⊗ε1¬"& ,T λ	→β*"i∀*h" QP,(4(_)D`8p¬P&∃dεREAR	0↔9)%∪LA∨A→_∞J5βbεJ≥∧20≥∩	→e"∧i`¬I3P
  ε|
∀$∩∩`.
∩≡MαLqαV:∀*εIαt*⊗⊃αtyα<4
¬∀⎇HX5$LyaP@H⊃∃e≤,T	d|LhHU∃∃X
@hPβ"Ng]P$g∃ i)*T*⊂ "∪∧@

LIPCAT90~TD`∩∩w1⊂~≡$Aα>→∧~JV⊃¬αVNα,!α
E∧J2R⊗∃∩VBPhR&BNαxCkβ.K&Q ∧]kSβRD OL@
@P9!∪%#RA&u"⊗JJ-αRMααH∀\,aQ$M¬8¬qε'-(
⊗M∧D]kSβRD TUH∞@P9∪
!∪HRAβ≥Q%%+A)&A$
.⊗8hR&BN$1Eu@W%S(H↔:4
∀X@α`(α#⊂FB$h!b⊃→~P≥~-4		;SAVED .DF2
IPSPC= :hZf∩∩m'β-⊂A!ε~)∪!'λβiui5⊂H%nN
2⊗⊃α~≥313λ~α ∂R↓λ⊂∀)~¬≥∪UP∞EV ∧D]T`k"bλ aajSjf j∪βR @$4⊂
&Bα8ckk&↓⊂K]8~d,"λ_4:αfbf⊂h ∂R↓∩∧~(~∃≠DJB$β∂ ≡M∧@]fPl⊂!dShf* Sα@∨+LA∪≥$*JJV¬"L4(HH%m↓D~ε"∞αYD
⊃1⊂⊃)'f@ THE DEFE@$ααP≤@tQ∀aQ@∧DDNβ @∪≤ααR"∃∧J0∃$X∧TJZ∃λ∃HXu∪tE↔@εE∧BDX	1 MISCEH	2r⊗ =X∧c!∧@		;	2 @!⊃_A∂-∃%¬→∨\~∀$HI`_K∀	T,@3tV$λαi)'T↔`f&⊃c`f⊂∪βP
LIH
)!⊃_p∃@YI∃¬≤~e$mDα4⊃	El"+J81(∀λI⊃uC!$g ∀PDL:	-LIN@)A	_@1dJ2RB$`% 58XR∧Lh¬∃HXc"Nh[∃∀P$
Sss$λβ'i∪βH
A%→)!	0A∨-I
→∨.ααε 4D
$-≥YJDL@Qh⊃+
∀P ⊂∩dεTERRUP@(4⊂λ&
dz≤Z	I∀e%λIB[∩)I∃¬≤~a∩`*q1(
λα OV
IT∧ IOCIL¬&t∩@∩w+≤*Iα→x2∧4TSj$⊂1⊃
(αi`∪
λ¬∪(H$∩∩]≤*∃α→x4-∪αβ"I_SH⊃ε⊗	⊗c!$c' SAIL,Xε~∧wMβ∪_A=_
2e∧"⊗~&tJR&>u_4*ε≤∩εN∃βP∂'→_∧DB]kd"T ¬ @'¬∪⊂⊃αlz0∀MIz"¬≤~hU~¬X∧q*$⊂0td
4∪sD	3P
εBαIN@)5β∩`5βP∞Fε
ε¬λε____⊂⊂		;@≠β%_A&u"⊗JJ-αP$)→e%∧~ ∂'WLλεFεελλ_∧@	;PARITY @%%=$⊂∀)→e$≤β∩`≡O]_⊂⊂0200,,000  @`∩%\~2>∞X∧∧L@U⊃4J*4⊂
εBαIN@)Q)∩`5βP∞Fελλ_
⊗⊂00000  $∩vyM∞εB+r%α→jD-∃*Z¬ @ ¬$g∃( ∂V==:0  @```X0d``@β↓@$↔:∧$b	z`hT→jDL@⊂εP≥tp	AAαεββαβε&λλ_αDXILL @≠5_∞J@∀
$,0β"R)@* ∞@14zz`)β↓AAAα¬Bcβ⊗εββ⊃↔4`)pπ⊂"V$i`∀AL¬(A≠∃≠⊂≡JHh ∃@ ∧]bSα@λA∪→_	αNJ0 (αC"J(αbdg∃≥	BLLππ-βλ4*J,*0∀⎇∧εB(& ∂CK 1~∃¬!%'5!`⊂L)It9hλλFBαREEST¬(t∪	→∨π⊗α↓D4!Q%hKαq3HD⊂∧c'λ ∧10
λ∧⊂∀)_d`$⊃ _
b→_⊗⊗β
∃∪9)β→_h∪¬→∨
⊗@b~(~∀`.5*∩<Tλ$Mλ⊃⊃(i3R5	→β`∞@&↓
∨$AYβ%∪∨U&A&%→αB∀λ$M∀c"Gd∧EFT HALF BITS
SA⊂@@⊗BLjε%@Tπ ≥
__⊂⊂,,	∀KA∪!β$βiuiEβ↓A1AQ"-∧~z$`7-(
→_⊂,
λ∧w%⊂αα∀MJ1P@$αh$fT+_
 :βQIAAαεhRX∧∩)→α ∂=tp	Q@hRt$↔8T`(α⊂$c∪α D1⊂+D20
λ∧_w6αYd=αλZ%∃∧_@λλZTT∀jD⊂QU	Z∀h∀j⊗β!$jλ)hihSβZ LD@¬3)&↓→↓>5~QαHH∀@pH∪λJ⊃34∧	⊃
PI~α⊂&"⊂h*) L@	¬!Q$A2$1J%∧	D$
8~"∧dH*4
∩	HED∀J@λ	Hα,!dVα @→	a'⊂∃E∧b∩b∩L1α2∩Db0≤~	HD,@qRH	Hβ*&h∀P DHSH2 LDHSHHA→	⊃M⊂dA→⊃0@⊗~αT∧d⊗⊂∀j∧⊂ε",∪βFS LDXPNT LDXLPC LDXLPL L@	1⊃LbA2%B"MI∧b∩bB484(Q'3@7h∪∩∧	qH∪*Yβ#h⊂∂←⊂#aH$iP$Sα P@%=∞⊗Nα4∧`8H⊂
iRdεG MARK BIP	&~(p
mlHH&&9¬~εJM∧zIαNβ→T)q∀c!≥]P≠↓%⊂A∨_A≠+≥≥ @z@p∧∧@⊂∧ijλ$iP$Sα P@%=∞⊗Nα4∧`8H⊂
iRdεG LH ∂&A=⊂∀'0∞gD@		VAH	+
↓∞⊗2e→α4z λ
:⊃0tλIλ∩⊂(eb`∩Y
0⊗@Xπ2∧4R3I~α⊂!d⊃a`@&↓≠ ⊗:=↓αε: ∧∧
∃⊃3*
∀h∃	@P)"iU'i"P∃$ 	NGS @∪4⊂	mmβ0λ	@ ¬CESSARY. T@⊃∪LA'"⎇*2"	λ∃¬∧Y`λ	@dεLY IHA$B∃α∞
~∃αxd¬≤@pεbFBα;; 6β∂%∨'LA¬+∞αα2&.*α¬αXYT`:T∧P+∩dπ@→βQ∪⊂≡eaP@)53Qjπ@∧XεBαλ
∀vβY`~¬h~$L)HU~∧βQ1(Hαb⊂#∪βR ERRP@∨ 4⊂
-**∧#!⊗HKαp	`Uα@
A∀*RVJpεε∩∩∀*NL4T*JJBα:C@!,α"'i`k"H*⊂'k⊃i⊂ ∃NTπ!%≡4⊂	mmβ0λ
Hαf`⊂ORARIES FOR @
β'1_∞ε⊂hP4*
5"6BMβ' hU8∧ ≠⊂αIT:	0	0↔$*6Bz(∃∀LX∧hλitH∀j~αbbm⊃F@
SQSQOZ:	0
LDBP∪)Lpλ%@KZP≤@tQ⊂∪βF @%∃→∨πβQ∪⊂≡dλ%M⊃0	FB&"'c∀h∧:	0(TT)	8π⊂∩x_B∧|hj4-λ
∀HYα ∂CATION↓
βπ$zI↓u¬2ε %XT∧l2λ*∧m∀tλ$,4z(R∧dβp1¬⊃ ¬&"⊂`ga:	0	;ALπ¬∃≤αα& 4H[α∧∀z λλ~⊂πfj⊂a&"P⊂i) lCE&"*⊃d¬P 4$∩w%β9	∨5¬"⊗ -	z$
∃α#"IHα≠!$U≥X∧NβP@→β
A)≡↓βππ,jV"ε$)αNεD∩&@"λ¬r	→α"P!SβH
-I)∪≥∞αα~J>h∧¬≥
Y{$(hαB"'P⊂
 FIRSDh	α
M"Mαxd∧`(αhλD↓(∞ =(@λ	Zαib @¬∃αβ(U∀xQ)D$
λ¬∀G∧X∀*∃∀@]kRd  BE AN↓∪⊂~∩M∩⊗∞Q¬α6&:αHU∩∧iz"∧88U≥≤α3Qd
⊂∧"P⊂h∧@∨≠Qβ¬→
4∃→	¬A)$`(K↓"2⊃↔5 93∪λλ ¬ AN INDIR@π ∧¬∧|α3UλZH⊃Sj$⊂0phZtr3Ht∃∩⊃$	+shλ*c#"T∧¬αLDF2DP:	0	;.FNAMH[	&42⊗J⊗u!6@4PH%m↓Dr6 2Y(U∀z¬QSr∧h~4d
∧z2∧dHidk∩λI∀4Q0	)H!)'fH!j`∩REH
(A→β'2|
⊃=5⊃PDdH~4
∪αB,↓↔p1⊃
(αiiP∪βF @'¬$A
∨HA~ε≤b0≤Dz2∧
IyU$)HR∧
*(∃HhαS⊃λ)`i
αX∧]`Q ∧RESS @∨↓'β$A→_∞Iα4
N $x_B=~	∃t`4⊂U1Hh4H⊂**P6#!∧¬αIFE PAGIH
∞Yl~∃→	a
2QPI@%@8)E"¬	y∀`*⊃0@⊂⊃'i⊂-⊂h($g⊃P!`f∪)P#'T⊂,!j∀P 	N↓
BLhR2αb≤J`∪Pα,α'X≡d!U⊂ λACKERY L@-HA∩yhRbαβ(λ@=DO@≥
↓β⊂~⊃¬αVJ&4J⊗⊃AQ HKαh∪Gf∂3⊃)@ πTHQ∪≤A]_∞J∩~Iα>→∧
J,∀λd`:H⊂!U ¬D CAH	2_h"2∩E~5E@!⊗K\9ye$→j2β
	HU≥~λ¬∩λ→β⊂&"⊗)`	Z, AND↓%⊗RJ0∃~λ¬P)J1(⊂(j⊃0	εBα	∩vαα2%λ9∃@$⊂Q0i@d¬E@&Zb4Tb∩b∩L1`⊂K¬λBHJh∧q(T⊂ε"(∀![εEαDX@% A/&daα∞yjDLdλDL4hZ$,@Pq(λ ¬TWEEHA∀Aαε: ∧∧dB	xb∧dKλ$e Q+PK\YhB∧LhT¬∧y→d8h!Q$d∧α∪∪h]	0	8π⊃&<B⊗NQ∧b0≤~λ~5≤,X)D,"	→e$z¬0βλhαS⊃λYqRNA⊗α.rJY4λ⊂(H∀Q4j4⊃StDλ3Q	XH⊃P*9∪p1∧	3T∃*D⊃R3λQ L$∧D⊃⊃⊃)XT
B&↓.q4hXλ⊃Sj$⊃3qD	⊂3Q	I3Q`	→β⊂# Tf'`bλ#'i⊂⊃_XεE∪#*&h∀↑↑]↔a# ∀MPS		;NUMBER GF FASLOAD DEMPORARIE@&4⊂∩¬∪→_	αB:&*≥eX4)@9ZTe$~	D*¬λ:B¬≤XyT,@U∀hλ~tq3()⊗(∃	→αbP(⊂i fbU"i)FB≥b"iPi$h*∩dπ@≤A=A'≥≠≥(↓
∨%≠¬(t
∀m→↓1!9(A!∨%→)&AQ_
α~M∩NAαLjBVJ*αN⊗≡l*0∃"	→b¬$α⊃(λd dg⊂⊂ ∀HE RH↓≠A→⊃1!'h!mααyu∀α	→b∧_9α¬≤XyT,@ @GNE,∧@A$B&Mα4bε≥αM_4)@4
U≤,D
4l@⊃3⊗$λSt@⊂
)j j∃iP"jSd 	NKS).  AHA5!)2AM→∨(A%&A5I_
α→`λλ'j$ THE PURE
9 AND IM@URA @'∃∂∪≥PX	↓ααI∧*∧i~%≥αλyu∀"λI∧
α	~2¬-8XB∧4z$∧$
H⊂∧L@H⊃0(9λ⊂q(y13U↓QL¬P$TP DXLπ
&\A)⊃∪LA∪&A
∨⊂⊗B-"⊗⊃α≥*∞!α$BεAα$B∃αH~5"¬yz$"∧xd∧$
H⊂∧M~λ_5%,→IEJ¬IλPhSαh∪λ~uλ∃iZQλ∪hd∃∩⊃$
q1s(Yβ*↔εB∧¬α;HAS@ING VALUES
IFE SEG@→∨≤ZpLYm→↓"≤AEu@W&#+
aQ Jα∧∧ααα	HDE≤αλ	∞O]→~1,¬24TJ~*λ∧q(y⊃q`⊗NW⊗-f⊃$)d1==2509*~∀$@@@@@A		!'⊂dztpj`f9:~*L2∃αN,:2>≥hε∪αrK9D$E9α∪kk&⊗βJaQ HLHI¬≤C'SS@&,λ@_KαX
4Tb∩a⊗5)uuIK↓0%Nαy∧
αλ∧⊃*(q3Uλ_q(⊃JY⊂ε⊂ S,P ⊂AGE IS ALLOTπλAQ_
α≡- 4)@8¬∩	~h∪5*:α⊂!"H& ∂CATION↓0
-)t⊂hTHK¬¬≥¬P∂'_∧]g⊃l*⊂)Qcbbg∃⊂ g @π⊃β∪8XY!I
A'≥≠≥(↓!∨&u"⊗HQ)D%Dxj3kk*8T=≤≠%Td$λ∧rε∃,(∞iXQPq*D⊂πc⊂⊃$i)jλ+gi"λ'c⊂*Ugb$g∩iFE&⊃,('*∞α	0	;POANTER @)<A1π(↓!β∂L~∃→	a→!εT$`∩wπ=+∃(A=A/∨I	&A¬∃≠β∪≥%_
:	yb∧d~:B¬∧_xR¬-8X@hTHK∧e∧G!∪K8∧uλ~U∩3Ht⊂ε'aPj 	ON OF LAST PAGE USED
LDXHS1:∩`$p∞~&∃~Qα"
~!αZbV∀Q)D%Dλ∧lG∧X∧]Tbagg⊃⊂  iR⊂+ f∃b@
LDXPFG8	0	;-1 GHEHA¬*J&~L*⊂ (αW"'_3Q	_SH∀λ_p3QaQ@↓Gu4sDλ5T∃)jλ∃5jZsH⊃ε⊗∀⊃∀Dλ,⊂*(λ⊃&	P3 λF,∀Q)D	5⊗
Itλ	*K∀qS∧∧5⊗∀hjλ	5	5⊂(∧Z⊗⊂u	D	5⊗λ~ph∀HIpRN∧λ3⊃phd⊂1R)JQλ⊃ij3(∀Iiuth
(P0rd
PS∪h9c"C!)5	λ	~4sNA⊗α.r)I5∩0)D∃4q*$∀sP)X((
85λ⊂K∀∪∩4jλqc"JZsJB()∪prdεB".jZq4@
;4u⊃)T∪P3(Q"Q5J
3UεA~∀U5	↓".q	yIuλλZP3λλj3Pu	→pπ⊂ U'fFE∩c'⊂"X⊗-FB*kjiS≥∧X∧B]jci∩h∧E SNAME (I.E. PPN)
D10PTR:	0		;AOBJN POINTER FOR DEC BUFFERS..
D10ARD:	-200,,.		;I+O WMRD FOR ARRAQ DUMP AND FASL
	0
∃λDa≥β~βP%@$KZR"ε~α↑.J ↓f↑εdaα
∃α→¬∞∩≥↓α↑"-∩∃↓
~→v*>∩α:H∀T!EBJ,qh&
dzε-↓⊂H%n~Lb∃α:j∃αRxh*d%\*:"	xb∧Li`∧#↓Q hT~DR¬≥→YD`7@,α!↔q∪udλSu3HH4V(λitH⊃λJ	th
;30SiD∃⊂0IH!"C!	1S@
823⊃"NqλXR3Q$
qs1$λ4⊂
)⊂P**,H)"f U b⊂!∩h)FE	h∧XTOP8
`5S!AA@KYαR>α⊃α.⊗Jp4)⊗%BN~1ii`∪∪εεKZ*9∧L5EYD`8p¬Q KEQ.
λ )1M
(zzhb``@I`~∃9	∀5"$	4-JaQ"-⊗∪5λ↔,ε]~_∧]Q∪bj @" KEY.
%@)a∞@$GSS@&Lλα'Q!gg∃)'f⊃λ%blWβE∩`∀XASC-≥8∧bnn$s ∩α*αεN∞LIαBε∃!α>→¬""*λ9∧
∀_:D-∩aQ%hKαq3HD⊂1SD
p23↓QR5	∧∧5⊗∀hi∂/.F∧λ
`⊃∀d 	FT-L@∨π,@AπdA	∂M≤@≡Q∧*b&N ∧∧`9β⊂$j∀FEεE∀ #a%∞≥∧i"∞']gT⊂)"8TεA
∨HA/"M"∃≡MαYα"ε_h"ε2<~→h%I`≤4H_r¬$βh∀jItλ∃	λαP#aH+`λILE @∪≤ααε"Ix0hT_i∀e∀G!∩kλ↔5S
βTπ@	@'P$g∩h∧ FILA, >0 = <↓∞∩I∧z→αεdb0≤~λ9tl@13U↓Q@εE#S*fP~	ASCII XG0000\	;IH
∪)%β⊂⊃α<*0∃≥→QP@!α@

8εvvAIβ⊂~∩|iαNR,2→α~⎇⊃αJεt"6 *	jTl∀X∧@_x3Q4H~α ∂R
λ∧vvVααJ:>=→1αJ∀
≤Zβλ⊂)Hα⊂ ∩BLOCK↓≠ ⊗N ∧∧(αP$gλ* λAT ORDER.~∀4⊂
&~p∧¬-≤YHU≥~K1P@)060HT⊂ε)!∪'ae@==:718∩∩`-β9E↓↓≠(4*6
J∀(⊂	'Q)b`∀tztfJ8∩∩`.βλ∧¬vλλ¬6(∩4d	4TQ(J0r0IHαP&gQ⊂→⊂∀⊂i` MACS@35αBR~):∩%\*0∀λ∪qD	1S@⊂∃ibf"TiFE$Q ¬ @+M⊂∩⊗α:2eXQ)T
L(T∧e∀)It9o(∞@:4ε∩%X∧ααα∧∧ααα∧∧αβ:∧ε0hTX≠∀(αP ∩OFSE@(βiuiLHI`≥≤βh⊂)JpπP$TP,⊂∃V⊂⊂ "αα&JJ,"V∞_)D*∧β3q∧ε@εE.BDXEND @∨↓∪
AU'→M&~(hRJ:>=→`⊂K↓∃e≤,T	∀`)4SQ↓↔p∧g$U$`f$Vα@λA¬(A&tJQαRLj∀4*($≤αh
∧L∧W ∪EE S@'Iβ⊂~∩|h%n∞qα
∃¬∩⊗NR⎇∩⊗⊃α∃I↓"Nα:D
∃0	P∀ g"'SP⊂∞.8R~*∀∩2>∞Xπ"∧∀Ix4Z∧β∀PIIprb%@)bbP∀ g"'SDX .β	0∩¬yz$%~	xbα∃(→d$|β(SHZtc"AQ@εEβ≥i'*∪α2 BPPNR GAMNT↓∂'¬!8Aβ		Mβ$A	=)'!ε↓→→∪ DA∪≥π@A%)'@bA%)M fA→='AI+∞A
1≠ →Fλ∧∧4dzg∀α∧8	%≥~λ
5L@1H∀	xQH∀
94h∀
95∀h

q0	)H()W)H)j(f∃m⊂''T εLS SAWSP PU@%⊃$A¬*J~9λ∧¬¬-(ic∩¬λZ%≤tT
5M≤HZb¬≥~8dc
λ∧v*8SLH
;4psIT∀rPiHU1C!!αE)'∃'→≥∧Kα(T)	8ππ+∃∩⊗ 5D
∧t∃Xd¬<@tQ⊂⊃'i⊂!Sd¬PARE @∨≤αα& 5HZ$`@"C"G↔nh∃H~R00IH4h⊃IZH⊂4J(4(⊂)I⊃pp*ItC"H
∀∪TG∧X∧]O)`m"H'c⊂ T) lP∩ ¬ADER>,,-<S@∪5∀A∨A¬%%β2↓	β)αx~∃∂β5≥(t∩@∩w≥,j
εI∧z→α↑⎇∩∩Mα∀*F@,~(T"b	yb∧
λ8∀dbλIr∧<XJ5hαQth*⊃NB&↓.q4hXλ⊂4d
⊃34	zP4V$λT⊃3HD∃r∩)H(⊂S
Dp3Qdλ∪usDλ4TP+~c"P(H∀p4G↓,α.h_⊃∀Q*:h∪qD
t⊃0i_3λ⊂**P6(λ83∪λ
Y⊃3H	X2r3Dλ4TP+⊃"U∪jJt⊂nA⊗α.o∧4⊃qHλ~TP6$λ⊂34ge∂∃	z⊂3λ
:⊂0q$	Q11λXλ⊃Sj$⊂4TH≠/C"II∩4'!,α.gI⊂4QhZuλ∪λXp3λ	→Q⊃6∧	qH⊂**P6/E6#"R)Jt
B&↓.p∀hZ1∪k*λ⊂ε⊂(∪dg*"T⊂#'iλ i) VVdg#CE

RTSP1:↓0
RTSP3:	0
LOSEF:	77	;LAP OBJECP STORAGE - EFFICIENCY FACTOR.  FOR (STATUS LOSEF) = N, 
		;THERE WILL BE <1←N>-1 STORED HERE.  SIZE OF GC PROTECTION ARRAY
RWG:	0	;IF = 0, THEN CREATE ERROR ON DIVIDE BY ZERO, 
			 ;OR FLOATING OVFLO ON CONVERSION OF BIGNUM
FLOV9A:	0	;RANDOM TEMPS FOR FLOATING POINT
FLOV9B:	0	; OVERFLOW INTERRUPT HANDLER
CPJSW:	0	;IF NOT ZERO, THEL *RSET WAS ON AND @AKTRACE WILD FIJD MUCH 
		;ILBORMATAON FROM THE  [FUN,,CPOPJU  TYPE STUFF ON THA @!⊃_~∃!M3≠@PI@%ntz16j-∩=α∩-∩&*≥∧*b⊗∞-"&>→∧z→αB≥J584Uα>~→PI@%nαh∃∀LzZ2¬∀zZDLtX4∧LUiyE4Lhtα%Bz4∧5∀yT∧$¬DλDz∧*:"=~	λU∀(Q!∀U∃:@¬¬≥→R⊂hU
9U≠P_)Dl≤4ε#K8I∧M~
9∧⎇,H@∧∀
λYd⎇,y∧4⎇$	E¬≤X¬⊂AQ@0S	Xp¬P→CE()fU)]∧XβE()fT)]∧XβE$j∩αihjgV ¬  ,,∧∩w
=$Aα@X

J,
-↓E⊂beA⊃eαM*Mk
t4*¬→2MhK$%:≤*∃αBα;∀kλQ!PE≥J→E-S!⊗K\iz"¬≤ZJ∀L@Qh∪I→λ∪tD
λ 
(313((αi⊂+R$ad Lπ⊂~∃∧zR-$	∀`*∃p2*A ¬εE∪'h#&∀]X∧NβH
∨≤αjjεJz↓uyαα
U∀Lhε)λt∀r∪jY⊃∪@∪U⊂#&*Td⊂ "∪)FEεBαSAWSP:∩Zβλ%nN≥∩⊗@:β04I@h¬ND
UITH5'⊃β%%_
:Xπ"ααT⊂λ
84∧iP∃bP&jTP)"`Q⊂εE∧B]P'jT⊂!gi⊃P 	MAGE IN BROM A "PURQIO ∧A
∪1
~∧d@HA!≥JNAhJiE%]αVJ&5I6Nf≥"⊗ *Zλ∀<-4∧αk
λ∧p+~h∩1*1"R1I@⊂$j)K-FE(∃i""k∞∧X∧]T ∧UMP FILE @E@-%∞∃αt
6∀Q*¬-∀i`'∧X∧]T ∧UMP BILE BN1
λPU@%→_	I@!⊗K]λJTmαλi∀d(⊃SF!αE(*T)`∞Mh∩`∩wA	+≠ ↓
∪→
↓'⊂~εl(4(Q*5M≤HZc@!4r6λ$j⊂.∀li`≤
λ¬'3'→_	E@!~4MD)~B¬@∀⊂
i∀dgnεBαSYSFL∧d`(LbP∃∀iqP@*v4ti@&Y∧iRl!$jλ,∧S@3M8⊂∀+Q⊂K\α1SD	5∀c!∧¬∃'∧HA
β-	∩QPJ"ε2 H%n~⎇⊃α4→9∀`(βP'jU⊂*$"H+`∂RLDλ
(hR6ε@_(R∧e9(4d∃XgSk↓⊃∪@83Su(yλ⊃Sj$
Dλp∧ i∀FA)e⊂βH	¬+_pλ%@HI`≤4~*5"¬yz$"∧α∪sλD⊃P
fPα@$A=Aπ⊃¬%&A¬U
~⊗α(T @ ¬∧a∪'ae@ LS@∃π1
V_hP$%@HI`≤Lj:U∀4h∃	λ5λ∩)Hα!)P∃βILL FINALLY @'∃
AαAi%≡~(_w%'a)∧bAI∞@"	→t(4L ⊂∩dπBAR2λ
(hRN@,*JD`L→i∃$L→D¬∀_JD∀HUB∧|(~%∀
α(
	→β⊂&'Uβ CORE)~∀4⊂	mmβ0∧L@R5∩(→λ⊂	"Pb⊂ ∪YLTAX↓)β¬→∀A∪≤A→_∞J5∧z→αεp∧∧
∃(≠⊂hPβ"B%V+↓⊃,r3D	Q0dSβ(λA<J21αα	tL@Uλ∃	@P 
ACRO CHAR LISP
RSXTBDpλ&BαZ4B¬¬H44MαλλFBα	JSP TT,1DIMF
λ	   RAADTABLE
λ	   0λ
¬%
(tβ¬1_∞∞4	E∀≥EPA↔ur∩(d⊂$iH!&*∪Q⊂ 	N↓
%∨~ααJ∞Qh ⊂MJ*U$Bβ↓↔j⊂	j⊂h*`∪ TTYREAD ∩X0Q')βQ+&Aβ	↓%4JεB∃Hh &:La12R∃*R %ZBNRε%*MαR-∩BJ%Ja1"NαH∃%-4rJα∧↓PP@ C"AQL¬P≠; INITIAL O@LIST IN FMRM OF ARRAY¬
	-<GBTSIR+D|↑dX1∪⊂≡

⊃H4*LzαεI	P&*NααRQ1"&&LhP%↓↓∧zαεJ∀
d4λJ↓↓α≡∃"N&@%0%6Lλβ!	3pP*&L¬∧a∪'ae@∂'a*)Rm∃P←β2¬
	@¬→∨π,@d``<d∩g'Y
α 	@¬→∂π,A≥!β≥&P≥Ih ∀Li`∧`*⊂1tdf-kλλ&#aeH_@
]	;END IF "4⊂
&→⊂¬EHh++%+kUa∪L$~)b¬<YIB∧∀X¬∃λZH⊂Q$
p1Q$	uQ4D
⊂⊃(λiq∪∪j@dg#@ MESC!
.BYTA  $4⊃5%4tz`~∀⊂zzf∩m
∨$A!β∪%2↓!%∪≥Q_∞@-D
D`4∃stI1"T∀I→β*,⊂↔∧@
INIP@∪β0A!+∃"α1αl*6.JJα2εF⎇*P$
Y↓v 5α∪ ⊗λ_ZdfT*i"Vλ→_
@!U%αX@⊂{¬!&=!↓1⎇~εJε$~"`(β"W↓Q@εE'∪!*)cO↑XεE∪αHBTSG==  4⊃∪
≤αα2>
M"N≥0Lr2
R≤9uv:∀JRN≤hQ2,J8R`H→i∧∃%8sSl@PR5
8c"C!≥]]@∩dε @)!
A&∃↓α
⊗dzU "λ9tlL~4∧TDλ5∩th∪(~Rh⊃jX4P3JH11⊂∀ cbP⊂'jg"⊂i$biCE
IRP CPAS _Ym5⊗I\bαQ2≥!2Nf~bNεI]2¬ %λh2dM4 
j;3*vλ+⊗⊗⊗)dY
h# _PBS+PFL+HXP	∃∪→&W&5A.&~bZα9.EB∩dλ*Bd∃
5D`+⊃+⊃K
	⊗⊃K
λε#&∀⊗,#&∀⊗(⊗,∀∧¬∃'@Y1' 1'π%;	∪ ∩Mbb`≠
F⊂ε%+¬F+ε%+%Dα⊂0,$,0,$,0 _HαaA1⊃c↓1αthR`∃Uα ≡L∧¬∃∪I!&AπAαP⊃∩]~B∞NβQPEU+βSmUαV
i@⊂i`⊂C!SG
TARMIL∧⊂∀
∀*B,~@λ-(λ/SGS%@!≤Y6~∀%
&R_h"jJSivj@+%3λhαR1HT⊗VVDf-k⊗aQ@∧XεBα	0
]
αPRIH
)0ααr
&%~p (αR1HT∂⊗VK⊃XX∨	_[V⊂∀)$g*⊗⊂.⊂.βE$c"H≤∧ZZZ εd`\α1MMD
¬∀Lh¬⊗∧α⊂⊂⊂↔∧¬∃∪→
A55hLfnYl~∃!∀J0∃%∧@hUββ"KQ ¬.DB]bg"λ'c⊂)⊃h"`jβE*"i∪dgεEαBQTE
IFN ZRZ-L¬!β∂LY6~∀%(∞εJp∧¬eU+%E@75tSi@ π LEL@∂)⊂αα~>I¬αVJR∀a↓"NDzV $Dλ$*¬Xπ∪Jλ1tk∃4εFEαf ∂C X¬5.~(@∩β¬1_∞∞4	e∧z5s∪Q!∀L4d	e∧z4chε⊂!∪'ae@FAεE↔DXEND GF IFN ZXZ-NPAGS

 @!I∪⊂~R@αp$+APUHα".hYβ"⊂$Q⊂→εE↔D@]bSα@λA∨_A∪
≤↓!β∂∪9∞~∀_w
!U%nA→!+%DA¬!Hc"A
A+$cα↓
!+∀1Qα&β↓α&A8∧∧Mβt	∃βλβ"C!! ¬↔)QbP ⊂URIF@2$∩∩w¬*J&~β∀∧,@U⊃4J4⊂∧"i⊃F@
FPURF7h∪≠∨-M∩AXH```∩$p∞@$	~2∧∀~D∧9qQQ**∀h⊂h→⊂ε⊂*∪β CALLF, JAALL TO JCAL@→4∀∪≠∨Y∩AλαbRBVα(4`hαB4
Zrλ∀¬Jβ"QJ
4QL'↓2⊂	)⊗⊂*⊗∀∃∀@D]Pb)⊂"∪ic⊂*∩ ¬ @!U%→∪'P~∃
¬*IFEPJ*V6∧)αQ2∧zAF(hR~BV⊃
¬hεDbJiα
⊃J¬1E!$4λMαVN"RαA22%~6N HInBJJαR=α≤jεN hP%α*∃~Qα~¬*J→PHIf↑&ph(&&⎇∩5α→bBεIJ
H$%ndzN∃↓jα6ε.*α&Aα
αεε2d1>*∞b2_4T2BVJ3!h&"∃∩aαQd↓"A$HIn↑&paαN=∧~VQαM!α>V α>→α¬*J∞∩|∩J04PJ"JJRαQ1" H4(εE∩J5α b↓"AHh(&*∃~Qα~¬*IFDhP4*&4qαVN,b⊗NMeX4(4TJAAhHH$%nα
U∀Li∃t$
Z$L5∀
4|LT
∧<X1PTLid∧#¬D∧U∃:@αE∩⊃⊃∪@8h∩⊂*4⊃S⊂(uλ∪Sie3U3	D∪10)jh∀∃*)1PFB$c'⊂⊃→_∃dU)V-FB∧f)dλ"∩⊗h⊂cb'cBDYa`S&"b⊂αY JSP R,IP0
	LS@⊂AQ(XK!¬∂→∨∞$∩w+≤*Mα	d→2Q2%!2⊃∩0h &∞J≡∃α%!1D∀PIα2⊗∃⊃αnNMBα&Q¬aFNQ¬αε≡∃∧r>Qα¬*J¬εeh4(εlzP∀∀λ"bEJ@
!⊃,qR(z4Q(	z5λ∀
ZU⊂S∧λV5⊃$
⊃r3JH4C"I_SH∩*Ji⊗c!!4Su∧λK%↓Q@∧`b⊃$P!⊗
!∀FEαi'j⊂⊂α,-1
	TLC B,77000 
	ADD B,[450200,,PERTBL]
	SUBI D,-1(TT			3CALCULATE NUMBEB↓_∞→ααλ∀<-1Q LLZYDJ¬JACβ∧⊃PPMJ)r¬%EFCββ∧∧↓⊃.p	bU⊂*h⊂⊂i#P#∪i⊂↔!P&%Qλ	∧fgk∀dP_@,,¬¬⊃'1∩∀∪M↔∪!≤↓4(JαR2x⊂λ
J	
∧ε↓ ¬∧Pλ)`IPA C,R50#"		;@∪≤ααBVJ$∩11↓	j& -λZ$*@λλG*
4Q#!↓(λλ	YuQ2$λk#!	4	`≥αTεCBLK TT0∩∩`.D
ε-α∧
≡∀4PIα*Nαα→2εβλ$%@9~β
∧α⊂3HI⊃0h	Itp	bTFE∧`Q  	 TT,1001
]		;END OF IFN ITS
IFL D2@Y6~∀%%∨(AQ(X@5 h &ε$"%αR ¬BE%E⊃P@M)zB¬%EESλh!~Dd~λ¬∃¬Fmlεεβ"B(_⊃λ∃
E⊗m~L→__⊗(*`∩T@¬→:~(∪'+¬$A@1hε∩D∩⊃⊃∪@8p3⊂jY⊂5⊃$	U30HZH∪qD
⊂1q*1"B2
*R(%E∃∃∀CE	HRLI  "αa0∀R⊂sλa ¬∧fShεSI 2, @!∧K%λWAαK⊂αH4(~94M∧dλ0hPα(∃	Ip(eE∀⊂ ∩PβPY)
λ∧∩@AM↔∪!ααα→2I8εα[⊂β"B$∧λ∪3j@ ¬I F,1~∃% nt∪M!βπ_h ⊂L_HDJβ∃F⊂hPα01λI(λ	,1
∃:$∩w≥⊂A∨A%
≤Aλβ⊃@ (αB5	ISH⊂EFlhλ__∧D]Q'i⊂!∩a'h⊗λ ∧E@!='∪(A	3 ∩∃∧J0∩¬λ¬4JHSβ"A∀∃∪⊗DλK
efελλεBαIT$	IDPB↓
 $!Q#∪αA→∀%∧$λbe%AQ M≤βrSDλα⊂IP5
α	JRST (R)~∀4⊂
&~p∧∧M∀k⊗aQR4'∧fgk⊃P*⊗-M~_⊂⊂,,8λnnX```VβbN~¬S	AAAβ`∂KWp4tjYαbP#⊂df*i⊃P+`iH ∧UE TO CHARING
∩]
2-¬!0$%]*N⊗M∧z22e¬!2RPhP%↓iIu≤*∧⊂εελ¬RbSαAC@$$s⊂~=∧~0≥∀Tλ∃$→H∀∀dQQ LDH λ
E⊗l$&⊗¬J∃↔#!↓3∀r∧
	∀⊂(y⊃q`∃L→
	HRRI T,<374∧W'
∧|U!β≥'∪ )βZN=α≤zBeααλ∀<*	→e$zλ9tl*λh∀\*λ∧⊂(x!"B(&*⊂*≤→P↔XW'
αxU!β∂M∪4V@	9P≠hλ
f∩ebP(⊂cbP'∃d¬BER 376
λ	MOVE T,TT	∀∪¬_
$9Y∩¬"βmf@FA∧dSβRI T,376+SFA
	(
π¬1⊗A(X$∩w6⎇2∃αB:∃αX~α∧∀z λε6β[⊂$SαTG LLπ'&t9αBε<)αBz9∃$LyaP@!(S	@ibFEαdgk"RP*⊗→MXε0 0+<SFA*10  @|⊂∀!∃d8S∩`⊂∃⊗∧D]Q&*`∪H ANTRY FOR PAGE 376
λ	 .LLπ'
~(∪∃%'P@QR4⊃0∀⊃↔4,@Qλ∪hd⊂∧c'λ$j)FBαX
$KZ⊗ 4D	t2∧α1SD	5∀jhFLβ"KQ .q)@ ∧ OF IFN↓+'→∃'&~∀4⊂λ1n~4bNMα4bN@$)D¬@+Tλ⊗Kλ⊃3JJQ0hλi∀pλ LP#&)T YP#∪)b$bH!&)iU i**T⊂ ∞OSHARE SHAREP SHARP1 SHRLOD BLSLSP FLSPA4↓
→'∧	Uα~e~Rε1∧22NZλε∩∧∀J8∀$RλiE≤@4r`⊂⊃&)` M⊂( ∃R@π⊃εAM3'
∪0A'3'
⊃≤A↓⊃+∪!_↓!+%π-&A!-∩6B→¬αVJ>β	αBVα)uβ∩λ∧∃**Ush
λα*fhλ(*`∩CHN @!U%')∩↓!+%∪M A!I!)$~(~∀4U~V
R$`&NR
∩Q6Vααε <HUB∧hHU∩∧∀λde-9	∀`(h∀u*:⊃3Q↓QA"NiIu∩∩)@ π ON T@IS PAGE IS FLUSHED WHEL/IF LISP'S P@+I
A!β≥&AβI
Aπ→∃β%λ↓
%∨~4⊂vAπ=%αA	U%∪≥∞αα¬αNαZ5∧hAP@HαR1ID∀⊂1i→β#V-CE
NFLSC:8	∀~)
→'$∩1hQ)∀3
Dλ$d|90λπGα≠[@74ε`≥↑zjN⊗≡dz≥y-	q0≠≠eaPDLd∧@⊗⊗β
α.BYPE 1
IRP SPCS,,[ZER+@→¬PY'(YM3&Y'¬$W-ε11-εY%&dWπe~W1D	2bbRbNeI]α~a∞αλe~]λiB]Eλ∧β!$c ∪+IFP+IFL+BN+XXBHBT,BPS →≥a~Q
E↓2b~β
αd∀J¬ED∀J¬Eαeλ↓PE≥¬K¬≥αJ85∃@0R5
5α∩-HK_V→εT∧0,1,0 _d0bP⊃Eb!1AD@ε¬	¬D	∧E	Q VVKπ-(λεBαIRPS SPC,,[S@!
':~∃i10z[i10G≤¬'!εCM∞~∃)∃%≠∪≤4⊃%∧*εAαURa>N=→⊗B≥eX4*&4)α
&%→5I1βλ$$%\:⊗ 4X∧P*HαP @ FLU@' Aβ≥)I2A&2αBVJ(h!:⊗e~∃  ⊗↓⊂HKαh⊃)Jq(∀λ_q(∀i	u3⊃∧	Su⊂⊂α@
A
1+'", 4*@QQ%$4S2)@∧¬∀]	3!
~)
2≡≤Y↓aq8εs 6β[[oKibcf∪βG>+D|↑f@2q5qeXde≥H)Cp@ W"!↔q3Q∧	qH∩(f@εE.BDXEND @∨↓∪
≤AAβ∂&t84(Q!P@)1S@⊂⊃→_⊗-CE"g*∃α@ε@Rα*JN ∧∧dM8λt`1 ∧]j∪βPS-H`A≥Q%2A4*≥⊂πiεBα	JRST C@)I→∞~∀$`@∩∩$p∞@$βh⊂HT⊃R3	Hαb⊂$Sα WITH VERSION↓_
V6∀*Iα→`λ↓Q@∧DDB]P⊂⊂⊂αITS 4.6 - 3& .4⊃0∀↔8T`(α⊂'cλ$c' D20

~∃%
≤A∪Q&Wλdβ↓2l4Ph"4J:∧!_∃≤≤α6HGFrP↔X⊂)z`3pe`≥I∃H6~∃p~∃
→M!αf@PJεN∞MQα`#!9DM≥∧λ∞↑Y(⊂__pπes d¬P∪W≤¬ε.λε⊂ !nd j@=DA'kMaK@;&+⊂l4U`4*~e~∩&∃β!∀
≤9≠"¬@∞Fs	@ibP@!  Cannh∂hAα3';⊃∧∧fNfTλ
m≡~λ⊂_≥y2P 0a`∂Kf↓H ?$λ

(∪∩*:β"P≠Z4qt thi`&↓P >$λ
l≡h→≥-↑→9⊂→αr`∨Zαλl4
`h ⊂@ ¬#&∀ij i∃*h⊂~
λ	JSP TT,SHARP1		0↔¬∃
∨%
↓')β%Q∪⊂~≥∧jVNQ∧Bε@4Tλ∩¬∀X→B∧≤z(R∧LX_t(h!∀α`*P3∃(T⊃S∀hI1""'P"$bK⊂"$bK⊂"$bCE	SETZM SAP∂'H%n↑*α"εZ*αε %(X∀%J	X∃¬∧X@∧`:αi)bS+"`∪ IH4PJ*JN ∧¬≥
:ε0hPβ"C!	Strλ~Q/ ≡R))b (T!		8π	↓='∪(A%_
R=¬~"εJ-↓αRt	∀dDα0R*D∀r⊂*(23QaQTr⊂*(4
B*9p4∪D
p5tj↓ ¬∧P∩))b (T ∩~(∪'%R5αN
:N@4TJ~9αM"M"lhP% 48→Db¬λ¬4Hd 
	  ≥4
2V∀hP&*Vmα1αR ¬BE"α""'dεEGATIVE IF FIRST SYSTEM PAGE IS WRITEA@LE
]	∩w∃_
"	xb∧Li`λ	~TZI 0			;LLπβλA=→→2AA+%
AAβ∂_h"d⊃↔4,@Qλ∪hd⊂∧c'λ$j)FB∧A#&∀d)`⊂: 	α2⊂$ 	JRSP FLSNOT
λIFNIP	&Yl~∀%t~ε2D
5M≤i→@HKαr3D	tQ⊃*$∃∪hλi∃0	dλ( cbTT⊂#bH&jajλ!"P!Qi* dSαλ
∀∩↓∃%'(↓
→'≥=(∩∩v↓)⊃β(↓+
Aπ¬≤A∂PA∨+¬M⊂∩Z-→α
ε≤Y∧4λJr∞2>≤)αR6∧→04λJrεε2bαBVJ≤B,$%\z0∀e∀λde-9∧∧L2	I∃≥α	~2¬¬X∧Q!Q@(Jh3∃1!QB2U)Z∪⊃(
J⊃S
9Suβ!!4q5	yαP!`Uih∧DNc& cH*$ jλ+bP&Uij⊂)⊃`b⊂'Ui)bf∃ ¬S FROM TH@
A
%→

∀%≠∨-
↓(Y6hP`b``0Y
→'Q¬→:∩m!∨∪≥Q$A∪9)≡A	¬¬→
A=A/⊃%∞!α∧
≡⊗M¬"5α~e*N 4PJN⊗RTIαRQ`H%n8XUα¬λ_t*∧h¬3((4H∩)D∃∃β!(S∀tλ⊗∞B2)H⊂H∀EJα".hx5λ∩)hβ'P'Sα THIS PAGE
α	JUIPE R,FLSPA5		8π'.M↓α&→∧r>@"λiE-≤λ_$d(β"B(`dbP∃*∩'#∪)iWh⊂cidmα]c"k⊃i⊂#&∃i`⊂*∩ ¬ @!¬∂&A]
Aβ%∀A∨8hP%α∞J0∩¬J@	@ εLSE,π!β∂M∪44PI↓α*∃~Qα~e~B¬ThP%*∞b1α~e~B¬XHI`≤,J8R∧∀JZ4B¬IλR¬∧_xR∧TSs$	u0@⊂∀ cbP∪`hεEαP⊂∞LOSE !P``~∃→→'!αβ)`⊂L8→∀<*λJBc;vrs 6βP∂PAGSIZ	8π⊂∩≡⎇↓αV:$J1ααL:"εN"αBε≡*α0∃,X(U⊂H!∀∧|αP ⊂∃*∩#&∀h ZεB∧W)jTbj⊂#∪)b`∪K		3MAKE @'U%∃αtyα&:$*JJV¬"MαR∃IαR≥∧BεBB,p4(~
U≤DαH∀¬J⊃∃3*	α".j
4Q(λJ34λ	I4tλ	_H⊂	gH""adT ¬D
	SCIPE  ⊃
1 R$KZ0∀LD	$9α∨FEαP 
RST SES@π↔8HI`≤@St⊃%D∀Q5
ZSH∃∧λ3Q⊂∀)'abQbεE∧Te`h"H**⊗∀⊃,(∀DB]ad"PβK IF VALREPλA≥"J&:8h ⊂J	*%≥λ⊃S
:β f∧B]lbiK⊂ 
@+M(A-β1%⊗Q∧JQαRD*0⊂@ B3)Zβ"P*!(λ@ 4⊂∪'λA(@24bNε∩Ph &6⎇2⊗ *λ¬⊗
 εP⊃ $~∀%u2ε %XT∧4e8∧⊂&1 .t
)3U⊂∀h¬S@EL¬'&|qα6⊗α:4<QQ LU*:B¬≥X∧pi@dε↓	;AH∂
$J0∃,→hr∧hHU∩∧∀
5-≥λYd HαC"Hi∀p S≥∧ieRh#⊂+⊂d∧FIX		0↔∪LA-β→I ⊃αα:E∀Lhpλ
(03∪∀⊂(⊃I≠⊂π ∃M?
α	 JRSD↓
→'4	D$↔9d`5α⊂ ∃SE @≥∨I≠β_AYβ⊂∩J- 4(→
%∃Rλ@ε∃∃∃∀BDX@!%∞.Vα∧¬$DT
d@∃1#!↓+PTHX2h&Eλ⊃∀BDXDO T@⊃
X

J,
,4(LRJNQ¬~VN∞|p$%N≤z2Rεu*∃α↑D*0∩∧α5⊂∀ ¬TURL¬&@1∧∩V@"λ∧Q*J4S@⊂∃∧@

FLS@-∧bt%u2ε %XTβ
EJ@
!Q@∧e)∀h∧ @'U'π>pH%ny`λ

Spq(Xλε⊂)⊃h∧U@%8A(~∀4⊂
4J8∀$SαB,%E#"Hi∀s4i7@∧W)S`ie@,,.+1
λ∧∩`X0`⊂∀!Q$4e8∧⊂&@≥ibU-
	SIP⊃¬%(A9π=%¬→↔p~∀&lzP∀2(↓⊃ ∧]c∪*id THE PAGE
	IOVEI %JSEHF		9FROM OU@%M⊂∩Z-_4(~8U%Rλ¬∃↓⊃ .tλ_q(∪JYαa"iλ$g⊂*∃∧@

PURCHK:↓SETZ¬
	SIP⊃¬%(A9π=%)3!p∩∩g∂∃(A)3A
A
∨HAπ∨%∀A¬→∨
⊗~∀∩@b``@XY¬'e''∞←Aβ∂'∪h∩w)⊃¬(A
∪I' A'e'!~↓!β∂
↓∪&A∨8~∀%#↓IAAα¬Be%A⊃∪@7Lλ∀HX13iI⊗+λπDλ∃j)5⊂0IH+λ∂$ελ∪Si@⊗bd$Th"g*βE
SYSFIL8	SETZ	↓	;FOR OP@≥∪9∞A+αα~&2*αR=α≤BεJ∀hP&N&D∩&AαdzB,kAP@J∧∧αα¬8ε4h→⊂πεEαP⊂⊂⊂λ)lib⊃k
	     SYSFN1
α	     SYSFNH~∀&≤*Riαα;∃≥≤iQP@@ ¬)lTa`λNh∩U+∪$XY)≠A4(hRt%@8Yd"∧βqH	_SH∩*Jc"C!↓α@
;RLπ ⊗RLr∃αRzαB%YZα∧
λi∀d
λ¬r*Iλ∩3HI4Q0jD∀pfPαOD TABLE PO@∪≥Q$A∪9β⊂∩V$*⊂ (αC"I~α∩P(⊃*f`&∞α	POPJ P,
λ¬∪
≤αα&@%5K0hUλJTm∧G!∃≤\~	b¬¬X∧QλZβ		;DID TH@
A∂U2A/β9(A!-∩∃α∩,jB&:9x4(∀
∧m∧αH∀¬A".sIZ⊃+λ
(5∃4I@⊂)$cR*⊂ kPl@
	,¬πβ→0A!+∀zB8∧KZ0≥∧Y`λ
I⊃(⊃I→α"P#∪i⊂ ⊂DUIP'IL¬ε~∀$@]→∨M
@bhβ↓@$%]""*λzUJ∧β∪tjEλ∪r∧
q3∪¬D∃q(λ~Q(∀
)pP0IK(∩3AQ@∧DDB]P @∀hi`"S ∧ ANYSAY
λ	SETX T,			3@!⊃+∪ AI#+∪I&Aβ8A∪≥∪Qβ⊃2Jαb-)t¬≥∧~HR¬<z(@hPα+Ph→⊂ε⊂(⊃*fh∧B]b'P∃$"P Ph∧UAL PDUMP	∀∩]→∨'∀@bh`@~∀%tJ0≥λ⊃∪*λk∀∃**u∩"'→βj`∀PUP CTART IL¬')%Uβ ∩ε|p4(∃i∀`:α⊂ ∀MPC$PURIS@ $p∞&:$JJ,8¬⊂∀lfa'S⊂* a∪ ¬ @!=∪⊂~R-⊃α&:$J≤
Iz hPα33j@ ¬ @)PY!+∃αRH⊃↔5∧|α3UλZH⊂
'H#$f"SαAMES
∪≠=(
*λ¬⊗∀*i(*∀∧@]iU i* @π⊃π-'#~~)!+%π-&tβ%=(A(XD~∀&"⊃αQbBRQ∧HI`≤h@λλd"aeThfP#∪βR DDT	∀∩9∪↔(AQ≠!εX!)(R∩$p∞ε2≤yα>VαJ¬-αλ¬∩λT∃stHD∃∪h
I⊃(⊃I→α"FEα`ga%∪α TTPURCKS
	.IH∂(AQ≠!εYP∩∩`.⎇*RBVα@λ
I⊃(⊂iλαaeiUd@
	,¬∪∨(↓)≠!ε1!+%'Q∩∩`.αI∧,@H⊂1h→3H∃	λαP ∪TART ADR~∀$X
∞εdaαBVα*% 9βDD]T"g fQP*'P⊂βH∂%%∃∞@"λi∀dh→T(hαB(¬I⊃tq$ε-↓Q@∧W!S'ibP∃&h!VαDXFIL¬∪'⊂ααVAααy∃$Bλ¬∩λT⊃R3λQ ¬∧h∪βP@∀A@X∩(hRBVJ⎇α0∪P~8U%Pβ"B*94∧!$U⊂.'h⊃dεP_~(∩@@@A!+∀~"8Q!∩αα∧∧¬¬-(HU !αA∧Pλ⊂⊂⊂(∃i'h_CE	     @!U%∨ @⊂h ⊂M8ZE@$∀⊂
i∀e&FEαFA(*T'h⊂@:	SAXBIPλAbr2&Nαrp (αT∃*)tλ@≥αi`l!∩h∧ @9=+!!-"p (αC"J
4TUi@]	SETZ~∀%'∪ "∀JQαr∀*0∀my{@hPα33j@ ¬I TMPC
	     PU@%→_	DQ!∃≤-K$¬¬-(ic⊂@ C"Jλα*fh∞α	SETXλ
∧∪M∪1¬∪PA0∩B%*6BphP&&>4*%↓⊗U~⊗"_hP&&>4*%αRmα∧4(M~⊗Ri¬ 4(Q*¬-∀9	c@!+Q2)@T∧$TMPC
PURS@)$pλ&*∃~QαI~5∧pπFE∀*i$iT≥	-PXXd~)!+%!Q$t%hεBbe8ε4hHαkεEβE(
		8π≥λαα0≤2	_d`$⊂∧j)CE(
	;EH
λA=A&4qα&R~Z⊃I@hP4*B8!α:~e~∃hQ!P@ ↓Gpr3	λβZ⊂%Rd λGHA↔&dB≥Mα\J2"≡@∧∧\LIλs
∧αr3	λβXP%Rd∧@⊃∞β⊃α*j:D
∃Dλt-⊂∧#dλ πE@)!∞bA∂∃)⊃∞dαα≡⊗RD9EαJ-""<αλ⊃iJq∃6$λβb)f∃`P!d∩d#d GH	'→hhA∂→M→4`A≥→'	5∧A≡J9E@&(⊃s
9α"P⊃↓∂⊂∩NeQIα≡e~25I∧:2NK&2∧pε)f∪YP ∪GAH
β~ααN≡ε$*P∩¬8x∃¬∧βH∀hx10*λ&")$R)P&"∀$)P⊃↓→∩N≥∩T4!Q hU8¬0JJ⊂ε⊂%Rd λGH AND↓∂)⊃≥⊂∩(hR&~9∧!EA)	∃≤,yXT`*⊗c!$c"P∀`df⊗⊗β
αKILHG4h∪⊂≡VαJ5%∩λεp*8p6HAα@
;Not fLushi@9H
β#L∧vBπ<Xvn∞β]¬T_x;D}λ→P∀[2⊂↔)R)⊂3 )le~∃q:~¬↔%→⊃∞dβP&6>4*%α¬dZ&2λv0HK8¬∩	~h∀r	Z3⊃λ ¬ @'Qβ%(A¬	$A∪_A≥∨(↓↔∪→→%→≥αE_4(→
%∀jλ∃B`)PTp!Q@∧fgUα@
@`1'∂β≥¬~∩∩w%≠!∨%Qβ∃(A%→~=∧J2R=∧
εMαLqα∞ε≤)α>→∧~> 5I→e,(Q!∀l]hTβ
J8t$XaP@LYzd*βuJ4<
λ	`hPα16	~α⊂_FαDD]iUih"g⊃⊂#'iλ P ↔HIH	
~)↔∪→⊃≤ftβ≠=(
,Tεαe≤x→dhβ"B)YuQ3$ε,+∀hx1⊃5AQ@∧fgUα@~@\Y'∂βA!≤4PJ*JN ∧¬∀
Iλt@@ ¬.DB]bg"λ$c"P∀`dfεB∧@
KILHGHh∪≠∨-∃∩AαY≥)"<@$%N\J21αDJ≡!α≤*≡&⊗u 4(→
%∀jλ⊃B`)PTp$↓".thZα⊂!j⊂i*⊂ Q ∧RESS
IFE SAIL,[
	SCIPN S@+M
→&~(∩A¬%M(Aπ∪1⊃≥HhP&N.Mα∃αN<
:ε4HI`≤≤→`	jD⊃S∃*9λ∩∩(yλ⊂q(y13U∧	1H∃hQ ¬∧P∀edh'λ)c`b⊃i		; @@∨≤α:Qα.tzP~¬yλU∀1P	'SP*'P∀ j)$QhεE IT	∀∩A∃%'PA↔&dB≥@4PJ6.Zα9∩∧
F⊃P@L9z$*∧∃A⊂HKαqS
Zpλ∩	_p∧⊂)Qc`
ENT	∀∩↓∃¬π_4⊃↔&dB≥EHhRt$¬\*0∀λ∪qD	1Q(
823β!$c' SAIL,Xε~∀∪M↔∪!
↓'#'
1&~∀∪M↔∪!≤ααN≡εt
44!∀∧U∃8@λ	93∩⊃f⊃ B3)Zβ"dP⊂T∧FAKD@	(∩$p∞~>zaα"zp∧li∀¬ 84∧iP⊂βAN SAIL LLπ'
@xh ⊂M99∃∧r¬i$(α"*∧B]P%'P ∧DT↓≠ ⊗N ∧∧(αP''Sα-ZERLεA)≡↓'β-
∧~∀%¬~⊗@$HJB∧
A⊃∪@4⊂πj$⊃i+diQP 
AY @
β∪0A)=¬~ε@4TλTe$~(R∧dz8T8h!~4-¬$λ∩`HαB0iZQ(@⊂⊂T∧D]Q&*`∪H H@∪∂ A'∂5⊂~PhP%αλ→E Hα".i	uh⊂h→β⊂ ↔E P@∨'M∪¬→2↓→∨'
|@Q"λ∧∧D
⊃Q LU*:B∧\α3∩λv@εEεBαK@∪→!∞bd∪M↔∪!_X
*
E∩0$!∀∧U∃8@λ	93∩⊃f!αE∧fShεEI A(1
	SE@)U(∞Aαλ¬@hPα(∩λ→α*εE∩df$#L≥
]		0↔9λA>2α&~9¬~ε&0hP&⊗BM!↓E0HH%m
≤z2R&u*∃	ααy∀dbλh∀db	→e$zλxU$Dy↓P@L**5"∧xZDDp∧εE∩c'⊂)Pdf⊗-BD@]bH)j i∃*hεE⊃TεS@)¬%(t~(∪'$z5α∃uα"ε:αIthhαB3)@hεEMh	2Ytjε&2LrP%Nα8∃ (αP%'PαNUMBER~∀%∃%'λαα≡⊗RD: $¬\RV -∧λ∃∀⎇YhB¬≥H~% @ ¬∧e∀)j⊂"KαSTART	↓;PHAN@)=~A'$
JQα"∩J⊗α:0hUβ""'bg" LπA∪→_	αNJ0$(xU$Dy∞AQR1Q$
p23¬Kc"B)Yβk"dH V @+1	∩wM ⊃ααZα¬$βh⊃hZα⊂$$Qd⊂ ∪EG BACK
α	MLπ ~∃∧	-E2≤:ε∩⊗αaP@!33uHT⊂*`→)c`g⊂d¬~∀%≠⊂≡Z*α¬-Me~≡ε⊗β
@hPα33j@ ¬I A+0λH`4⊂λ&6⎇2∃α¬XεRe≤x~¬∧pβ"B*9p∧h"H)c`g⊂d¬~∀$A'.Mα0∩¬8x∀$5C"A∀λ∩TJ:α⊂#bU$#XFBα	GETSEG A,	∩w≥ ⊃αDJ≡!αα8T<@13U↓Q@∧P%∀)j⊂#S)`UA
GETH@∞bt4⊂
`(α".hYβ"⊂'Q⊂ 	FE SAIL
IFN SAIL,[
	R@'P~∀&≤Z&B∃αr*
"α)@hPα(∩J*uλ⊃hZα λGD~∀&lzP∀(⊂
,SGANAM
∀∪¬))'≤A(@0hP%αN\JB¬ααJBe≤x_D-@εE∧H⊂ 
SP @
%∃βε@2≤B."≡@h ⊂LYzd,Jλ¬⊗αIODMP	∩w=_	α~J2VJ*aα2x92¬$α⊃(
9∀H⊃I→α"V⊂∃$"g TRP∩A¬∂β∪≤α`4(~8U%Rλ@↓⊃ ∧]@ AH
λA=_	α~J2&:8∧∧l8T¬$DT	∧M≤Xpλ	@h¬RSELVE@&4⊂λ&>∧*0∩¬IZ∧5α*∧DNβH∂!8A+ @9'⊃$A→∪⊂∩∃∧"⊗@4_8R∧LdλE,@4λ∪)@9 @⊃βA!≤A%A'∨5
A∨)!$A∃=∧A∂Q&A)⊃I∨ ⊗≡@∧¬$D~1PPJ∧	%≥αλj$,,_5DD9λt@K4λ4l$Tλ$-%xXTb∧zZ"∧4~*5"∧~JE≤,tλ∀tαλ¬∩λT⊃3UλZC"B)YuSTd
α""'h∧ GETS LEN@∂)⊂αα>→↓u~"Iα4J2∀Q!∀$D
Bbt(*$,@β"B)
TH∀EERPTHYα∧D]Shij⊃ea!&⊃P)gfQP!gh∩biP'Q⊂∪%!∀ fεEαd))-λ**⊗↔∩!)"fαDX BEFORE T@E AH∂%
↓+#≡A
⊃β≥∂∃&Aβ(4⊂λ&∞⎇∩∃αQ`H$%N-BR⊗: α2>N,9α
@∀
DDM4λ∀l@u3U↓Q@∧P%∀)j⊂#S)b-_CEibU-⊂#⊗βE	IN TEPC,R∩∩m%ββλαα& 2		∃≤,qQ J¬99∃∧

@
8p3P)Q B(∧	TTu∧	⊃∀pj*#"B*I⊃h∃
E⊂∀qizQb"'~tR5λT∀⊂	'U ab∩$ibcCE#bj∩ π2:	REMAP TT,		;LET'S SPLIT
	 JRST GLSLZ3
GETHG1:~∀%≠↔-
↓(Y'∂¬≥β~~(@@@@@@∪'∃)≥~d↓(X~∀$A⊃β→P~∀∪%∃→β'∀A)≠!X∩∩w→→+'⊂↓)≠ ↓β⊃β≥9⊂@U¬
)$(Aπ%¬)∪≥∞↓)⊃
A!∪'∞4∃:α∩m⊂~⊃∧z→αε4qαNεL`4)↓α↓↓↓↓J*NA∧12*∞e~⊗P$KZ≡>
∀b∃α∩⎇:1αεuIα*∞`h*J⊗αI∧<C!→%∃≥D¬`HH↔:$-∃0	'λ b")λ!b'a⊂ i"bλ$g⊂$⊃i"FEβE#f)S*h]∧Tdh!$U⊂.!`S''j⊃bj⊂$∩c`λ SEGEENT!P_~)∂⊂∩Ne*¬hεlzP∀2(⊂eHpε)f∃l@
IFN @'¬∪⊂@2Xh(&J,b⊗εN*αR6B~`4(ε$b`∩¬J@¬V!"B(`dbP∃*∩"i⊃!&RDB]agf∪$idgS⊂"*bH*#P&∪a`OUT?
	 JRST CDSLX0		;LO, GENUGIN@
A→=''β∂∀~∀β!)≠∧A%!0$%]""&M∧JMαεdaαBJ-"Reα∀
:α≡h∧αj¬xTu∀(Q!∀L$~i∩¬%EFpHKαh∃
+23Qd	U4u∧λ(∪∩*J⊃⊃(λ$j⊂*∪β SOLT@
~∀%'⊃@A@0HI`~¬IλR∧D→~%J¬(_4*∧9yd$MI→t`*h
⊂)Ip⊂ %⊃ B2J*uλ⊃hZ⊂∧#dβE
CHK@⊃∂ p∪≠∨Y
AλYM∂β!∧p4)↓α&∞εl)α"β∀∀hz∀∪C!↓(∩TJ:λ⊃s
9⊗Mβ!∧λλα)Yβk"P⊃⊗)c`Q ¬V
	CAME @ →!M∂	0h ⊂J	*%≥αλyE≤@⊗Mβ!∧fgk⊃P"⊗)Q`b`_T
∪π¬≠
AλαbBN≡-BP$!∀∧U∃8@λλyα)f-
∧@
	MMP
A⊂Y'∂β9β∩$KZ≤DX92∧D~8T:¬h→DL$~I∀`9β⊂ ↔OR@	&~(∪πβ≠∀A⊃J
4<@P3#!∧α(∩J*uλ⊃iJpε-~βE	JRSPλA∂∃)⊃∞b4⊂λ$Q(te≤K&C@!4q5⊂*⊗∧BDY`↔RLπ⊂~≥∧B&N⊗8¬B¬≤βh⊗HZSh∩*D∪u5∧λ3Q⊂∀h i*λ c`dSαλ
∧∪
_∞J∃⊂∧¬"`Q!∩∧U*:B∧≤β∀sε εE∧Sek"P∃*⊗)cPb"cεB∧fgk⊃P*⊗#βE	JRST (FRAEAC)
α
GH	'→h`t
∃t∩∩`.,r⊃α≡2α&~9¬~ε&0hP&"JdIα
⊃#!AYAα↓⊂K]y→Db¬(X∀"∧∀
4MD)~B¬≥J)∀`(c"QiJs⊗P'↓23⊃λ∧∃⊂a⊃,p	"Pb⊂!j∀$g#@⊂e"⊂*⊗h"P$Uε@
	ADD@∩APXD@D$∩wπ∨9)⊗J ∧¬$zλ~4≤L⊃Q L]X¬⊂i
H⊂
εB∧a`dQP*⊗⊃λQD]Th#h⊂⊂c*"iλ"hλCLAMATILπ∀[!=∪⊂~PhP%α*∃~Qα≡e~2j∧hP&⊗BM $$¬\20≤@c"C!	1S@
823⊃"C"Hy∀s⊗F↔@∧gjU)j)⊃d)f&LFA∧bV$jεE⊃d∧SLM1:∪βMβ∪ )¬a}∞>∀)αVVzα2>NαAPE`Q!PT≤J9EC∪αB3jZ∀p
)λ!b)f∪YεE∧Ql jεB!b)f∪Y≥∧`Tadm⊂↔≥`g∃jgP&∪ijεE↔∧AεE⊃d)f-]gjU)j)⊃d)f&LFE∧e∀)j⊂#Qj λG2
GLSLM3*	ASCIZ \?REMAP lost -- no jkb @MYWif↓CmCS1CEYJ0AeKiIsSMN4⊃0~∃t∩∩`.,r⊃α≡2α&~9¬~ε&0hP4(Q*4<h→SP@ Tp$Q,α"!↔u∩⊃*8(⊂4HT∃∩⊃$
p5Q(D⊂π fQiP#'T⊂#bj∃$g#FB)`R∧TdhλBIT \MAAH	'¬`4*N<
∩-e!PE≤∀Q∪H⊃↔2¬$λT∧DLyλ
81s1)Jλ⊂P(9h⊂1JH4H∀jZt⊃3J93sC!*p)α*94⊂R*D↔∀v*;β"Thx4⊂∪G!,α"!∃Tq1$
u0	h⊃e"εE∀c`bl∃≥∧idV!$j⊂↔)`λB\		;@'=≠
A→='$A5∪∂↓(ααVε: αR=α≤Bε:≡*αR"&_h( (!Q#K[4λ4|$Tλd⎇∩λh∃≤Dx_B¬$t
$,D	∀b∧∀	d-h∩∩(yλ⊂q(yαbg*∧A≥]Nβ THIS CODE @≠-~Qα
*α&)α$B∃αIzr¬≤XyT,UD⊃PS[74¬"∧λ~2∧dYhu$B	xb¬$λTαe≤λ$∧4LHW2∧d¬
"J∧λ~2∧tXx∃$MhT∧|2λI∧M~aQ hTHJ$LE7!PTLhT¬≤→EEXh!→T⎇∃9∀¬%"F⊃P@L9z$*¬JA@HK8iE-≤∧	td"		∀<B
8T<LYj@hP∀	%∃≥D	D%≤8*PhPα2∀J+H⊃∃¬ERPTHYα".h:αi)"SαT HIGHEST ADDRESS IL DOSEG
	HRRZ D,.JBREL
	HRRR,.JBREL
	ADDTT,T
	CORE TT0∩∩`.-BBε: α2>N,9αN≥∧~ε9αDz2↓α≤zBeα|1α"&≤*≤4(Jα*JN α2αN≥∩T$¬Z↓"J⊗l*6
⊗⊂¬B∧≤→`u"∧It∧J\βh∩)J∪h∩	~q1h%⊃"B4hZ⊗H⊃EA ¬∧dSα TMPC(	$∩$p∞J⊗!α&9αrN"I∧2& $QQ J∧8→∀λh!∀α∧U*:B∧dJ85∃(Q!∃∀X~α∧"βα"'dεOW MAKE A @⊃∪M∞A
I∨⊂∃ααI∧*¬(X∀"l→`λλ→βb"FB∧P%)∀h⊂&"∀ai*FB∧ibj∃hπP F,		;TLπ!&ZD`A!∀zRε∞αJ2¬-4λe∀|T	u-∃8YE$4kβ!↓(∩TJ:λ∪⊃
8tU"!↔h⊂	gH+bP&Uij⊂&PebP$∩ibc@ Tπ%∪)¬↓→
@!A∪&↓1⊗JzH4(~8U%TT
4<h→PHK8¬q$	Sh∪	@dεGER K@≥∨\A)"*α"&≡E~⊗≥αt
6∃∧hP$$⊃↔4L2λ¬∩	~h∩4d	Ss@⊗Vα@%≡0A⊃&<A6N⊗8∧∧<-J4∧4eX∧rλXβ"B!⊃ ∧]@⊃*i$g⊃P⊂λ@'U'!≥⊂RAβ≥⊂Aβ→_↓)⊃
AM)+
↓(∞∃≡4(4(⊃⊃⊂KZλIt`(αP ∀O IT GMES BYEBYE!  ⊃βI∞BR~(∪!∂!(A @0hRt$↔8T`(α⊂'cλ$c"P∀`dfεB$c'∀`df⊗⊗β
	SEPZ TT,
	AH∂%
HA)(X$∩w
→U'⊂A∨1λA↓∪≥⊂A'≥≠≥(4⊂∩A∃I' A→⊃'π%*4∃→	%!&bd∪
≠%
DααQ0$KZ6ε.*α¬αhZrαEz)∃$)HRJ∧α∩4hXh⊃∩λ~λ⊂R(q"B(	*Tq⊂∪ )ai∃FA∧fShεE T,@10NAI↓	;USE D10FAM AS HISEGL¬β≠
↓)≡A≠¬↔
A⊃%'∞AU≥∪#+∀~∀&e~!αQbiX$%\
MαIyd:∧~4¬,*z(R∧∀Y→d:¬(→d$|UebpHαB4hZ⊂π&Iλ*∩∧DNβP	%2↓)≡Aπ∃(A≥β5
A
∨HA⊃&<AαN⊗<j⊗ 5AQ J∧αQPiA ¬∧d∪)"P*)		;GET WMRD CMP≥(↓'∪≥∞↓1)9	⊗⊂hP&6>4jMαPHH%nεt!α6V≥!α∞⊗ ∧∧
∧α∩+*81h∃	λ5λ⊂I_c"B)
TR(
%⊂⊂qizQk _CEibU-⊂#⊗βE	IN TEPC,R∩∩m%ββλαα& 2		∃≤,qQ J¬	z∧R¬¬A⊂K](ZE-∀d
D`4⊂sqλT⊂∧g HISEG
P~∩$p∞⊗: α0≤2	_d`$∀p2)A ¬&"∀ai*]αej`∀STR @7¬'πβ4↓9∩⊗¬*J&~β→∀dh∩∩*81h∪	@ij⊂⊗H,gjP⊂i"P)U) g"⊃b⊂FE↔,BE)PR@bl∩hεE)PR∧e)∀h⊂&"∀$)P⊃
λ
¬:$∩w≥⊂A∨A%
≤AλD`U⊃∪M∂≠9(~∧~(_w54↓→∨¬∪Q'∞A	= ]!∞↓
R
dZMα∩|∩&BN8h($*:T∃%IA∀d|)~E≤:λHU≥ Q!PD≤yj5$h¬∀aQ@εE≥Nβ; NO MORE CGNSTAN@)LA!¬5∪ ∩R,!αε~αHU∩¬I	∃~∧α3@⊂∃$"P&∪βSEGQ/%∪Qβ¬→∀A¬∪%M(A!β≥
R4Ph  (αR1F∃α-FEλ⊂⊂⊂-⊗≤¬0~\4⊂@@@↓→∨¬∪Q'∞z@i$%@9it`%6Q4I@P≡V@> BITSGS ARE @→∨\~∀@@A!β∂∃+ ~∀@@A$zA:B8πSj@@εE⊂λ⊂⊂$c⊃bP ∀OP.PG
XZ-CEGSAZ,Xε∩`.α8T*∧α1H
I⊃0	"H$iP S'j$"T⊂)bcSbg*∪ ¬F@(αα0≤@H⊂
$∩iP  QbFE∧Tbcjhλ-)εEαih!j∪βP JER,S@3LY6E5∃%≡D@!→∨.A%≠!+∀)&t∀PJNB∞∀zQα
M 4(_*D)∩pnA_S∪pi4⊂U∀hxtjThXtr6EV!"B*81u4∧¬A"B*:⊂q∪j∧⊂R5¬Ju⊗h$j⊂!∪'aenCE	IFE TOP.PG-8XA	∨	∪!'∞tzb
∀$Y⊗2≤)2l4PH&Nε∀qαn∩|∩&BN8∧¬≥¬Xhb∧$α1∪Dzλ∃sj)w#"A⊃10(∃e#bP∪-"`∩SG @≥¬%)'∞A	↓∪)'≤~∀$L*bBVt:∃α
$∩2.LhP$&2|∩&@%8sSkQ!∃hJ∧∧αβ\YhB∧|d¬d,E8QPBα∧∧¬hKαq3HD⊃qB)_Qq(
ItTλuαm-⊗TbcidVαλ
¬:$s≥λαα0≤2	_cλhαR1F%⊗c"I_SH∀λ_p∧g#K⊂( cQhhεE∩c"P(⊂c`g#K⊂)bcUh⊂↔εB,¬∩w∃_
"	xb∧Ld∧C!↓ ¬$c⊃P OBIP	'∞α`&NB≥"0≥α	(U∩e8ε4eKhVQ*)hH
	Iuh∩)Z∃0	"Jn@
PG%	EXPUNGE BRERSG
	EXP@+9∂
A$zA:B8h  ( c]8@λ
:α"$iT⊂#aa∪i%P#Pa!b)λ!aa!Pi⊂#aPα ZZZ CCBFLπ⊂≥αURaα≡≥~Qα
$⊃1α2EB∃≤t	d`*∃0	dλ'_ *Td⊂'λα0P@+M⊂A¬!U%!∞@⊂HA:LaαεBα)e#
λZ¬∀uF ∧-¬)jC~∧X∧TI@i_P"T'i_mλ i'i`P&iQc!e@ @π⊂⊗N<2≤XQ!P@*u0U
Iλ⊂	bQd¬ENT TABLES

λ∧vvVαα~>Jl
Qαxd¬≤,yXT`*λ⊂
 P&"P∀∂')bcT←⊂ ↔OR@	&X↓≠⊂~∃∧20≥∩λX∀9λ⊂	bQd¬ENT)
∀vβY`_KE`∞!→α)DXOd∧@∪'PA')%U∞@%X∧Q%Dλ∞`U'bdaH∧¬∀vβY`_KE`∞↓∀⊃P	DQ)"bP∀h∧GRAGE (BIPλ@@ qeαNDzV"⊃∧∩∃αy`λλ→α)gTCE_ 6βX%@"βHDQ,∧c$V'*f@ SPORAGE¬
;8εv∩h8h∪
_%
→∨≥U~A'$zJε≡(h!mmXIQ9TL∩0&
L:2V5∧B⊗ε∩-⊃αNR⎇∩ε≡∀hQ`≠[1⊗Bc ~;⊂M≥→X$lB	λT$X ¬≥$z(∀<(Q'3@7b-F14p"*84H∀jItP1hTλ∧!$U⊂→Wλ)`λOUL@ BE OF ALSG)
;;;	4.2	VA	VALUE CELL STMRAGEE @↔∪9λA∨$↓β∃∨)!$@Q	∪ ⊃↓ ¬cJ∧βs@⊂⊂d)gTCE_ 6l∩fL@ J∩λ_Iu,∀HUU¬∀X9∃≤Ly`λλi∪sU)Zb".jI⊃0q$λ4Q#!πnnb&5β→DaV∧agfT&"l L¬+≠¬∃%&∩∩$∩vA≥=(A3P~∀`-β0∞a⊗iHB(Kα1∪jXS⊃+*
Q0r*93s@⊂⊂βH∂∧b⊗aαu*6
⊗α*0KZ	→U∧dYXT`*⊃1β!≥]]DLU_DDUe*abQ∧¬∀vβY`_K%`∞%V+H"(_⊃∀Q*:h∪qDλ(⊃⊂*H(⊂
,T V⊂ U'b]εB≥]]DBP⊂⊂⊂∀d∧AST, QFIXNUM0A#
→=→+~X↓#¬∪∂9+∩X~(p
mlHH%αF≥J6
>baαFJr∩>UD¬
*(∃JBλ∧2
YRk∪GaαE≥MNβ	∪≥=)αA$BεAααI∧-≤Tλ∃$|β4h	@aa`∃PY CONSECETIP
A5∪∨%d~∀`-β0∞a⊃3∪ph~⊂∧gg∀P g"λ* λES NUMERICALLY ENAH∂	
↓)⊃
AAβ∂
AQ3!
\4⊂∩)YY`~¬I	∃~∧9yTl,j@¬≤DzYD"∧(T∧\-
@∧@sP	dTh∧ENT WATH T@E D@
∪9∪!&|rM↓	→b¬$λQPC[50α∧∧Xie~∧i→D*Jλiu∩¬IλR∧)zd*¬8ε3()s∀k∧λ3Q⊂∃βITH↓→∨πβQ∪↔9¬αNf6%!0 (%j4,*	J0hRh8T*¬λ∧v)Zα*εEβE)h!P'j⊂)U∧AεE∀j≥∧DBDY`∪EGIENT TABLE
∀@@Aβ
∀A!β∂%_
:βα0IIpr`⊂∪αSEGS	;FOR PAGIL¬≥α≥JNB⊗h¬B∧≤βq⊃$	3H∩)@$j⊂)Qh∧S UPλ
(HH$%@4
DD4q(
H0S⊃*4⊂5⊂∀*g⊂*∩d¬E.
λ∧@@@↓∪
≤AAβ∂&t92l4PJ&→Eb&
2|~-αh∧q(zc"B)_LK⊗a⊃ ¬∧iU ∧@∪'@pλ&⊗β
¬,@Qq(
:⊃∩4j↓ .qI@i⊂↔)Qb@
		$SD↓0
-%DEDhα".d-"`∩O ∧@@"dzP~∧α34
ZQ*(
81s1)@*)FEαdc' LOBITSG$ $SPλA¬%(XI14∩w¬∪PA¬→∨
↔&~∀$∩I' ∧¬≥λε∩,∪D@	;SEG@≠9(A)β	→⊗LhP$%∩≥!αNf~a∩bU:¬-⊂α".j;4p
"SP!gb⊃F@
		$ST SAR,SA		0↔≤
JM↓D
JJεJαB>→jD-∃5⊃P@! ∧R)U⊂+!V∪)P@-∩∩`.αh∀e,Tλ4,@⊂ε)FBα	∩IM(A14→1$βP&BDX@%∃'%-∃λA
∨HA⊗@λ¬∀H∀∃P3
X(⊂q)I∀c"A⊃)∀u∧	4h	,$X@~∩$p∞&6α
U∀(⊂	lSa'f⊂⊂αL@∨π-&~∧∩$I'(AM3⊂∃2≥H$%@8∧v)XSsλ	λα`b"T)FE∧BR)`∀↓11αX⊃1~$KZN $_92¬≤XyT,@U∀h¬	30λ*T ¬!)
λ∧∩%%~Qαbβ"b⊂π _M		0↔≤bε∞4
4,<β13JJh
∩)@$j$`S&,P'⊗&TFEαDR)jλ)lY,$X@~WA+$$KZBVJ*αNf6∀z1α
dz≤]1Q HJJ:B¬∧hε⊗⊃,⊂@!U$∩αwA+%
A→∪1:αYU_h!⊃∩%≥D
∧5~β∪∀e4⊃Pjj
4B.j
4Q(λjQ1(
:α ∂RAGE (LIST)
λ∧∩%%~QαB4a2
1]αVH⊃↔5¬-(T∧4dyjTm_Q!⊂J%8¬⊂⊗,(⊗∩⊗&U`*T∧@]iS ae@ PURE SEGMEL¬(@Q→_∞ <Y∀∩HhαB"$Juλ∩(jhε&)JR# ∪		;@∪≠A+%
A→%⊗∃¬~R>J:∃↓	I∃≥λ#"A⊃)∀u∧	1P,FX		;IH!I
A
∪a_
V6α1P@! ∧R)U⊂ 	FL,FL		8π∪≠↓U%∃α4b6 5YZ0hPα21I@⊂!$cS*fV⊂	)j⊂!∪⊗!'∧B]a$cS*f`∪
λ∧∩%%~Qαbβλ"b¬	Q⊂K]9H∀Zλ∧q(yαbg*∀P⊂λIMPURE!)
∀∪%
∃αdz∀MJ8rbαJ:B∧∀~AB%Dβ".h$j⊂!∪'aeiCE		$SPλA¬A&P⊃∩Dh$%@8)∀`(4V(

SqtH→αP ∪PACE
		$ST NP⊃~αa∩:@	Q⊂KZα∩3I~⊂∧`f∪,TP'∪βH[a∪')9(A6,j0≥∃α#"A⊃)∀u∧λβ(λ@ 1
0@-%α∩2iQ∪@8R6∪JYαP ⊂DLλ
(HI∩NQ¬B~bAb"0∃Dβ""'c'i FXP EXPANSIH∂8hP$%∩≥!α4J¬D4bαi∀λI⊂π&DNβFLONUH
A∧"0 (αB"$Juλ⊗λi∀		@, 
		8π
∨$αα~2A∧*bBεu~& <βC"A⊃)∀u∧
λε∩,∪D@	;REGULAR PDL
∩∩⊃' ⊃αβ
αb⊂π _M		0↔
=$A A∃1!β≥M∪⊂≡aQ HJJ:B¬≥¬DEDhα".j:⊃0r(→α⊂ ⊂DLλ
(HI∩NQ¬BNADIeDhα".hitH∀j∧⊃0(⊂dεSIOL∧⊂∀!⊃∩%≥D
4:K	∪K	 ∧D]Tai j⊂βH @'∃∂⊂⊗⊗u"L4λJr".→IB¬≥Ek$-⊂β"B)_SH∀jEpπ ∪EGS ~\αaα↑ε∀qα`"βK4jE⊗h∞kT'`∞G↓'∂≠∃_
QααH∀)⊃(∪λYβ#j$λ∀)d'Ud∧D BE ]@99'∂&10
&@QQ Mhα.q)@ ∧ IF2λ
)α↓↓αtHI`≤,h@λ	_SH∀λ_p∧g#CE

λ∧⊂∀!Q hPβ"Ng]P ∀HE FORMAT OF THE @∂β%	β∂
A
_∞ $β⊃0jItH∀hXpεbg∃⊂* a∪ ¬ IS RATHER HAIRP∩X↓'∪≥π∀~∀`-β0∞d
⊂∧"P∀dh
ES AND↓!∨'∪Q∪⊂≡h∧h	@c⊂ f∪⊂#$bS ∧S IL∧Aβ
⊂A/∨IλAβ%∀A∩⊗∧*0∀⊃3U∧	pπ⊂*∩ ¬~∀lp
mαα8T<@13U∧
p6Q%@⊂*$"H&#k@∪βRDER 822-<SEGLLπ∞ZJx|A¬∪Q&A>2α⊗ε∞@α⊗ 5J+∩∧≤βsUλ→3C"G]]P*∩ ¬ HIGH BITS OF T@⊃
↓β		%∃'&A∨_A)↓
↓
2x92∧|dλ$M¬4
D`4⊂Q(
Zq1	→β⊂&`T%`	NG
0⊗@YYαRα
!αN⊗<j⊗ 5E`λ¬	Su⊃$
⊂⊂5∧
⊂⊃(	Yαdj*⊃b⊂&'UT¬ORDER BITS OF T@⊃∪LAβ		I'&A¬%∀4SY`≠ZλεQ*)h⊂3K~β`lW
P*$"TbP b∀⊂!$j∀P i"H$g⊂*∩$iP)U) g#QP)$cR*⊂
ADJUS@)∃λA!∨M∪!&|p4)@4ε`≥H!'i THE CLπ⊂~Z,r&⊗:≤)α>→¬""*λx4l
)0λ
)u0
$Sα@
@QDX
Y9Jqα:> ∧∧Dβλ∀hXpεbg∃)P$ Uα@
4SY`≠Zλ)∃"∧)It9tj`⊂∃$ ∂SE W@⊃∪
⊂A	≡↓_
>Q∧Bε@4Tλ∩∧∀~@λλ& ∂CK HAVE ZE@%<A∪≤AQ⊃∪&A→∪→λαp4)@4ε`≥H* ∂ TH@
A→∃
(A∨_A)"M→α
& ∧∧)⊂πaeH b")⊃iiP#∩bf" IS A↓
∪→⊂A∨@pdd[≤*≡ $βq`∨λ!$j)NFA≥@;8εA)⊃%&Aπ∨9)β∪≥LA)"*α0∃,X(U∩∧βqH
I⊃(∪H[∃λ∀hXpεbg∃⊂ 	N↓)⊃
AQβ¬→
↓_∞→ααI∧*¬8→T*¬K~∧*@@εE≥Nβ; (NLπ ⊃αb1αN,:6⊗:%→αεJ*α2&:\*⊃α→`λ
I⊂∧iP∃βAP∩vααR"z8R¬≤XyT,@U∀h
@d 	CH ARE L¬∨(~(p
mm∧b& 48XB¬$βh⊂)Iu∩⊃*$⊂πg"H$ k"H* λIS BIELD ZERLεP→%¬""*		∀<Bβ3tHHαi⊂!∩h∧ (BIPλ@@ ¬cJHβ"Ng]P$iH'`∞E IFF G@π⊂⊗ε∀YαN	zTdλ∪0*)h
∀λZR⊂4
4⊂π'jλ+`	TH A BIT BLO@π⊗@%¬""*λ9t`*⊃3U
1 ¬≥@;8εA>2αR"∃¬~⊗≡XYe"rλ¬∩λT⊂R5∧εLH⊂I~α⊂ ⊂OSITIOL¬&A$yαRλT∧d1P
 LπA$B∃α	_tBlz(D-⊂β"Ng]P!$U⊂ ∂F THE BIPλA¬1_∞∞4λ∀$∀Q4j4⊃R1)Hα⊂$iH'`∞E IFF G@π⊂⊗ε∀YαN	zTdλ∪0*)h⊃TI@d¬ @)!
~)Xπ3@4⊂q∀D	qH⊂)@⊂ ∂BJECT IL∧A)⊃∀A'∂5⊂~QX∧¬$Dα4hλ$j⊂$TP 
EAL¬∪≥∂→+⊂⊃α|r2eαL1α
& ↓Q9@⊃Q#@7nh∩*4⊂πg"Kα THE BIT↓)≡A$B∃αJL:"Qα|1αRλT∧8∀H⊂I~α⊂$iH'`∞E IFF GAHβ%,A'"⎇*2"λ→E≤@c"Ng]P&`T%P#)∪d¬ @)!
AπβHA∨A¬_	αx)$,≥D	∀`$∃∩⊃$
q1s(Yβ*≥@ THAS @¬∪(A%&A6,
0∀Lhxe,@λ∪sIK εE≥Nβ; IF T@⊃
↓β	$A	∪ ⊃αM→α>hUbα¬IλU≤*λ¬∩
(1(⊂I~α)P&Uij⊂!⊃P 	N↓)⊃π∀Aβ "~QαB⎇~&B→ye~@Q'3@7h⊂1h→3H⊃IZH⊂
$⊃P!gg∃α@≥∪∃_
∞∃∧z→α≡≤jεJ-αBE 5ea∩`$∃∩⊃$	u∩⊃*$⊂R5
4⊂∧g EACHTπ↔%λ4∀vvv↓β%
A¬%%β≥≥λAβLA)=¬*N∃α-↓α
J,)α
&%→α~J|iαR"*α2ε~ α⊗*⊃∧z→αRD)α↑>∀!1αB~.⊗⊂hQemm∧J1αε∀zV*⊃¬""*λ¬∩
(1(⊂I~∀h⊂)JQ01∀⊃⊃4h:R0Q(EH⊃∩λZq(⊂I~∀h∩)h∩0p*H(⊂d⊃j λER
;+≠ OR NOP DHE SEGMENT CH∂≥$
&:M¬2ε"V*α∞⊗2e→1αNLj
>2~aα>I¬~εJMph($λhR≡∞
m∩-uu εβββ∧↓⊂K]IλU≤*λ~$*∧→IB∧dXjB∧D→Hb∧4H_u_h(x4(q∀G'V7oF%/∀q(y∪q`⊗M←⊗XOβE#aa⊂`i≡NQaa!b∀/VP⊃
	αGC@∧p∃Uλa1UI+⊃UH$HI`≤4z ∧)5λ∃~⊃3u*D∪3qλQ"VVK'-)∧εελλεB!aa#∪βH∞zz@~∃∪%A&A
β4Y0Y7YεW'∪4W'β$-⊃≥⊗At~∃55hz{55i>Rb~)∪
≤Ai54M∂
∞∩⊂aαjjSivjjUy5H4T:∞	εt
5uvURh4
L2N∃α@¬BZbλx4∧4ywSl<8(d|⎇K+%Ph*HU∀l→aPPh)_d:∧x8$Dt5Xt≤∀8~"b¬x~$b¬8x4l
)4¬,LID∧d⎇8T∧|r	
Tt];QPPh!Q hPQ!PT<::CPH⊃⊃∪\<4
4,<XYe"¬H_$d(Q$ααα	_d*¬λ_tLtuD∧∀dx92∧u8Xu_K8iu∩¬λ_tLtt
5M≥HYR`h!⊃⊂HK4
DD
λx5≥"
H∀∀dT	∃~¬8ZB¬-∧λ∃"¬*Yb¬$→XR∧∃∀	∀tMEaPRα∧∧∧L4d
∧<→hreXQ!∀L3∃D∧∀dx92∧u8Xu_h!→∀3∩K1PPL*H"skX*D∀d8∧b!↔q∪ph~∩3sDλsu3JH4H⊃IzH⊂4j91sR)hh⊂R*D⊂S∪h→tc"A⊃)⊃pj:λ⊗Q*%↓Q@21Id∪∪pI~∀qk∧∧⊃ptjD⊂R5¬Eβ!!")⊃h:uλ∀jE↓Q@")λxtuλ
;4k¬Fβ"B!∀⊃ptjD∀p4EI⊃h8S4Re8ppTh~C"B!∀⊃ptjD∃Pk¬E⊃ppIZRjqh8UPc!!")⊃h:uλ⊗
hkε↓"B"$Hptu∧	4lK	Eβ!!")⊃h:uλ∀k→+∪¬HppS*)jqph*v3#!!")⊃h:uλ⊗λ+∪¬Fβ"B!∀⊃ptjD⊗⊗⊗EEβ!!")⊃h:uλ∀k⊗Kε↓"B"$Hptu∧
⊃V¬Eβ"A⊃)⊃pj:λ∀⊃J5↓QB")λxtuλ
λS¬Fβ"B!∀⊃ptjD⊗⊗∀¬Eβ!!")⊃h:uλ∩(jk∪λ%⊃ppIZRjqh8Pq∀E8ppPh~C"B!∀⊃ptjD∩1V¬I⊂KλxpS4I1"B"$Hptu∧	1S	E⊂K⊃h8S4RaQ@21Id⊂R1ij3+λ∧Hβaijλ!'⊗&!⊗#aP&i%UQaa!b∀εE∧f⊗,!)cO↑f,,⊂icFEαDR#aTj_P'⊗,!)cK,,!⊗∪⊗⊗_εB∧dc"H&#a$U)cV⊂	 πCST BIT,,,0
		$GCST BPS,,,0
∩∩⊃∂π'λ↓→1~X0X`~∀$∩I∂πM(A
1@XXX`4∀∩∩I≥π'(Aa
1 X0X`~∀$∩I∂πM(A
→@XXX`4∀∩∩I≥π'(Aa
→ X0X`~∀$∩I∂πM(A X0X`~∀$∩I∂πM(A1 0XX`~(∩∩I∂
'(A'@XXX`4∀∩∩I≥π'(Aa' HX0`∩(HI∩∞∞≥!αN∞⊂¬Bbc↓Q Jt	9∀dbλz2uTX∧C!!21SDλppu¬9Tq1j5+Kλ
X4S@⊂↔↔⊗caTh∧,[=Tπ%∨≥≤AπεAM∂9(A)β	→αA→∃≥≡R@∧αE≤α∪u)Hλ⊂Q$4ε')QciV-JnBE∧WDXEND AF2
    Y∩w∃_
"	xb∧Li`¬∧y→d8h!Q%∧xZUHαC"J:⊂q∪j∧∀u⊗-ibcSbg*∃ a&"WF@


~∀4⊂∩(hR&~9¬αε≡→hrb¬8∧⊂h	uλ∀k~c"L&∧α)∩	~q1c!_X∩∧R$f'aO↑W∧DNdπRIGIHA∨_A⊃&<AαN⊗<j⊗ 5AQ hU8⊂B¬¬8ydKαH↓⊃".u	λαibP∪'a`j∩dπ@≥&↓
∨$AMβ∪_A!∪'∞↓(
ε2L"εR→y`hU8⊂B¬¬8xD-∪αH↓QTp!∧
∀qq+
∞H↓QTp ∩λ()ch∀'_
 0
~∃M+¬))0∪¬∂%_
:&t9α>→¬αVJ∃∧b&NA¬~fNR,iα∞≡$(4(Q!∃∧pSu∧λ4TC!! ¬≥]Nβ THESE COL¬')β9)&AβI
A¬+%→(A∪9)≡A$B∃α∞|jB&2-⊃0⊂@ NfgP*$"VP"`∃ST BE D@
∪9λA⊃∃%∃α4zIαRD)α
⊗t*~&Q∧z→αRD)αBVα9∧b∧EAD-OL¬→2A→∪⊂∩∃λ∧αDID¬ :R5⊃*4∀Q4hZUQ1¬∀λ¬∃∃
∃∃∃εB≥]]@λ⊂⊃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃εB∧¬αSUBTTL	ERROR UUO HANDLERS

.CEE E@RIH
(~)!%≥Pbt4PJBVNDQαA2≤
ZaTHI`≤-*)u∩¬λ)∀`& εE∧T*id∀⊗ iλBU)bbH i)'T→FE∧T*id%λ(⊂MSGFCK
λ	SKIPN V%PR1
	 BRST EPRLT2
	MOVEI B,(AR1)
λ	CALLB  $1↓,K↓Hb~∧∪)%'(A∃!%≥λL~∀4T*BJ:#⊃`⊂MIIr∧
&⊂ε&λλ_∧@
	PUS@⊃∀↓ XI!I∪⊂→DhR⊗BJu!Mhε≥"JQ↓λεre]9≠∧)5λ↔∧∧7↔#!↓4∪t∧
λε iFA∧e∀)j⊂)∀h,⊂∃
λλ
(hR⊗JJ⎇⊃Eh→Yu (αfP*∃⊗*`∃TTSV
	IOVEM R,UURS@,4⊃⊗J⎇⊃Fi@!→%≥αλ¬∃¬Hαi)'T≤@		;PROCESS A↓→∪'↓%%∨H~∀%∧RJNQ∧*J>Iλ$%@4¬∧d4T@⊂⊂dεD LER3)
λ	P@+M⊃∀A1≠'∂

⊗~∀∪5_∞@4Y∀∧"bβ(@∀∀∀@		;D POILTS TLεA∃∩~Jεl(4(~
U≤DαH∀¬Hαi)'T→FE"T'i_`N∧fgk⊃dP @,L¬∪_~(∪∃%'P@dY↓m%%%Q_
`(β"C!πnj`	ZqqR)H4h⊂iλαae@.  GET VALUE @∨↓≠'∂
%→⊗M∧J1αε⊂ε∩∧h¬⊃*$⊂r⊃(e`	NG BOR
λ;;+T¬β→∪⊃∪!2\α↓α&→∧	α2≡≤*I1α≤J≡ 4→D∧@H⊃4J)tH⊂(j⊃0@⊂∀ ¬SDORING↓∪ ⊃ααIrαEE∃`hSαh
@; SAVES A.
λλ
¬≠M∂
π⊗h∪⊃%%hAβ$bαbP∀m8xdL@⊃0	FBαSFA⊂∪∃' ↓Y≠≤:~
DHI`≤@02q$
u0	"H g⊂)Q P'"Uα@$A≥ ∩M∧J0∃4y8T"∧h∧SiQ TqH∀α,α!⊃,¬P&T!&'eK⊂!*jλ)j$f∪⊂"'P∃αALIDIP	2A
⊃⊗∞Xh ∃≤h⊂	∧	4qqHXX

	PU@'!∀A Y5!~2|X$%@8∧ri~∀h∩(d⊂ε$iU⊂ ∂F FILES *NOT* VALID
CMSGFCK: @!=!∀Aαb6N≡4~,4λMαVN∧
αdλβ"B)Yβk"dH V∀ T_TFEαh*`∪HJ P,N@π⊂≡h∧c!∧fgk⊃dP!,QH'∂→∪⊂∩⊗α1P@!4⊃4i	H⊂λ⊗⊗!`∂NS
∪≠=(
,∀λ∃∪
J~DdM8AP@LYzd,@(⊂4F∃α+&iQc$f"TFE∧h∃i`%⊂∀⊗-dgS⊂-a Q⊂+ f∃bP#'T⊂ 
@'≥
∪→LC; 4hP&B≡ααA2∧hP&*J≥!α6N<2≤XQ c\X∧TI@i_	 LERF@%¬≠
AI_∞I@_⊂λλZTTU	@⊂"`∩R2 @→'A%(`A
→'!∀*P (αC"J:αa**∪∧b`∩RFRAME @
∨%5β ∩LhP4)@4ε`≥H εORMAPλA∨_A⊗J∀2Jε6+P4)@4ε`≥CE_ 6βYαmFh∧∧`)tS0)D∃⊗4λT⊃0	)∪βR (ERIN@(αaα2⊗α*"b∧X¬⊂e@∀@
;8εv∩∩q' |X0y%%*J9α5∩0≤@(⊃4J)tH∩(d⊃0	$SαT>
8εvv∩$I⊗J∀2Jε6(h ∪[4εb!↔∃0
gO∧@	;AD@	%M&A>2α6N≥∧J0∩¬)_tE"	λ∀d@εE≥Nβ;		<S(E↓x$↔8d`:H⊃4I→β*⊗⊂∪ ¬R3
λ∧vv@Xh ∪[4ε`⊂⊗β2P~A∃%%¬β⊂A)3!∀Aβ%%=$@@"Lb1αXYR¬∀XeB∧5⊂kE⊃ ¬≥@;8ε∩%e~Ai1cbε∩∩∀*NMααy∧-∀TλU∃∀z λ	@aa`∃RR@λ|4⊂	mmXH%∩⊗α*$5∀→XPhSαh
@;		0,,<ADDRESS OF E@'≤|⊂∀	u~⊗∃α-∩J
ε h $
-∩J>IKP&BV≤AαA∩-*6 4PJ"J2h∧¬≥αβ
∀¬⊃ B4
Zpλ∀¬Ki⊃4J(TP3([".tH→β"'fS*fa"T⊗⊗"h∪h!εEαh*`∪H P,40		0↔π¬→≥∨(↓⊃β-
↓→⊂@Z`vAπ∃
A¬I!%∪≥P~∀&¬*N!ααb∧4
d*J
Jj∃uUS $$¬\b⊗ 4zIα∧|dλU∃∀h∧P)X((
@`j!dλ* $iH$g⊂!PibP'Q⊂!d S!bFEβE$c'λ$j)V⊗FE∧W∀jibjλ-W ∪PIC@→$0Y1εZE:~∀∩9'+'PA6]≤"→E1e⊃UBthP%:N-~⊗@"	1e≤$f!Be∪vPhUβ""'bg"∪βF IFL ITS
IFN @10+D20, PUSHJ P,REAIND	8π%
[∃_
ε
d)α&:$*JJV¬"L4*-∩6Ifλπ M≤9~∧r¬λ∧v)XA"B$
pr4λT⊃0TJ:c"B$∧∩TTjD*∃
E!"B)*Tu⊂
**∀FB∧A≥]Nβ ERRLπ$A¬∃)+%≤8@Aπ∨5
A"-∩∃αRzαBεJ4zJ5αqα⊗J∀zIα
∀*ε.>-!↓"J-"VJ8hQemm¬"=α⊗∃∩N⊗Q∧zIαR⎇↓α2⊗4*1%9ααZε2,)αR=¬∩⊗BV∀qα~J|iα⊗J∃~⊗AαLqα¬8hP4*⊗∃∩JR9PJN⊗RTiα:>
*&P4TJ~9αM"M2lhP%:N-~⊗QαXrNB&≤bI12D→5FthP%:N-~⊗QαXrN∩→
a2I]¬h4(¬u~VN⊗"αm 58Hc∩bJ&s¬hQ+PHK8Yd"∧xd∧L4d	∃%_Q)∀4rλF∪α\F"αb¬λZ4DR
¬E∀,→→e K8(Rl,h_$d
	→e$-**U¬%1Q M¬X∧r∧
	⊂#!↓4rr*	λ⊂#
YTQ0)A B(

4r∩D
	⊂rλXpp
DB]ad"PβK FOR ANY @ELAYED "RAAL TIME" INDS
↓POP P,A
E@%Hdt∪'-∪!
A∃%%)≤$∩w)≡↓)∨!→∃-⊗1bα6Iα∃∩⊗ε-∧zVQα|1αε9∧*JJN- 4(¬∧RJNQ∧*JI@HIf≡=∧∩JεεX∧¬-αλ→b∧-**4- Q)E≥¬*FβPM
Z4B∧i
αd≤~J%$p⊃↔5∀-JZ$b¬It¬$⎇∧	D-Q3λλjSs 	I4tλλZTStAQ@2Tj∧⊂+⊃*)3R,↓Q@∧h'T⊂#$(!`j)∃'∧D]Qe)P'⊃bb)P∃'P"$∀'kP#∀'fP H∃))bU⊗j) Tε@
CLSPRET8λ
∧∪M)4A∧Y→'¬∩⊗@ Q!∃≤\~λR∧∩Jee%∀~↓⊂K\→jdl\T¬%∃≤Z@*JP4β!↓(⊂p)I⊃H%E⊂J#!!33uHT⊂+∃HZTS∩*:β"B)Yβk"fH V+$Th¬OTIEH
(~(∪∃+≠A
AαY1'!%P~∀&E∩Jiα ¬D6@εE∧R))-⊂∃⊗_T*
F@
	CAIE T,HACEL¬(∩∩m≠β≥LA¬+∞αα0≤@H⊃4J)∩4u↓Q@∧P%∀)j⊂&∀h)"jβE	MOT¬∃αλ¬E (αi)&∩ijεEαh*`∪HJ P,NAH∂:α1P@LYzd,Jλ!E-*)DM≥AQ M¬X9∧R¬¬K∧@sP	FB∧h"iR⊂(⊗!S)h ∩ET	∀∪→βεA↔A≠''∪	→2A
∃→∨
∪=+&AI%→∪'P@ZA↓1β'
↓∪⊂~N∧*ε@"λ(T4⎇(T¬¬∀x8T,$α3Qd≠ εEεBβ≥b`∩RLπ$fA∃%∨$gAβ%∨Hg
AI_∞IN0h( (*:T∃%IA∀-∀→jBb¬8Z$L@Uλ	H4TC∧	⊃0DaQ@εE≥Qi)'i]X∧NβPRINT OUT ARROR @≠M'β∂
↓
∨$A=%↓β≥¬%24PH$%@4	DM≥∧λU∃∀z*2αDβ⊃4J%λ∪⊃*&hε⊂"T$g", SE@%%_
Q$hR⊗JJ⎇⊃Mh⊃⊃⊂K\8→Dd1λ∃I_(λ∀
Zp∧%⊂∀⊗"`∩RLπ$f~(∩∩$KZB>→jD-∩λ¬∪d∧α"`∩RFRAME IN D
∪∃U≠!
A¬$bYπA_∞B!Q LLzhTJ∧∃JE∃-I↓⊂K]λ∧Q*@ ¬ND↓β ⊗RzjR-*
$J∧α3@⊂∃$"FEαe)`⊂∃⊗)`⊂E@π¬∪≥⊂∩∩`-∧j&∩∩d)α>→∧
0∩∧X∧TI@i⊂&bTi`cbCE	   0 A1(	εR-∩BJ$HI`≥≥λX4)3Q⊂∀`k"iH εE∧R)&$P⊂i_V→__⊂⊂0		0↔∨U)!+ ∧∧4LHZ2∧dα4u∧λSt@⊂∪icP$Sα ARD~∀&d"∩¬J@YYP⊃D``@1c	""α7"'h⊂$ TP!"bSα S@)¬∞.⊗ ∧¬-αλ+∩∧4TSj' εE∧R*f`⊂E TT,EROR3C		0↔I%¬λdααBVNE→α6N8∧¬ 95∩⊂∪αO LERR OPERATILπ⊂_Q!∀E∃+$∧
@J⊃¬⊃ ∧]fUij⊂#⊃h∧CH↓)⊃
AL[ "¬∩⊗NNLz0∩¬It¬¬∀→j@hPα4u
*λ⊂4F∃α-adV!$j \X
~@X∧∃e@ ∧]h∀ ¬CEDE @≠≤9α↑~Iα∧
∧ ∞d∧¬∀∪
β∪
AQ(Y2-∩J`:β(	YB]`ERR DOESHO(ααBJ&u!αε9¬→6⊗@λ↓P@!(⊂λ*Td 
 P,@!∀J0∃ Q!∀823@⊂∃*⊂SERIN@)|Zff∩m'%∪9(A"
→αε9¬→6⊗@λ∧∧m≤qQ J∧αTTjD⊃0	'T→cεEαd∧DB↓αP∩mα 
fελλ⊗_T")]	0↔∪_A∪(A%&A2-∩Iαz λ	Hαi→Vλ* λEN
∪π¬∪
A%!2-)→e%@hεYYB]P @ L¬∨9mR⊗J=∧
~∧i_Tdλ∪1(→β)FEαP 
UMPN A1%∨$M∩%XαR"∃∧jN≥αM→αε9¬→6⊗@λ↓PD4StF8nC"A~u∀U∧λ4L ⊗⊂_T")		0↔≥=)α`)¬""&M∧~2>
∀*JMααZT`9λ∪⊃*@ ¬L VARS
EROR3E:∪'Q%(AβHbP∩NαJ%$≥!Q LU*:B¬,h)∀`(αεEεB ¬ROR3F:
	HRRZ A,1λD)~∀%!+'⊃(A @1%αJ&:_h ⊂L**5"∧X∧Sj&q#"AQ@↓Gq0	)∪βR5 EROR5F AROR5A ERLπ$mααα⊗JJ0h  ('33@4∀⊂	'PβESS ERINT-SE@%%→(Aπ=%%πQβ¬→
↓∪⊂~R-∩JVBαJ0hPβ"Q**StM'↓33uHY(⊂
**j`∀TSR¬
	MH∂-4A$Y+U%',~(∪'π∪A≤A¬I)≤α∩mβ→2⎇9αVN-⊃α&:$*JJV¬!αRt
%,rAQ J∧**5"∧X)u∪,a⊃∪@4⊃1Q)@⊂ c⊂∩dεSIDE AN↓%%'∃(X~∀%'↔∪!8A-∃∩N⊗PHI`~∧α1H
I⊃(⊃**Tq5∧λTQ0)4⊂4h
85β"A∀⊂TTjD⊃0TI@i_DDNβH∂)⊃∃%/∪'∀XA∃+M(A	≡↓_
>Jl
1α⊗∃∩0≥⊂β"Q*)tM1G∧f"!λ**⊗-L≠X∩00,$40]
α	CAIGE TT$NERINT		;TTHAS AA FIELD FROH
A-*<4(JαN.&∧qαZV$1"RQHh(%↓∧RJNQ∧*JJ>∪λ$%n≤z:Z⊗∃!αR≥∧b⊗IM∧J→α:⎇!α⊗:∩2⊗⊂hP&6>4*%αQd*JJXHIf*>∀jε1αDJQα~∀z5α∞|"∃α
,b6@:	~2¬∧zε$R`Q!∀821(
J∂	)→βb/VL≠←∪_MDXIO-H@∨'Mβ∂
~(∩Aπβ%_	αR aq,h_5zK&sb3q↔44→ET≥AQ Jα	Yu (2(∃¬H5P3¬@ BE"T'i~`N∧h*iR⊂#$(*εE∧Sgk"dH*⊗∀*∃∀D]iPk"P PP ∞UMBER FMR BELOW
	JSP TT$ERROR9	8π!+≤Aαε9∧*JJ>∩α~Jεl(4(∀	$4≤AQ LlzhTJ∧∃E∧
HQ!∃¬-9λλk∀∃↓Q@∧e)T⊂*⊗(⊃&'&eCE	EX@π⊂Aλ0Q¬ "αH4(_8∀L:λ@πDαjcj↔TY≠@>&17
	 P@+M⊃∀A1βπ>u_4(~
U≤Bλ¬DλH↔8d`:H⊃pd
∀SuλXu∩3iD⊂πg&⊗F@
	TRO D200  $∩w¬%_
Qα≤*J&⊗α4¬-≤X λ	→β*"i∀*h"εB∧d!&∩P"⊗∀⊂TBE∧Sek"P∃*⊗*jU*)cεB∧fgk⊃P*⊗*Uh)`⊗
λ	SKIPN INHIBIT
∩AM↔∪!
↓≥∨#+%(~(J↓↓:ZbV∀∧KZNBVα	∀"¬It¬≤Lyh∀b∧X*$`:H⊂d⊃dε INTARRUPTS LLππ., 4(~
U≤DαH∀¬J23U↓Q@∧h'T⊂# _P,D
	SQB P;ERRIKB ERIOJ1 ERIOJ2 ERIK@∀f↓%∪∨(hA%%≠∀jA∃%∪∨∀`Aβ%∪=∀nAI∪⊂≥Z∩α⊗J&|QQα⊗∀J=J¬∧*J&>SIα⊗J$∩1α⊗∀2:2TλU∀M
∧R∧-*
%"*λZ$4∀TT∧-∀_Xb*∧Z)∃≥*TλU∃%)`	$λ4SThd(⊃4IhαaRP⊃i"' IP"a'∀b∩P"T$f*RH"i')∪RP"i∃d∧C% ERNET% EBPMA% ERBNF% ERCSD! ERDNE% ERSNF% EBSLA% ERLVL% ARNCE% ERSJS% ERFCU% EBLLπ⊂JA∃%≥→∩∀A→¬Q↓_~∀4∀∩∧vlp
α→y%∃≥D
U,zλHT9q⊃4ED∃0p(x.C"G↔nb"%Hp3∪∧λSsb'→βi⊂↔∪h"g⊗λ'i⊂+R j"k⊃iεE≥N]DDP∩ee))U⊂'⊗#∪eFE≥N]P$gR))j⊂⊂`jibTP P*∀ g)c⊃i⊂*'H#'gP⊂c*"iλ(*b*∩e#P$S⊂!P*∩"FE≥N]P b⊃)"aiH'c⊂ H)dl!∩j⊂∀)U)*⊂#∪i&`j
P)j)∩g#P$S"$a`U$g#P∃$"FE∞]]P"T)'i⊂∪bii`QbW⊂⊂∃$$iP∪bii`QbP&`VP!"P⊃dk"gλ*'P S⊂"i$S*εE≥N]P*jSP∀*,T$a`f∪,P∩dSd∀Wλ'⊂$iH*$"P∪*fa"T⊂'c⊂∃$$g#TP'g∃$"FE∞]]P)⊃ch"&λ a'k⊃P*$"H)"`∀URN ADDRECS - THIS IS A CROC@⊗AM≡A)⊃¬(~∧vlp
α→y%∃≥Dλ4rλ∧u	_ph∃	λαP b⊃)"`∪S OF A RE@'Q≠%β)%≠∀A∀zVR→hPhSαjnd	qH∃	λαP ⊂DL.  (THAS ISF'T D@∨≥∀A∪≤AQ⊃∃α!	AαZ-∩N&>p¬B∧DzxU (αi↔)
3 6lA
∨$↓∪ ∩MbαR"∃∧j6NQ¬∩⊗∞⊗u!αεJ∀zIαε~α∩-HZ$lLhXB∧∃∀¬d∧≤	`∧M_Q'3@7h∪pJH23Q(D∃R0$
⊂⊃(λZTH⊃λZR0q$λ3Q
:⊂0rhXλ⊃4∧	qH⊃IJ	C"G]]P#∪i⊂"λL⊗⊂"*λ$iP TijfbQ⊂*'P⊂βH∂
	¬∪⊂→ααI∧*∧β∪si:4q)J⊃4@↔T"g fQFE≥]Nβ EBRLπ$Aπ=	∃α|1α&:αHU∀
:@∧λ3Q	~h⊃4hXλ⊃∪d	3Q⊃+∧⊂(∃λ_S⊃+AQL¬P≠≠ BORD20, THE MMST RECENT ARROR AS Lπ¬)β%_
,Dλe∀|T
DD(⊃4J:α)εE∞β;; JSYS AL@λA≥"ε∞8XB¬-∧	tb∧iJα`!α@
;≠8εAπ→=

⊗α*2¬$α⊃(	(pε⊂!∃c#"iλF@
;≠8εA+≤*Iα→jD-∃*Z¬%~λ9∧`:αf" @¬∃αLr"&
M"⊗⊃aQ hTX∧TI→β`
:
λ∧b`J%!+'⊂ααA2∧HI`≥≤~hR∧8∧c!_X∩DT*id P,B
IFN D10$[
λ∧∪⊃¬I
AεYQ(∩αw%'↔	βQ
A∃∩0≥∩λ9t$ εE∧Tedh&λ!DDDNβIF TT CONTAINS S@∨≠∀A/∪Iλ⊂∀!∀∧823⊃$
∃∪λZU⊂S↓↔h⊃P)J1+λ	*4q⊂⊂βALL IPλA$B∀4λJ↓αN9~∧
∧5HU∃$)ESλKαhλJYRsSj@dε ERROR"
λ∧∩@@↓≠⊂≡Z*α~@⊃0	*⊂αL C)	;@∨)!%/∪M
A+≤)α¬αα:D@Q⊂4HD⊂εbiT`cbP⊃)'f@ THE TABLE
λ¬0∀⊃↔4,@Qλ∪hd⊂∧c'λ ∧10
λ¬∪
≤αα&@%58C∪αβ⊗c!∧h"iR'⊂ ⊂,2	↓;PUS@⊂@HA'!βI
A!	0A'2⎇"L4λLb∩	αλb`≠∪vεCβαβ
εα@	;GEPλA≤4⊂λ&ε$"%α¬c⊂$%@8_D"β$λd`:H⊂λ*Td"b ACS
	IOVEI C,(P)~∃∃%∪∨∀Dpλ&6⎇2∃α	biI"
HH%nNE*~4HT¬∧⊂ε⊂*T⊂*+gH)`OTS
α	MLπ ~⊗h∧∧%λ∧!TCE	SU@¬∩Aε0b~(M~0≤Ttλ∩d4R3i& εE∧SdπVEM BLP,-1(C)		0↔≤
R*λ:U∃∀YjB∧S∀λ
	p∧g*⊃i
	MH∂-$AαYI∪⊂≡'⊃⊂K]	Iuα∧α3@⊂⊂b")"TiP'cλ)"`∪TLπ%β)%_∞ 2λ∧SjZ⊂∧g"CE	MOT¬⊗5∧	1"
Hh ⊂LYzd,Jλ5C
DiJαHhαB4
Zp∧⊂#⊗(⊂C
λ¬∪
≤αα&@%5K0hPα+TjZq1⊂⊗β(
%¬
⊃≤XY¬:~(Jr≤ID∧-∀→vd@ ¬∧PαLGSE 1400
∩]
β⊃1∧*J&>S0$%@8xU"∧β3tjD∀Q0hYβ*⊂"T)'i FOR THIS JLπ∧4PI↓:2⎇~∃↓E εβ@ ¬∧fShεE A,[44@j``X1∃π2∀2t4!→TmQ2(λ⊗"%!S!#∃!⊗h∧S@/⊂Zb4PI0∀≤→IB∧4R3f@ @		;R@βλαα&@"	→b¬-9→d:∧∀
4L@uβ"A∀λπ&'TbP⊂⊃P``~∀$X
∞Iz4*¬IZ∧5αεE.BDXEND @∨↓∪
≤A%)&~∃%
≤Aλβ⊃A2lhP&"J∀z%↓EdR≤@⊂QC!∧d ∩LLπ∩@@⊂¬B`(β$ ∪LF	↓;GEPλA≠=' ⊃αα(T83Q⊂⊃i)'iλ!'i TH@∪&↓
∨%⊗4⊂λ&"α)E@)(λ	V↑ JCLBF*BYP	'<!5E@aQ L-*:E⊂@ ¬∧P∩ f*∧BDXGRLπ'&A∃%%∨$4⊂λ%αT2ε  ⊃⊃∪@8U1QHZH∪SjD⊂R1dλ3Su(yβ"W!⊃,¬bg⊃⊂ ∂F IFN D20
	IDPB↓_
&1dλ4(→Yu (αdP K⊂π#		8εFA∪LA)"*αNBJ ∧¬
3u⊃$λp∧ i⊂aj"iβE	PUSH FXP,[4∀070 ,,JCLBFX
~∃∃%∪∨∀Hpλ&6⎇2N%α⊂¬BC#Fεcβαβ
λi∀
*!Q@∧h*Td⊂#&∀⊗)≠HβE"`∩ILπ∀f@PJ& $H λλT∧ ⊃
a R$KZ≡⊗Q∧	α∞α
∩ε∞R-⊃α>→¬""*λZ%∀⎇$	T-≥8_t(hαB0h→1q(λT∧40
λ∧∩A∃I' ⊃α-∩& <αNα!↔p3V$λpπg*∀'` CHARACT@$AQ%≠∪9β ∩⊗~α&@ Q!∀821q$λi%ε↓ .pi@dεVERT CHARAC@)∃$A)≡↓'∪ "∀JQ04PIαNV∀Iα
⊃#$%@4λ∀ddβur)@ π LOTπ$A
β'
AQ_
α↑⎇∩,4λL
0∀⊂∧P!K≠[FEαa`dbH!P'∩∩`.α9tl*λ9∧
∀_:D-∃4
$-
Y~$*¬~Yu$LhqP@!(⊂p)→β⊂!V	o
	  BRST E@%%_∞)ThP&∞εLqα
Dpλ!Q@∧P%∀)j⊂"T$ge~CE"`∩ILπ∀ht%∪	!∧αα~@⊂B"'b"`⊂OSIT SIXBIT O@≤A→→ ~∀%)→:*α∩cvpεεβ"A∀⊂¬))U⊂"`∩ILπ∀f~(∪∃%'PAβ%∪=∀d$KZ2=αlzJ*λ∧Si@d¬ -↓≠ ⊗N ∧¬¬-9λλ→β'j$⊃i⊂ ↔OR@

λ@%∪=∀jd∪%	!∧A∧Y∧$KZ∩-	z4Mλ⊂λjSβP	&t9α∞λ~$≥HZ hPα5∪	@ ¬ B0h
@;∧∧ε↓α@
	 JRS@(αα⊗J&|QP$↔8t`4⊃⊃4	@i`	T↓%⊗εbα≤D~(∀:α"`∩
λ∧∪≠∨Y'∩A∧αa!QQβ1AAEE∧4e¬∃⊂hPα4∃*9λ⊃S
¬∀Md↓⊃,¬g"Qb⊂ g∪βP	↓HA/>∀!α
&∃~P (αB2J*uλ⊃*)3rM↓Q@εE"T$ge≤∞α	POPI F@1@Xbα∩m
→+≤AαRα*α∃MHT¬∧|α3UλZH∪sDλT∧ ⊂
λ	POP BP⊃14*-∩& <αMfA→3uQ)∀⊂+	d⊃ .s*Zuλ∃j)5⊃(
H4S2)@ g"$Sdε INTO CTRING
λ	IDP@ A,B
∪!= A Yλ∩∩∩wI')∨I
AαA¬→⊃α⊂h &B⎇↓αAH⊃PE@ ∧D]QdεD OF @∪
8A∪)&-λd`~(∪≠∨-∀A(I+U)',~(∪∃%'PAh`$∩w)⊃¬(@≡Mβ!A1αtzQαV,z!¬↓∧jVNQ∧*~4X:B∧
λJ$U8hU⊂H!Q$L4d	∃%~β⊗c!(αi$gM!→∧iQj-εEαidl!∩h⊂∂STAPU@&<~∀&λH$%@8(∀"∧9λ∀ttYAPPKFε#ββ¬EDλH↔:5$
JZ2¬∀X¬∃*)Q1β!↓α@
ERIH∂)3P&N⊗αK hPα4r+λR5It⊃3KA".sjλαg⊂#∩d∧E
	   1000,,TMPC		;CHANNEL L¬+≠¬∃$⊂∀λJ↓↓↓↓α↓12n≤Jb
&"αr-*+EhKαq⊃*@$abP∪αAME
λ	1000,$3			3 &↓≠β≥LAβ%%=$A'$
RVM∧J1α~pε hPα-εελ¬H!"C!λ4R3f@ Y∧iQh-εEαidl!∩h∧ LSIH∂)8$∩w'%∩& 4t	∩l@h⊃∀H→TqQ*! ¬∧Pλ_X⊂_⊗*&h⊂D@	;CHANNEL F@+5↓β$~(∩@@@@@@1dλ$%N∃JR*λ∧∪i→β*"iβE	40000 ,,B↓	;@¬3)
↓∞ =Yj@hUβ""'bg" LπA∪→_	αε%_4(Q)∀4r	~E~\F&αeXQ'3@7h⊂	"Th#i U$gg ROU@)%_
(Q!PD4R3i',B4	@h⊂ ⊗⊃&(∧DNβRE@'Q_∞J∃∧22@4PJB>BRαA0$HI`≤@Su`
(α`f&⊗P)"j∀'⊂#)∪βH
A∨I∪∂&t
1α~,rεB→y`hUβ""'bg"∪βF IFL ITS+D20
λ	∃∪→_	α⊃	↓2l4SY`≠ZλH∀∀dT	t2¬8¬⊂)H⊂4Q∧	⊃srjZ	q3JH4KtHYβ fbH i)'T)FEεB∧iadV!$j⊂↔*g%g∪hπF ERROR!\Y~∃∃%)¬_h~∃∨
→'(@4\~¬I
≥Jht∪7π%1¬∪(↓9
∪→∀A≥∨(↓
∨+≥⊂C9:~)%∪!@Jt`(MZN&b∀JQαrtz16⊗DJNB⊗u!αBBp
rt∀T*JBJ")`∪P≠:4MD)~B¬eλ∧SjH0p
$Sdε @-%≠⊂∩ε$J6)εeh4*⊗∀2
5∃SP&nNMB
&Q¬b~&2*ααVNJαα,→hr∧lxI∀4LXD∃ehβ"Q*(11I'πB6ti≠⊂R5∧⊃R3λT⊂3∀HX1⊗(λ[⊂4u
45↔#!(4R4jT,NB+idl!∩h∧ @9%→→∂¬_A'E+≥π∀A∨AU+⊂≡M
bt4(Z%%∀dW#@HαB4h∀"6ti≠⊂R5∧∃∀P)JpεdiTdgg⊃i)'iλn.FEαi`R∧VβSIXBIP LDIFFEREH
(A→∪⊂∩⊗t
6∃αα:∧,≤α1R(Xλ7↔!QQ0	'∀c∩]≥βE	SA%	P↔π%1¬∪(↓9≥∨(↓αA'βY
A
∪1
C9:4⊂∪'α⊂∪7'∪a↓∪(Aq)⊃∪&↓%%∨HAπβ≤≥(A⊃βA!≤Cq:~¬I≥⊗
+Qh4λM~¬∀&]~&b
M!αr~⎇!α⊗:⎇*≡!α≤zJ¬εeh4(&≤	⊂&nα9∃D∀~D¬d∀_@¬∀-J)∀-∀→Dα
≠⊗∧∃ehβ"Q*(∪P)'≥αE∧T`RDmTdl!$U⊂.""U$abP∪'j⊂ U df P&"Pn↔FE∧iPR∧miRl!$jλ.! bλ)"`∀RIEVAL ##1⊃!\]
ERNCD%:0∀~(∪'αJ%3'∪1	∪ A99≡A',~!α∩-2&∞∃
bt4λM~¬⊂&]~&b
M!αr∩M~-αε~α~V2b
rtQ)∀4
λ∧p)→λε-FB i$f∃RX
:	Xπ'∪1	∪ A→%→→∂¬_A+<C9:~)%≥¬4Jt`(MZN&B∀JQαrtyαJ>|iα>9∧2& $T
5%∃X:E-∀T≠Ehh(Z%<Dαi.G!6tr+λR5λH⊃1R(8(⊃tI~α"Vf∪βC@↔⊂C9:~)%≥PJt`(MZN&b∀JQαrtzQα⊗tzV≡↓∧j>*&$zIαR∩2¬αα:∧≤T≠EhhαQ4J	p).G↓6pr+λR5λJ⊂4U	_3λ⊂)I⊂πa`U$gg Lπ⊂~2J
rtQ(U∀∀hdSCP≠:4MD)~B¬D)It9h∪SjD⊃PQ(T4ε.FB i!iQ⊂X
:	Xπ'∪1	∪ ⊃αd~ε)≡ αNVB-∩N⊗∩*α∩&J,~R>JJ
rtQ(U∀∧hTSCP≠:4MD)~B¬d8→b="λHTd
HT∧d|eXTm¬K∀∧$M(X5$⎇+∀∃eHβ"Q**pπ#∩Nα:	[SIXBIT X	'
⊂A≥∨(↓
∨+≥⊂C9:~)%'→∀Jt`(MZN&@λ)∃"¬J8T
∀9∧dM:@λλYαh ∀Y!\]
ERLVL%:0∀∪m'∪!¬%(A9'→λA:-~R,D
D`9βP""Qh⊂n.CE"`∩NAE% 4h∪7'∪a
&Q¬b2=6≥∩⊗εR*α~>I∧
21αα8T
∀9λ	I4p
)Hn.FE⊃i)g)I]_
	[SIP⊃¬%(A9≥=_	6Nαx∃¬∧X@λ
81s1)@*⊂n.CE"`∩F@π ∃∃β' M]9≠∧)5λ↔λ`g∪jλ*h" U ¬ FIL@
C9t~∃∀b0≤BU' M]9≠∧)5λ↔
81s1)@*)P'U ¬RLAP!\]
λ@%≥1∩Jdt%0∞NεD∩&@"λπ∪Izα⊂&'Qcbb∩dε!\]
P~∩$p∞⊗: ∧∧`8 ODD↓∪⊂~R-∩JVB α6εNXh"&~pα⊃EAeX4*&4)αNεLa2l4PJRJI¬⊃2εAt~2,$KZ2εε4)α>→∧
21α-B∞⊗B α≤Dx92∧Lh¬∀aQ@∧fgUαAM R,IMASK		;REH≠	$XA¬→→∂.↓!∩D	u $⊂3@⊂∀   OT @ANDLEB
λ	APREH
∧AHX∩*hIf⊗: α&~∃¬~ε&0hR&~9¬~ε&1eX4(ε$b`∩¬%F@HH↔:E-∀d	t4Hλ∞"Ta←$P∩dεTERRUPDS
∪≠=(
,T
"dLX~4Xh!→∀e$X∧rd
@".iH05Q$	qH⊂)Iλ⊂U*D⊃0pgI,π⊂ S ∧ CLLππ-∧J2RLhRt%@8Yd"∧α1SD
p23↓QTεD]QdεD IFN DD`⊂∀!→∧e∃αH∀EISt5)~αεE∧R*f`⊂N R,GCP@	2⎇0$%@8∧⊃	D⊂πk⊂∩dε GC - LOSE, LLπ'
X↓→∨'
∧BB4PJ6 =hY∩¬∩J↓⊂K\βSueD⊂4hλyα)P)PliV⊂λα20 QUES@)%_∞ 54!P@L*YU∧q(∀¬J⊃∪∩ε↓ ¬∧fShεEI R,S@ 4⊂λ&*,jB<T
5αeλIDCQ!∀l@uQ2$
K⊃S
↓α@
	JUH!∂∀A¬→ 1!∩I↓Q@∧fgUα@∩AHY¬ "α↓P@L*YU∧q(⊃K
λε("∪$_εEαd&)-λ)⊗''Th¬IT
λ∧∪'↔%!≤A⊂h %αd*JIαβ:4MD)~B¬@∀P3HIpεP(⊃&⊂'k⊃i#&'Uβ!P→:4⊂λ&*∃~Qα→jEE#!Q hUλIDCβ!→¬∃∃αH⊃¬Iph@⊗T∀)∀DB]cbjλ'i$cRdπ@≤A=A∂-∃%¬→∨\Aβ%∧~∀&≤
&≡∃∧!2↓λ∧@∀BDXIF OVER T@⊃8A→∂'∀~∀%∧RJNQ¬α∩2Iz0hPα0p)_h⊃⊗⊂∀)∀DB]`	F EQUAL T@⊃8A/
A!β ~∃¬∩⊗ε2eIα>Z-∩~2><*⊂ (αB(	*Tp
 P@	2⎇1D4'9∀2¬xT∧
∃)~d*∧α⊃4HT∃∩⊃)@⊂+d U⊂  iH$ h(⊃dεED↓∪&A$Bε@"λ⊂λ
)u0
$Sα@
A∪LA~>∀~& 4tλ⊂hSαp	"PβALCULATIOL∧A>2αR"∃∧b⊗ 4zIα∧|d
DD(⊂λ"∪⊂ g"λ* λERE DOES @≥∨PAβπ%*ε $K⊃P@'q0$Th∧ A↓!∩D	u %Hλ∃	λαi"c∪βRE, AH@_A]
A"
2∃αRzα∩=αM→αRtλ4D8¬3λ~α"P*∩ ¬~∀m_
V6∀*Iαxd¬,@tQ∀d
Q30)→β$g#H$g⊂*∩ ¬ @!⊃_Aβ≥⊂A%%*J9ααIr∧l→→ddLhU`hPα2∀J+H⊃⊗
)∀DDNβGED↓!∩D
∧`93P
"T∧¬∀∪!%% )∧12
Im↓"I$HI`≤<X@λ
λα  ORIGIOL∧⊂∀!~5,∀∀λBbDe⊃⊂K\9yU¬-HT∧`*30Q*$⊂πc⊂∃βH∂%	LA+'⊂~∀&DbJiα2b≠∩X∧

% ∧D]Qbj⊂#∃d∧@_AM∪5
A=A!	0~∀&"∩%α2a""α""'a`∂MPUP	⊂∧∧:αi)"SαT @'%0
(β"B)
S∪ _eλ∧ ∩$∩∩`.α:D`:Q(∪λYβ#j$λ$g⊂(⊃&⊂ ⊂OIH
)H~∀&E∩Jiα2b& 5JλD`Hα.u	λαg⊂%∃ij⊂)⊃h∧U@%8A≥∨%5β⊂∩K⊃P@!2TTjD⊂∧g*⊗*→εEβE_HER@
A∪_A/
A!β ~∃∧	αJ⊗aαB∩bα0≥H⊂U*D∀p
$S&⊂$ Uα@
A≤z6∃α,j⊗J≡,r≥Jλ∧tλ_q(∃	@P*`∪E
PDLLπ →EPJ6 =hT∧2dβplEZλ∧ ∩)		0↔∂∃(A>4*J4Izr¬∧βr3JHαiεEαd¬OVEM F,(R)∩∩m' ∩z(R∧Ldλ∃¬¬)z¬∀L~HR¬∧IAP@!33uJ9(⊃⊗∀i"ch⊃&⊂
@ !$R4PJ"JJJα⊃1Eβ↓T$↔:∧$bβ3uHZQS∪j@FA∧d∀)(
 R,IN@)A	_~∀%⊃%%4↓$Yβ!M!ε@"α%⊂hPα0p)→α⊂ ∩1+∪≥ εHKαp5I@db⊂"⊃bh⊂$SαTE@%I+!(AIπ+∃~& <βH
εBα	 CAIH	
AHY⊗VLrQ@$KYα&→¬α∩1α⎇2⊗J~dzP≤,D
tM⊂∧$gλ*dg*⊗εE∧H⊂ 
RST PDLH4		; T@⊃8A∃+≥!αNR~-αVα∧¬$DT	∀`*⊃0	)∃h*⊗εBα	JSR UISTAK		; AND↓'⊂≡XYt`(αP ↔ILL EVEH
)+¬→→2AQ%2Aπ!π.Hh ∃∧IJ$-∞B2
*T¬⊂#$g ∀PDL
	JRS@(αα& 5K
C⊂@ ¬εE∀ ∧@→⊂β!`⊂LYzd*¬%HeE⊃↔4,@∀q(
JT∧P*∪β GIVE A PDL OVERFLOTε~(M~.&B*α≡∞~β
HKαh∃*84H∩)@*"`∩RUPT IMH	%β ∩⊗eH4(∀	TmQ(⊃K
λε#aQ,(∧DNβREMEMBE@$αaαB∩bα0≥Q0	#∪'kP$TP ∞OT
∪!U'⊂A
a Y$∩$p
α∩M~ε
2,!α&:α9∀$(⊂
$⊃P("&βE	PUSH@∀A→1 @1$JP≤~A∪@4⊂πk"T!&'kH$ g"∪ ¬R!∧B~(Jα*JN ∧¬E,→j@hPα2TJ:λ∩3JK⊂∧jεB∧¬∃!⊃→→>≠P&&>4)αAH6 hPα33j@ ¬ FXP,F@1d⊂∀!~4-%)Pλ
J⊗3qHaαA∧iU)*⊂*SαRECOT∧⊂∀!~5%∃Dλ¬∧⊂ε&iQT¬P(R)
∀∪)%'(A⊃∪
4Ph ∃∧IIU≤;!~∧`:β("&αDX@%∃∞~∀∪A≠ ~~e$%@8iDl@U3#!∧h'k⊃,(∧DNβFIXNUM~∀%!∨-≥α∩0$KZNB⊗_h"`(⊃↔4,@Qλ∪hd⊂∧c'λ ∧10*<PAGIL¬≥∃	p4(1nB$b6@3T
∧$dzf`hPβ"TjXU∃∪↓~3TQ(→βk"i⊂a&"P∀ ∧@_A=-⊗J4b6Mα~R&>ph($*λDd⎇dW hT_ib∧MJ5EHh!∃e≥
8ZB¬Zh∧t	_pε)⊗,!VHWFA∧W∀hibjλ-S ∪DF1,,R4εa:~(∩U'M ⊃αXrN∩→⊂a2I]¬h4*@Q⊃∪L,h@∧`8H∩1ID∩5∀aQR1SDλ,
hFLλ

4r∩D
∀Q(→3Qα'i"VbSαABLE INDERRUPTS
	STRT ULRECOTλ
∀∪M)%(@!R4PJN.&∧qαεJ∃"0⊂K8(∀≤ZλIr¬$z	D-Q3λ	_H∪SjD⊃0TJ85β"A∀∩TTjD∪∀t
(5β"A→Ttλ
E⊃spJ)b.pJ(02`⊂∃h⊂"$⊃P"i)∀bj⊗⊂⊂e"⊂)QbP$cβEfgUαAI A,NIL
	HRRX∧A)(1≠
1εH∩w≥=+∂AA	_A'Aβπ
A]β&A¬∃→ββ'∃λ∩(LBJJI∧!2>N≠⊂%nRD*J,+∃bα∧_d∧t⎇ED¬$DY`∧$z	X∀T⎇!Q L≤→→D*∧EE¬≥α⊃↔5∀-8H∃∃ Q!∩∧≤→_r¬%EE∧5E¬⊃PPJ∧	%∃≥D
∧$dzf`hPα2∀J+H⊃β	@aYεEαd))-λ**⊗'Q&!YεB∧a`dS P",(P ∩~(∩Aπβ%∞A)(0Q~2αH4(∀∧∧U∃:@λ
λ⊂ε'k
∧A∧e∀)j⊂∀∃∀D]d⊃i"P$TP"`∩RSET'S ARROR E@1%(∩(hRB$β∪uFg@4q*KS(∃
K3qQAQ@∧fgUα@
Aαb¬HQ!∃¬-9	"¬αβ⊃4J*⊂π ∃		;UNDM S@!∃∞&εbα∀LhI∀`(βiV⊂∪'P"g∃dg"εT)'j"PβP	&AI+≤4PJN@%*@λ	X4s0)! B2J*uλ∪	~t⊃sa⊃,¬a$QP)"iU i*εBβ≥ba)⊂αAD UUH∂∂_DA++∨≥_dA-*6≡18αVV><a`4!Q%≥0U∃	A23∪λXp3λ	@h"`∩ATION↓β∃λA5∪∨%dA-∪∨1β)&|qα"εt"2εHhP4(Q(U∃∀(_C@LYzd*¬EJU-¬8¬C!↓33uHY(⊃βλZTTuHA ¬∧iQh-&@ JPCCAT		;TLπ⊂≥αd
R¬ααIr∧≤X@∧U∧1Q LlzhR∧αβ∃5)Yβ"R(iH∩5
5⊗c"A→TTu∧
53qiF@εE*Uecf_Nα	MOVEH
Aλ1%%'Yλ∩(Lj>@4TλBe-YxtdX∧β!,¬bg⊃⊂ c'λ$j)FB*jgcS→→εE∩h∧$	SUBI D,THIRTY+%		;SEE IF LOSANG INCTRUCTIMJ GAS AN≠X
IT$	TRLN D-1
IT$	 JRST $XLOST
IT$	ADDI D,THIRTY+5-1	;EH	'
↓≠∨-
↓!εA¬¬π⊗A)<A→∨'%≥εA∪9'(~∀%'↔∪!8A-≠I$∩∩wM↔∪ A%A+'∃$A⊃β9	→$4∀∩A∃I'(A+U∨∂_n4∀∪!+M⊂A
1@Y%%M-λ∩∩m3&X↓'(AU A+'∃$A∪≥Q%%+A(~∀∪A+'⊂A→1 Iλ4∀∪⊃%1∩AλX!λR
∀%⊃%%∩↓λY+∪5∪→=Y	AAAβ%n&db⊗≡εbα6B⊗∀
R&>ph(&B-~")ααbV&: h(&B⎇↓α~bα¬D-∃*:d hαB4	zλ⊃V
¬⊃β"A→TTu∧εK⊂⊃**TuQ↓⊃.p	"Th'i"H&`ad∩e"P#∪ ciFB∧A*jScf≠]αbl!dλ"⊂ERRSVD		;@≥≡↓+'$↓⊃β≥	1$
∃%(H∩]
β→1¬*V>≡c@$%N≥∩εAα⎇*QαRzα∩%AQ#αA→u-%8¬∀Dp4pi≠U∂r)I⊃1p)D∩3TjJU0u	→β`∞ - BAD↓%%∨I92$hP%↓:αh∀e,QQ hT_ib∧MJ5EXh*ZT|<Gπ M≤ZK hP~9∃D∀~D¬ddz8U`H↔:D,Dβλ⊃λJλ∃q$zQ(∪	zr3QaQ@(λε⊗¬F*kS⊂∩h$Rd#D]Rf EGAL OPERATILπ≤~∀$h``@β↓A12-∩JNZ H%n~-9αBhP4*@Q⊃∪@83Q	XH∩1Id∩5∀aQ@↓Gu0
gS+"P'∃$ bgλ'*$"T⊂" iU"i⊂*Ugbbiλ*jgc⊃i⊂!"S`di⊂∃e'k"T⊂'k#∪ i⊂*S!&"iλ i~⊂b"`bλ cXP∩dεTNCM BADMB~∀4⊃'+¬Q)_∪≠%'π→1β∃∨U&A¬I_∞Iαα)u-$α3Q*1"C"JZ3sUHW@∧h*Td!⊂('!gg∀FE∧fShεEI B,QNUMBE@%@~∀&¬*N"	¬↓2b∞|rL4(L2ε
α\rV&
-⊃α
Vt~R&>p∧¬∀
JZ$t1λ∪IyK3U)X4R0d
P3∃(T4εFEαe))jλ*jgg∃&εEεB∧A'*∩$bg
αhπTA↓0∞&2d*≡ε1∧*2⊗6,rQα~αYT∧4H$	U∩↔SαTHCDR!P~~(∪∃%'PA≥)⊃
λj4TrR"⊗⊂π M≥H⊂λdεOTA P@%=!⊗I∧b&NQαi↓α~$A6 5Iλ4%∩≠QP@L**5"∧h¬∩λ8C"IH4p
"T≥⊂ ↔TA [ATLπ⊂⊗&ET@∪ε↓≠ ~⊗α(dd⎇t≠Ehh*Yd4dZ# LdX*"¬]9≠∧)5λ↔λ~R5∩	X5∩0d
3Q⊃*(S∪ud≠↔#"AQQ0@~∞∧f"i∀⊂-adV!$j⊂↔#`∂ OUT OF CATCH-BREAK DAMJ#!!\Y¬

ADEAD:	JFAHλ∩∩m!+'⊃(A∨$A)%'(AQ⊃%∨+≥⊂A	¬λAβ%Iβ2A¬"H4(Lj>J⊗Jα¬2ε∃
2L%\~0≥H@∧e9t∧<-D	∧-∀T
dL
λ_4dβp)(p3∪↓Q@∧c PP-`i∀ hP"⊃c$g$U$gg LOST↓]


EG18∧∪+∂PA7≥∨PA'8Aβ&AA%∨∞AQβ∞C:4∀∪∃%M(A∂≡H~∀
∃%≥)≥π<p∪!+M⊂A Y∧∩∩g∪9)%≤↓β%β 5∨+(~(∪≠∨-∃∩AαY=↓β%%¬2~∀∪∃1π⊂A∧Y-∨¬¬%%β24∀∪+≥1≠π.Hh(&B-~")ααbαε∩|⊂4(~	uᬬH⊂hPα2TJ:λ∩3JJSMβ!(P1∪h≥c PP-a Q⊂+ f∃bP#'T⊂#a T) lPWFEεEβ≥b#(⊃i⊂""Q'"a RAVER P@≥∂∀A!
∂∀bA:
~⊗Iα≤∩ε∩Nαα≤
hHU∩∧8⊃d$,(⊂h∃Q⊃,Dλp+QλVc"C!(⊃P⊃*'B4∪j	(⊂ε⊃ B4	Zλ∀λ⊃ B5jH(⊂
kT'g#@ FORMAT % DEFP@%= C 4hP&*J≥!αα⊗5αJ>@hP4*∩,20∀4NB*	t∩(
¬#"A~⊃tλ
¬⊂#"A~βj @ YP∂%∨9∞A
∨I≠β(@4A↓
U_C*~(∪∃%'PA↓
U_⊂∀!Q%∀
hZ#@!5u⊂$qSu∧λ(⊂λ)∪βPEBLISDZA%Y%'
=_
J⊗αhU∃≤Uye∀0ssH∃β`h(⊃g"↔g⊂e`∞C!]
α	JRST REPh~(~∃!≥≥
t4Uα2∞∃λπ J-zH∩∧t~8U⊂HαB2J*uλ&%∃
#!↓αA' Tbi≥∧Tdh!$U⊂. j∪βH∪ε↓'3≠¬=_A%E+∪%⊂C8~∃M↓β	'@p∪'∪a↓∪(ApA¬βλααNBε≤)αRf∧)↓5α≥"εBVα4∃`HαC"AQL¬P≠≠ INCRED@∪¬1
Aπ¬=∞-α$yα∞≡u~RJV≥!αε9∧*JJ>⊂α6⊗N≤
≡∀∀SY`≠Zλ9te$→→dL@Qh∃	λαP' SbP'cλ* "P⊂h( ∩OPRIATE CAR,ππ	$↓
+≥πQ∪⊂≡eaP@! ¬!`K ∧EBh∪!+π A¬ "α¬E@:r6⊂I~α⊂&$S&"c`W,¬~∀%!+'⊂↓
1 Ym'∪ "∀JQαrbα∩εR-bt4!~¬-≤αλ⊃K
	⊗ti≠⊂R5∧⊂εP⊗H!l&.CE	PUSH FXP,[SIXBIT \R!!∧BA9:4⊂
∞¬t"∃EHM"J:9¬!1]]0h ⊂L**5"∧8⊂HHαYεEαi'j∃⊗⊂
 "4⊂λ&*∃~Qα∞λ¬d$,#"H`W""L≥	MOT¬⊗%∧!15ED2bA⊃Q LE)I∩∧λε_≠≠_⊂⊂
λ¬πα]⊃
ft∪I_∞@"λ@ε⊃ ¬∧fSβP
∩↓)(@1<λ4(~J$`(αP ∀0b~(Lj0≥Q2(
Jλε∪bβE	IDPB @)PY~∀%)%≥≤ααQ1Qβ↓AA@hP&*J≥!α∞¬t"∃L4PJ6 =hY∩¬%EDu⊂H!→∀%∧$
E"dAQ J-zH∩αk5λeEαα#"A~u0@⊂⊃,(⊗)
β0 ⊗@ h ⊂L**5"∧8 (⊃ ¬εEβ≥`∞ILSETQ↓)'%	αbN-"EαNαIu∀-(∀jItQ1$λtp
'T≠P ∩PLCA0 RP@→π⊂`A%!1∞¬E¬∩B2∞ ε∩α04TFλ(	0**Lλ	(~TL⊂D	⊃⊃q*J(∪⊃λαi) L@	β→Iβ	2↓→∩ε$)eαHH∃$4C"AQ@εE'∩d∧SETQ:∪!U'⊂Aαb∧%@8∧siX(∪Q*(α⊂ ∀RIED TLεA'Q"A:La1αX≠∀(αX∂
	PU@' A @2≥α0≥∧→!P@!0p2(T∃∃I@$fεEαe))jλ*)bj∀D@	;NLεP⊃↓="P≤
4
$,IK∩∧
λ¬∀hZα(V⊂∪`h	BE?
∀∪5_∞@4Y∀∧
@∀3R)Jq0
(CE	%FAC NIHIL

TSETQ0∀∪
β∪
APY-(~(∪∃%'PA1'Q"∩%\r0~@λ∩(λIpπ∪jλ%`∞OW W@⊃βPA∪(A]β&B~(∪⊂⊗>4*%α¬e
RN⊗αJ⊂hPα)1H_h⊂"T$j iCE
XSETQh∪⊃%→4A(@2
BN⊗QλH%nλ→d"¬h→E,*λ8Tdb¬∂e∀∃∪h	Itq4AQ@∧fgUα@∩A∧Y# "α8U%λβ"B$XP0h

4R5λ~c"C!)j'i⊃X¬0∀∪A+'!¬↓2∞NαIu∪8Q*5$⎇(XS@!2⊂	)⊗α A,-2(P)
λ∧∩K="¬αnα9∃D∀~@¬d⊂∧b'	h∧ EVAHλA$yα∞yxB∧
*(∃J¬(Xd-∀Yh4*αβ(∀jItQ(+K εE∧SdπVEM A,-HQ @$hR≥≥Iz# 7@∧h'T%⊂ ⊂,SP	∂%∀h4(hRJBH8∪βP~zD
¬8(∀"∧~(rαjλ∧T	H0p ⊂WF@
	JRST RPLACA
RPL@πλ`@PJP≥⊂(⊗h b⊂ T π -↓%!2~⊃ε@QQ LU*:B¬∃	H∀8β"TJ	⊂p _Nα	WTA [P@+I
Aβ%≤@ZA∃α2ε∞λ∧∃hhαB2J*uλ∀J	⊂0p!QTT∪λb_]∧UβP	αAm!+%
↓β%∞@4A%!→¬∞⊃εhh ⊂L**5"¬*	D≤AQ hRX~%∪∧↔!∃ :α P-UβRONG TYPE ARRAY  ~A¬%%β3
β⊂∩D≠PhPα2TJ:α⊂∩`T)_!εBα β%H`t&="¬αntzQαε∃∩εeαα	tL@U⊃4D≠ εE∩Pi)_!∞α	MOVEH
AααaE"⊃Hh ⊂L**5"αX~%∪8Q!P@)⊃⊃q*J,¬∧c⊂aP ≠CAHO(αα≡⊗Q∧"∩Qαα;∀l∀yDαj∧h~4d|_@λ+Q ¬&"⊗ ¬RRh∪⊂∩⊗α*"¬]9≠∧)5λ↔λ b⊂+⊂d∧UE FOR "PURE" - FASH	∂β⊂C9:~(b`HA1	3∃⊃`⊂LHZ%∩¬8∧r+λR5HP1⊂∃αALUE BORU!+∀)↓5α4
N"≡!εrthR2$→J$,K↔ hPα1P(P-dg⊂βH∂%%∃∞@$β⊗(	@ ¬S@)∃λA
βM→∨βλα
t4!Q$L4Tλ$L<βP
fJ ∧BFLAG ∃πa
→β∞αb`_hαS⊃λ~α"T]αha$cS*fFEαhb'jP&"FEαhagfT&"`_
λ∧∪#	U!→@h ⊂@ ¬&"⊂h∧E@$βP4*"p∧PM≤αr4λ∀⊂+∪λH5⊃.%Vh∧ ∀$~∃⊃≤α &&>4)α¬2d"ε@$Tε+&5∃
#!,¬∩∩m⊂~⊃∧z→α_hR∧∀_ye,J(H$4d_p
Hl#& QFA$'	P# iR'"P~	MH∂-$AαY#!+⊂~,hR&~∃∧B0∀\β∪qe(R1sJYαU"!⊃& c@*@π1
→¬∞P⊃αd*IMαβ:4MD)~B¬Dα3@⊂⊃ if⊂⊃$f"Vλ!*`∀↓_
>Q∧J6BHYT,@U⊃1∧	3H∃		4h∪	~tλ7Q ¬εEαSEE DBCONS
α.SEE CX@π⊂≡~α1PRu8XR∧¬λ9t`*c"R(hαP"!⊃& c@*@π1
→¬∞P⊃αu*5F6α7"¬≤≠λ$Mλ⊂∞!SβH
&A%_	α∞|jB&2,!α∞xHRb∧*ZB∧tz@λ	→αh&"Sbg""Q⊂ g TH@∪&↓→∪' ¬8⊂∀ c\α0ThZTH⊂H~q0@⊂	d∧VERR %LNERR

IBSERR:	MH∂-$AαY∪8b`~∀%1π⊂↓αP∩ZL∩εN∀hP&BV≤B)αAdrε.~α1P@LYzd,Jλ!EL(~4(h!~¬-≤	$¬αeλ9tu_Q!∃¬-9¬αe:(C∧∪≠QP@Lh_2¬\(_B¬4→JT*∧iz"∧L(~4*
QQ hT(~4-∪!→T⎇∀Y∀∧
d→b∪H!_UD≤∧λ∩e4(~4(h!~¬-≤	$¬αdh9te_Q!∀l⎇hY∩∧∩J_$
≤QQ M¬Z9∧R¬¬K∧≤@sPc!!4∃4i∧∀⊗j
R3R+Q"B1H_h∩pH_λ∃P)J1(⊃IZH⊂P*8(7#!! ¬$c∪⊂*abS"iiV⊗FE∩f∃ ¬RR~	SEDZ A,
	EPCH A,V%LEVEL
↓PUSH@∀A@Y≥π∨9&~∀∪5∨ ~⊗Jα↓2E,b⊗@4YAP@M
Z4DRλ¬ED≤yj0hPα4∃*9λ⊂Rf+!R%nFEαc aP⊗βBAD↓(
ε2,)α~>⊂αBJ&tb⊗@4YD∃hh!Q",DβQ4J'B4q*KH⊂#↓Q@∧bl⊂d⊂ F∃α%LENGPH
	PUCHJ P,NCKFC
	MOVEI B,Q%LENGTH
	PUCHJ P,XCH∂≥_h(&B-~!αAeY⊗"h9∧]hQ!∀444∧D
deXT∧4⎇$
¬∀LiHTtu∩+Q"C"KQ ".hYβ"⊂'Q⊂ c'λ*ibf⊃iiFEβEβ≥g$d∩f⊂+"T$j iH(*`∩ITAS PORPDL POVFLP POTFPP POVCPDL MESIAJ UJRECOPA
1≥≠$α↓∩εJ-∩Iαε
∩⊗JI∧2b:6-⊃α:63→α∞εlj⊗Mαl*M@*	XU≠∩	XU≠D	T-≠↔λ	X4l&$	14lF∧⊃14f&(⊃3*6,H⊃)Zl,hλYαiXJH"fiXMα EMS18 EMS21 EMS22EH&dTA≠&HhA≠LdrA5&fbA∃≠&fhααN@%*H5∩¬(J$k
λ(E∀k$
$%∀V4¬∀%)P
∧
Q∀S&T∀Q∀IVH⊂	"∀&[P)⊃)&T⊂∀")&@9 RDRM11¬

λSUBTTL	A PANDORA'S @OX OF ERRMR MESSAGES
	
	NIHIL:	SIXBIT \@≥∪!∪_A`A≥∪⊃%_@ZA⊃∨∀O(↓')"↓_
&1
`4(&4*J&R
→iαNMB
&Q¬bZ⊗JM"εMα*R⊗Jt	↓5α$z9∞Q¬~⊗RE¬!εp4PJBVJM"εMi¬~&b
M!αrB-∩&@$~4∧t0q4j8(⊃4jD(⊃	yIuλλIh∀P)h⊃s ⊂⊂$g"$S!iPnβEh'U("&≥αidl!∩j⊂&)⊃cP "∪⊂'k"T#&'kHnεE∧T'k#&∀≥∧idV!$j⊂↔#&'g∃dP ⊂DL OVERFLOW!\
	POVFXP:	SIXBIT \BIXNUI @!⊃_A∨-∃%
→∨\C8~∀%!∨-≥α∩1i¬~&b
M!αrNαλT
¬λIB∧⎇hZ$4dzt∃`hαB3(Zs02G∧idl⊂$j⊂.↔&]f`R'i⊂)⊃ij i∃⊂*g"⊃i* eQg(∞M!\
α	UNRECOV: SIXBIT \↑M;UNRECOV@%β	→
@Cp~∀β
1≥≠$h~∀αI¬%%$h∪'∪1	∪(A99∨≤[
1∨⊂~VjαP∀JXR
`Q!∀L
(Z%∪PQ!∀5DiXU∪P~9∃D∀~D¬dtyeT4M	jTj¬h→E,*≠APT$$A∀$∀iXU∪P~9∃D∀~D¬dtyeT$⎇X)D*¬h→E,*≠APT≥∧A∀≥DiXU∪P~9∃D∀~D¬dtyeT≤|Z	D-B
h∀e,T≠@hTK∧@L%	iT-∪!~4MD)~B¬diybl%Z	D-B
h∀e,T≠@hP→iU3≠!~4MD)~B¬diybluYXU∀L4
deXT∃`hαR1ID⊂R1ij3*pkλS⊂1eA3S5FWB4r+λR5λJ3P0h_4⊃⊂()⊃(∪JY10	$Pβ VALUE!\
	CAMMES*	SIPBIT \FIXNUM@πβ≥(↓β⊂≡6αλ∃∀
λ¬∪dλS∪sJYBIT \HOW TH@
A⊃∃→_Aπ¬≤A)⊃%&A¬
|C8∩]M
A⊃!π ∩λhP&⊗6≠	Ih&≤Jb
&"αrR≡zα6ε:Jα& 5HZ%∃-λJ2αjλyr∧
x≠∩
`Q!∀,@4h$g↓4r6λ	5λ↔	Itu⊂∃ibi∩dεTERRUPD↓\	∀∪∃≠&bjh∪'∪1	∪ Ae*2$Xi∀t1λ⊃JYPp
$SβHA∪8A++≡↓∞ε2b
p4!_Tm≠⊗g M≤≠λ$Mαλπ∪)ZQ(∃	λ3H
$λ4Qtd≠β"B(YαiP@88∧∪'∪a↓∪(Aq
+≥πQ∪⊂≡d
Td⊃1R)hαb⊂ Q*"a⊂hj'f∪βAD!\
∪5&dbt%'∪!¬%(A9∪5!%∨!∃$A+π∀A∨A5βπ%≡ZA-¬_C(~(∪≠&Hdt∪'%1¬∪(↓9∪→∂0A∂∞A=$A%Q+%≤@4A≥∨(↓∪∃'∪⊃
AαAA%∨∞Cp~∀β5&djt%'∪1¬%(A9+9-β→Uβ¬→
↓	β)+4@ZAYβ_C84∀∪≠Ldlt∪M∪1¬∪PA9
∪1
A
∨PA
∨+9λC8~(∪≠&Hrt∪'%1¬∪(↓9≥≡A
β)π⊂↓
∨$AQ⊃∪&AQβ∞@Z↓)⊃%∨\C8~∀%∪&fDp∪'∪a¬∪(Aq∪≥-β1∪λAβI∞A)≡↓∂≥'e~C8~(∪≠&Lht∪'%1¬∪(↓9≥∨(↓'#¬$↓!∨∪≥Q$C84∀∪')I)π$t%'∪1¬%(A9=4C8~∀4∀w%¬	$A∃%%∨$↓≠'∂&4∀∩∧∪I	%~Bh∪'∪1	∪ A9∃1)%ααα≤D~*2∧Ld	DM≥D¬R¬∀X_DdM:@∃`hαB4HJS,NA~r6⊂I~λ↔∩)I⊃1p)D∪pRHXuλ∀iy11rλZQ(∪j$∪u∩λZH(
(01λ+A B4HJS,nA~r6⊂I~λ↔∪Izλ⊃3Iz1rλd i)H$g⊂&∩ij⊂⊗H)"`b∪$ij⊂WεA∧i⊃)&Z≥αidl!∩j⊂."∪j⊂!gS*"l*λ"i)'T⊂nεEαi")&M]∧idV!$j⊂↔)"`bf`ai∪P!gg∃"l*⊂⊃i)'iλnεE∧T")&[∞∧idl⊂$j⊂.⊂& ij⊂&diTdg#Pλα)"!\
	RDRM7:	SIXBIT \BLAST? - READ!\
	RDRM8:	SIXBIT \NUMERIC OV@%
1∨ ≥↓jαJ⊗ε 
p4!~$%∀W↔ M≤≠λ$M"IU,eI~∧d*λ∧t	I0r3Ht∪00j)th∀HZ∃0SHXλ∪SiE3R3∧λ1U⊃*$λKHD¬+(∀HX1λ7↓QB4Q
),,.A~r6⊂I~λ↔∩)I⊃1p)D∀Q5
ZSH∃H→∃1(λjSs(
:∪∩0i→Qh∪(_tSh¬U(⊂Q(_λ7β!!"C"@↓Gq0THZPh⊃**Q0	'H i"i⊃i⊂"k⊂d⊂∞AEP
β_8b@M,"Q↓:αXE#
¬jT%#!Q hU8X%%$A≠∀-α	Yu∀(∪2*8q3∪λ→β"gjTP"a)∪βR @%=+!&t*L4(hP4*⊗α*$-∀4εB*	tλ∀¬H ∧D]S$ebP
 ¬RROR ECG ARGS)
α	LER3 1,@ ⊃$~∀4T*JJ⊗α)s@!33uHY(⊂ ⊗
!∀FEαhπTA↓0∞&:4
2&⊃∧*JJ>⊂∧∧9⊂3SHYα⊂ ∪PEC@∪
%∞εRLz0∩
β#"A→TTu∧λ4TQ*(@εEεB ¬RERER0∀∪5≠ ~⊗Jα⊃2E$*JJ>⊂h ⊂M9y$
¬EJ3∃<h→@hPβ"C!λαk fαA0∀∪M+∧Aαb`≤@⊃0	#∀ fbV&"`∩FRAME]	;CLEAR OUT ALL OF ERRF@%¬≠
4PJBVNDQαA∩≤
RaTHH%nN
2∃α⊗4*JfRLr≥αεt!αεZaα∧∀PJBVNDQα
@λ¬E≤
dYSλHα.sj(α g T,P# Rd⊂
ACT EBRLπ$\~(∪!+≤B)αAd*P∀AQ$-P3F↔@∧h*Td 
 FXP →%M(k~b4⊂λ&*∃~QαJ≥"aTQ!P@@ ¬εE*b*
αi`OTTN A1
0G¬8∩∩αw
_∞ ,T	∧-∀T
tD3H⊂iYαh$f⊃b⊂!gQ ¬ CALT
	 JRST .UDT2	↓	;  FIND A TAG FOR A CLπ⊂⊗B-"⊗⊃↓∀:0~⊂β"B*9p4∪Dλ4TTj@FA∧P∩))b ,¬+	(βλ4(~
U≤Bλ¬DλhαB4jJUλ&@T∧[SIXBIT\X
~W%_	↓εeh%nVα8R∧m8xdL@⊃0	Vλ)`	NCE UGT BELOTεA/∪1_∩(LBJJ@$λ"bk∃
αHHα".hx5λ∀HZα*`∩N ADDRESS
	HRRZ AR11(
6N<2& $X∧c!∧j&'H i_@,200  @`⊂∀!~¬-≤α∩H
¬⊃0	)⊂b_DDB]`g"λ()$g∃⊂#jjλ!*g THE@%∃
∨$~(∪!∂ ↓ Yα~(X
V∩ ε∪@!51u∧h⊂
g⊃ ¬FINED COMPU@)∃λA∂≡↓)β∞Ct~∀&∧zB)αα¬@hPβ"KJX∃FA~q0
-∪P('!∃c
	SETZM P@≥¬UVb~(∪'%R5αBt∩V→-⊂h &6⎇2⊗%α~aEAaQ LlzhTJ¬%Ee,%FAP@LYzd*∧~ %Km
_
X_⊗⊗∀'!*c↔FA∧e∃dh#bH**⊗↔
YFE∧SdπVNS TT
	%NEG%
∀∪A+'"RαA2Bα)∀`),∧FEαibb'SP PNF	α	MMP
∩↓
 "α⊂4F∃ εE∧R))b RINDERN

λ;	ENDC@∨	∀A6M,"Rd∀P1n⊗≤⊃Qα↑t
⊗JI¬:0∀X $
1H	`H(c⊂∩A QF #∧A++∨ gεAU≠⊂gα↓+#∨+∃$A+=+
bAU+↔+
HA!¬%→(~∀4∃β'∧Xt∪≠∨Y∩Aλ0`∩*<rε⊗J∪P&∞εl9αRQe 4(¬¬~.&BλαRQ2\j⊗MEMh%nR|yα~⊗8αεJ≡_h(%↓∧j>J⊗JαRQ2l*ME@KZR>=∧jε:E∧
J∞LhP&6>4*5α	e
→FN⊂h(&B-~!α~E↓2RPhP&*Vmα9α⊃e:2ε⊗⊂ε⊂HKαh⊃∧M(∧π-H∪	~u∩3Ht⊂3∀HX1⊗(λIqQ#!↓4∃4i∧⊃R∀¬JA"B*
4r∩DλT⊂	I4q⊗↓Q@∧h'T⊂#$()αE+SαAEBDpλ&"e∩aα	bBA$Q!∃¬-9	"¬αKλ4`9β)FEαdgk"SP V∀∀∀@
	PUSHJ P →βI∂'π(h ⊂M	zα∧∃α⊂
Jβ"B)*Tq⊂∀c_`FB∧¬∀~)#gαβP&N9~∧
¬J@d¬E@&Ds:αw¬(A)⊃%&A!∨%_
Q1¬:∃α∞α(∃α∧zZ@hU_f$Pα(∪)Zβ"dP∃*∩&bTXXλ
	IOVE T$R
λ	PESHJ FXP,@→∪M)0~∀%⊃→%4↓XQ$~∀&U*6B→∧⊃19-⊂h(&6⎇2⊗%α⊂bF (α".j~αb`∪TIK@≤A5β%⊗B4⊂∪!M⊃∀A11π∨≥L~∀&-B≤Bλ⊃BEαα#"A→Ttλ
E	0p(J@εE(Q_`]∧T*id%λ(∩'!SdεS
	POP P,B
	PUCHJ P,XAH∂≥_h(%⊗αyd
αλ¬∃¬⊃ B2J*uλ⊃*H3β"AQA"U*Ypλpg↓4p5HT⊂(⊂AQ@∧fgUαAI T,EMS18
∀∪)%'(AU+↔+
D~∀4U*V.↓α8∪@M8~d*∧∀λ hUXYu,-'!∀l]hY∩¬"β⊃3*6-#"JZ3u1&↔@∧fgUαNI A,LU@+M(∩∩wU→∩⊗4J2,D
U,Zλ8∀d`Q!∃¬-9λλk∀∃*Yp∧∃f∃hik∀⊂TBE∧Pe`
L A( ≤ZD~∀&¬*N!α5BA1Qh &"∃∩`∩∧∃FC@ B)*X⊃H

E".u)hα"c⊂⊃*g⊂$S⊂*`∃O CALL (GR AFTER AUTOLOAD	
∪!= A
⊃@Xh`~(∪≠∨-∃∩A(Y1++'4⊂∪!∨@A
11++∨⊂4bQ(R4∀∪'∨)∞A(X8Zb~∀%⊃%%4↓(Yα~(∪∃+≠A≤AαYU+∨+
H~∀β⊃I%4Aα0h`~∀%!+'⊃(A IA%∪≥(4∀∪→I$A7'%1¬∪(↓9+≥	∃
∪≥⊂A
+≥
)∪∨≤↓ββ→→∃λC9:4∃++∨U
dt∪A∨ A 1∧∩∀∪A∨ A 1α~∀∪
β∪
APY#+≥	∨#≥λ4∀∩A∃I'(A+U∨⊂aα4∀∪∃%M(A+=⊂gα~(~∃¬∩& 5G!∃≤\~	b∧-**58H↔8U∃∀z$¬¬∀→jD⎇5β"A∀∀∪t	$∀β!↓2TTjD⊃4∀IJ#"@↓Gq5Lh∧⊃5Lh∀⊃5Li$⊂04ε((∩0*εRH∃i@ f_⊂∃dεALOSE @/9β⊂bAM)β%$↓+⊂~ε4zN∃α4
N %X∧@⊂⊃ if*R⊂# iS',⊂#⊂ib'!H&"#"T)

@,gλp∪'↔%!αAα1 →B⊂h*-d8∪PJ		E∃Rλ⊃D
∪⊃Q J-XHb∧lX6PHK8¬3HH1R3HXλ⊃U)Hu∩3iD⊃pRHXuβ"A→TTu∧λ5H
!βE
ET∧g∧t%⊃→%4↓αYβ$D~∀%-*∩2λYU≠↓⊃∪@8SH∃)H⊃1Hλ_U⊃4Dλ51∪iIp1β!↓2TTjD⊃5Mλ∧¬α
IAP"A8	TDZA TT1)(∩∩m+∃	→∪⊂~⊗ ∧∧4r	x$T8¬β!	04I'@(∪)zβ"dP∃*∩"fTXX⊗fQiZD]Q'⊂ ∃ND@A¬
)∧ααεFR|b0≤AQ LDJ+"∧
Eλ2Hh!~4\M	`λλ⊃ ¬∧P∩))-⊂⊂T⊂λC)
∩KU	→αl*ME"αJBHhαB2
*S(⊂%E⊂j#!↓2TTjD⊂∧f(FAεE∃dεAL08	MOVE D,(TT!
	T@→≥∀AHb$∩w'↔% A&2α2NV∃⊂4(∀	%∃≥D
t`(1SthQ UsH→α'ibNαλ
∧∪A+'↓∀↓
1 Y1∪')0$∩w2M~R&~JαVAαe~V
I∧
J=1Q LlzhTJ¬J@	X4lD↓⊃.p
iQP SU@R MESSAGE
WNAL12	MOP
∩↓XQλ$~∀&¬*N"$
αeD9ye_H↔84`9β)P#∃e!`∀IMHA≥¬≠
A∨9)≡AβI∞A2M~P$!~¬-≤∧
αdλQ!∀l@uQ2$λ+∀3!⊃,p
iQP∨P#∪βR ARGS @'Aε~∀%∃%'λααF→Fλh  (αTuλZTNB)Yβk"dH ⊂(F)
αWNAFOSE8∧∪≠∨Y∩A%!26⊗≠⊃D%@8¬4hT⊃Pu()⊂&bTi`cbCE	JRSP @/9β⊂⊃DhP4(Q)∀4rλB∪αe1Q$4
9JU∪P~(Td04q$
⊂εh!K∧@
FASH	+⊂h∪#≥→=∞.⊃Q L@⊃0	)λ-idl⊂αIT \@πβ≤OPA↓¬*J&~β∀∧DLyλ
81s1)@*⊂n.CE(
		8π≥λαα0≤2	_d`$⊃ _βE
FAS@→≥`pλ (αT⊃dQ4q5	(∪⊃
p6C!(#R∧Tbj-&H&",&∀!FE#⊂i`NC8∧⊂∀!→¬∃∃αH⊂%I⊃⊂Th~@εE∧T*id%λ(⊂$CLOSE
λ∧∪→I$A7π%1¬∪(↓93∨*↓⊃β-
↓%+≤A=+ A∨_Aπ∂%∀@ZA
¬'⊂∩≡!εrtKZR>Raα2z:0hPβ"SλHβ"`∩R8∧⊂∀λLBJJ@$λ∩ddH*4
⊂β"B*
4r∩D
λε∩!S'ibFBα	UNLLππ.Hh &6⎇2∃α¬db∩4h→PhPα33j@ dP!(c iS'`bεBα	PESHJ @,XC@∨≥L~∀&¬*N"$
αe,h)∀`(αεE∧Th¬B P,R70-L@	!∀bM-DhP&~ε~α`≤4→HR∧tz@λ	→β⊂# Td#`bλ!'i&Ph∧!]
λ∧⊂∀!Q c\β∪0HZTH∪
∀S⊗Dλ⊂πbi∀ ¬ GETLE GEP	2+	αN⊗αJt`((⊂	dQdεPE PROPER RMPER0 LFYE@$αα≡⊗:α;∪B∧~(t9αXλ AR@∂π~β↓αεJ<~5Eα
∩≡∞T∧C!∧¬∀~)→≠¬I$t&-B≤Bλ⊂λF@
	MLπ ~∃¬⊃2P4PJP≥⊂(⊗h b⊂&⊂d¬BDA L@∪'PC:4PJ6 =hT¬%"β⊂c!∧e))U⊂ 	PLMB1

LXPRLZ:	L@%$αα`≥≤α6⊂I~α⊂ ≤TLπ⊂≥αl
0∃Jλ~$=~λ¬∪d	⊃0(∀⊂h]
λ∧⊂∀(It-∃(W L@3uQ)∀⊂+
λ∀@
	Tπ ∩¬¬Yα
ε ∧∧,@Qλ∃λZuλ⊃I@i&P⊗H  ∂!]
∪≠=(
,∀λ"bD∃⊃P@!2TTjD⊃∪mλFAεE⊃bj&"Nα	E@1
⊂AαYλ~∃∂Q→∃EPJP≥⊂(⊗h b⊂&∩ij⊂⊗H πE@)0C:4PJ⊗b∞@∧∧
D!Q LU*:B∧≤X¬∪↓Q@εEεBαSE@)]_
¬@!~∧mα
¬DλhαB3)Zβ"dP⊂α,QSE
~∃≥∃'2`pλ%⊗αzD
∧YZ3≠λQ!∃¬-9∧¬αd⊃Q LU*:B∧<Yj5K8Q!PT
(x4kC!~u$
	8∃∀:
Itj∧β⊂4Hx(∪tDπ($λ4Qkj85⊂4Ht5#"A→TTu∧λ4QpiY#"P*(ps,π!33uHY(⊂@⊗XT)∀B]`∞OTE: FLUSHES FLAGS @∪≤αα2ε~α@λ	λ3⊃H!Q@∧a`Re⊂!,ARGXX
∪∃I' AβI∂π
@λh &∞b2	↓α!E@⊂∧ijβE	MOT¬⊗%∧⊃2FN-"εJ≤hP&*J≥!αεJ<~5HQ(∃∀≤9P'∧h"iR%⊂ ⊗∪αC@∨≥L~∀&lzP∀∀λ"e~(phT~(t@,NB*
4r∩D
	⊂0iYβ)D]S$ij$Q,P cPdg⊗⊂∃dj$'Uj⊂&'Tdg#P⊂α
α	PUSHJ P,XCONS
	%FAC MES14
~∀_w!	Iβ↔
@9')∨→hA)3∨¬∂
A∂Q%∩QJα⊗ <hZ"¬∀IId-∩λYt4*	→∀|-*$∧`93q4J$∪04
yP(∪(Y414Dλ∪∃⊃*$⊃∩4jEN(∀jZt⊃#!!"T∃
(rq.A~∃0r∧
⊂#!!33uHY(⊂+¬
∃
#!!)1uλ∀⊃34f6β"B)YuQ2$
∃
λ∃!"B*	tλ∀¬H!"B)*Tq⊂∀*)!d∩FEεEαSTOLX:	PUSH @,@∧⊂∀!~¬-≤	$¬αdβPsi@)FE∧Sek"dH!⊗(fCE	PUSH@∀A@Y1π∨9&~∀∪5∨ ~⊗Jα↓2F≥"0≥∀QQ M¬X∧r	$∀⊗λdπF@&4⊂λ&B⎇↓αAH!P@MλZ4B¬¬J@hPα1P(P-a`S⊂πT STORE IH
)≡↓_
>→l
JJεJ
t4λhP4*RLzε≡∃β!∃ :α P-S'j⊂ Ta`	I T¬β→+∀C:
∀%∃%'λααRf>
∩≤4(hR≡@%(JCKPα1P(P-a Q⊂+ f∃bP#'T⊂)"`Q* a&⊃Ph

EOFER2	MMREI @,QRDEKF
	IOVEI T,[SIPBIT \END GF FILE Tπ∪)⊃%_	αJ,
⊃εrhh &B-~")ααb⊗ <hQPPL**5"∧Yxc(Hβ"C!
Q∪∪HZNB4
Zp∩H
¬⊂∧g#⊃bj∧DNβGEDS VINFIH	
A%_Aβ$D~∀β'-∪!
AQβ!%⊂~∀%∧~ε&9∧
IE2%∩VR↓Q Jα	
%∃Rλ~#
@∃I5→!"B)YuQ2$λK∀)*(01∪	→β"FEαfgk"RP*⊗-Tdh!$U⊂."g⊃⊂ ∂F FILE Tπ∪)⊃%_	α¬∧b& 4T≠EhhαQ3hh,B3)ZQ2(λ∃λ∧ iTBE∧T*id%λ(⊂NCMH
&~(∪!+≤B)αAeBε <h∧c!↓4⊃4i	H⊂41P0d¬∃
7!Q@∧e*Sh"P K!h'h∩∧¬
	SKIPE T,EOFRTF		8ππ2|∩αεI∧J0∩∧Yxb¬4→JT*∧α1H	IsK3I→αεE∧H$))&H V⊗f⊃i)`∀P-1(D)	; AND AF EH∂A→%β≠
↓1β'Q&~∀∪A≠!)¬↓0$!Q hPβ"C!$c"P∩h∧S,[
IIOERR:	LARRXπ'∪1	∪ ⊃αdI6 :λZ%∀⎇$λE-∀→hr∧Lh
U"
KQPD|→xU∃∪αB3λZTH⊗j94∧!$U⊂.$WSβ EBRMR DURINGLπ#)!U(C9:4∃0∀¬\*0∀λ∪qD	1Q(	~α)FEβE&`h∃dεA:	MKVEI D →#5β!2M~Q66
α2&N ¬S
EJ@
!QB4si((⊃⊗∃dεALOSE

λλ
¬≠∃≠#∧βP&⊗@λ9α∧
E
αHhαB5jH(⊂
g∪h∧ A↓!%∨!∃$A2M~Q↓∃∧j⊗ ,(Z"l$YHU$*x~5≤@ph7!Q@∧fgUα@
A∧αb∧4!_UD≤∧λ∩bE¬⊃P@!2TTjDλ⊂
)
~∃⊃→)∧βP&∞εL)α	2l*6
⊗α!P@!4rr*λ(⊃βhb"f∀n@
	MKVEI @ →#⊃⊂∩⊗αHPhPα2TJ:λ⊂g⊂d∧OSE
~∃1∪'(\βI`&6⎇2⊗%α ¬E@⊂∧ijα		;ZERO AR@∂&@t|A∃∩0≥⊂β"B*9pP ⊂⊃⊗+g S'ibFB∧¬αSUSPE*	PUSHJ P →≥
∨⊂~LhP&6>4*%α	e
N@-:λT`(β"B*
4r∩D
	⊗⊂iYTc"A→3uQ$
∃⊃K
α".jIh⊂3	Iuh∀HZα*`∩NS FBOM THE BAC, FP@ 4⊂∪'+λA)(YHj`Vb$∩vA≠U'(A¬∀A%≥"6J⊗ h(&N\JB¬↓D2bA∧hP%α⊗⎇2∃αR a"
@
¬⊂HKαr1D
∪tλ	xH⊃V
∧⊃SsE[Q0	'H* "gλ$iP(∪dg*"TεA∧fSi"P#⊗(∩**αDYP*∪P ∂LD BP⊃lA%≥"6J∃∧~0≥∃(X5"∧i
hPα1P(P-dWSβ @∪≤ααBJ>=∩⊗NMαiα∞εp∧u"¬8¬4jλ3Q+Q C"@↓Gqu∀λI(∀H→Q∞(
6UsP)D∃⊗4	84H∀f~pπ fλ#i!j∩bP#)⊃i)⊂!T)i(→λ f)j⊂"#,L⊂ f!RX⊂()⊃bi_P⊃'ba)λ #ZbTεEεEβE#j(⊃&_]∧UβPA [ NOTP@@_AA∨∪≥)∃$C*~(∪∃%'PA≡R∧"2@4Ph"Jεt!eh→Yu (αdP"(i g⊃'`
S2WNAL:	SOJA D1&c/≥¬_~(hRRfB\*Ih→Yu (αdP"(j,dT ¬EK
λS1WNAL:	SMJA T,W@≥β1_∞N∀hP4*≡∀~R&∃β!∀-D9∧
D!Q Mu⊂ ⊂⊗βH
∨(↓(
ε2L!αJ⊗"Rε
d)α&:$*aε@QQ L-λ9α∧
H!P@L**5"∧z(5$HQ!PTTQ4J'B5uλ∀⊗sSjD⊂(⊃J(31(
	p3UλZH λjQ0
*T'⊂nFB∧e))U⊂#!"U*i'εB∧@
IFL UCELASS,Xε~¬πI'% dh∪')ααα`≤∀_@λλ~αi)gT⊂!gb⊃P⊂
 CURSORPOS!]
∪∃I' AπI'% F4⊃0∀⊃↔4,@Qλ∪hd⊂∧c'λ*ibf⊃iiFEβE f)U_≥∧fShεE A,-1(P)
α	WTA @7	βλAβ1∪'(@4Aβ-β0X∞εBα	EJ
β#"A→3uQ)T⊂+&∃∀
#!∧e))U⊂ f$ThεEεB&#$X∞α	WTA [ARG T@∨≡↓→β%∂∀@ZA→%'!&5IεtQ!∀U∃8¬⊂∪$i`∀IFY~∀4⊃∪
≤αα&@%5:4LEK0hT→H4[β!_UD≤∧λ∩d⊂β"B*@h∧A [@¬βλA¬%≥↓h∧∧@⊂4S(d∧@∨π,C:4PJ*JN ∧∧@⊂4S(d∧@∨π,~∃ 4HI`≤,h@λ	@c⊂$c∪α @∪)LW'β∪0~∀4UαJ<X∧@_Nα	E@1
⊂AαY¬$eα~(∪ ≡Rλ∧¬@8P1⊂∃αAR LIST - PROG!]~∀%1π⊂αα¬ $~ H⊃ ¬∧e∀)j⊂(∀ π1

DOERR0∀∪A_∞Aααb∧4!~u$
λεpH_λ⊂ T⊂ IST  ~A⊃_
ε@QQ LLzhTj∧∃ES∩E¬⊃P@!2TTjD⊃∪m!Q@εE"∪X¬E@$βP& ,zhTJ∧∃E∧% εE∧UβP	αAm1)%¬_
,zZ2¬≥HZ¬∧4H$λα ∂!]
∪∃I' ⊃α$yVDQ!P@ ↓Gp5⊂)@↔≠P"V(⊂∞ER @ "αλU∪
λ∧r)@↔"`∩↓∞ =5hU∩¬8∧4DHαi⊂&∪βG&ER NUMER ARTH@$@E#≥c∂!≥_@er→↓J=α22λ→DDt8QP@@ P5λ→KI`≥αd"`∩R [SIX@¬∪(Aq≠ ~⊗α(dd⎇uzT`(α"`∩FLOW IL∧Aβ)¬_	εRhh ∀4∧ ⊂.ER2	MMP
A⊂Y7Eα⊗IEbb`≥≤α6⊂I~α⊂ ≤AR@∞A$z0~∧)_rαjλ[¬α
K[PhPα2TJ:α⊂'*SbiεE⊃l("i]	EX@π⊂Aααb⊂HαB2J*uλ⊃+
λπεE∀dg↔"T≥	SKIPA D,[SIN,∧XI7M∪1¬∪PA0∩ε∀9αRyt∧)1h⊃I@i⊂ aPβP%β
2@@5¬~& 2≠KUhhαPsj5β"`∩h∪⊂⊗>4)α"β⊗pi@iP∞,,Xπ'&D∩&@"λπ⊂*(βP ∀OLεA¬∪≤A~>⊂∧∧≤8¬4H_v($λpπiPW,¬P~~(∪∃%'PA≥+≠∃$⊂∀*:∃∩⊃0	:	S@↔∪AαAλYm'#%(αq12nα9∃D∀~@λIQ1`⊂⊂i#P⊗H)hi*λn.`≥
λ¬→>8¬d-∪αB3)@hεE D,[@→∨≤X	1∩]~&b
M!α`$βSsEZ⊂πiP⊂i#P⊗H& ∂G¬90⊗@QQ$`*314G∧e)hλ*⊂PDLNMK		;@∪↓β%∞A]β&AαααB$βλ∪JYαV⊂#Qh∧ A↓%⊗εbα0≤@Q#"A∀5u⊂$¬⊃
"!↔pss*	⊂23D
⊂πP&∪βSE@$4⊂λ&"e∩`∃~λAP@!2TTjDK⊂λAα@

	IARERR~∀$Iβ%I$⊂∀

∩R"⊗α ∞A∀5u⊂$λλπ⊗@1(T ∩~(∪∃%'PAβ%∪Q⊂⊂∀!Q#-→hc@!5⊃⊗H∀∃∃↓QL1t	@ ε0∀∪5≠ ~⊗JαQ1∩=∩⊗εQh∧D-
X→@hPα16λd⊂ @,@∧⊂∀!∀U :α P!PdfbiCE	JRSPλ@I∃# ⊗εbBQ$Q&$-hg M⊃⊗P$
λε*εBα2GPNF:∪≠=(
,∀
Bb∧z(T
λεR"Th¬AL
λ∧∩K="¬α∞j6⊗LhP&⊗@λ9α∧
H!P@!2TTjD	⊃4*X3
∃¬⊃ ¬εE⊂d∧@⊃≥-
t&¬*N!ααb∧4!~¬-≤αλ⊃K
λε**βE	MOT¬⊗%∧	1"~β
αHh!~u$
λεph→β∪j @π%βQ
AαA!+≥⊗A=A)⊃%&A'∪i
C 4hP&B>∧Iα~@λ¬Cλh!→T⎇Q(∃
Eλ⊂"!Q@∧h'T⊂(⊗ CE	JRST ALHUNK
	α;GCMLOSE GC@≠→LbA∂π5→&dA≥π⊂⊗⊗~α≡∞∩≤jMα≡≤bViA∧:∞"VRα≡∞2-QEα≡≤bViI∧:∞"VS→α≡∞e*iUα<~2Vi"α≡∞2-QYα≡≤bVi]∧:∞B∩dzYα∩L(4(∀T:∞62⎇~∃h∧hP&*Vmα9α¬d:∞62≠λ4(&E∩Jiα
b≡∞6-→.:~2B→$4PJB>A∧2bA20h(&*∃~Qα≡≤j2MHhR≡∞⊗e→EhεE∩Jiα~b≡∞⊗-→.:~2B→$4PJ*NI∧:∞JN⊂h*≡∞lbMIhM~⊗RyP¬∧i_5H!∀T<≤Dλt≤e9Z0hP~8U%TT
∧t_:hP~	uᬬH⊂hP~8U$|T	∃∀mha∪L|dλt,tX(∀b¬
)∀d≤~	D-~Dλt≥%x⊂∧lT8QPPL**5"∧_x0hPQ(t≤LX7 MI~5 hαB4(i4∪U)Q"B4(i∪sU)Q Q⊂DA41∪jXS⊃#!(v	α*_qs4	H4β"HK	α4(J4∪⊃+↓ ¬!#I∧ha$Qe*fFB∧hilSa'fεB$c'⊂∩'%f'QV-FEαi b$V⊂_X↔βEi"T ¬AT HNKLOG+1, AKFC QHUNK,\.RPCNT
	RADIX 8
]	0↔9λA∨↓∪
≤A!≥↔2|84(&
JJεHh(&F≥J6
>`H%n~⎇⊃αNfl∩>16∀b6∞∞~aαNεmα2eα≤
e↓
≥J6
>b⊂4*&4q↓96<~6⊗MlrRfB-→5E-
aα↑ε∀qαn↑∀z:
αd*:∞R@αRε
d*t4(hR≡∞2≤jMh&≤Jb
&"αrNR⎇∩ε≡∃∧~εBε≤JReα-B∞⊗⊗$*⊃εphP4(4SYemα≤z6∃αD*J∃ααy∧,RλI∧LTz4∧d|y0¬∀,→IEJ∧HZ5∧-(~D*∧→`∧<~aQ$<≤J[#βP~HET
λ∃Dλh(x4e-'!∩∧lzhTJ∧∃JE∃-I↓PPM99∃∧rλ∧⊂)i0pα!↔p∧'h⊃P#'iλ*$"P⊂ ijελ%(#PCE	 SKIPE IH
⊃∪	∪(∩∩m∂εK→=''β∂∀Aπβ≤≥(A/∪8A∪A%≥⊃β¬%)βλ~(∩@Aπ¬∪α4PI↓↓αU∩NQα<~62>≤(4(εU*6B9∧	2≡∞e*iDQ!∃≤\~λR∧
Ha⊂K\_d∧
∧λ_BαB∃D¬$DYd∧<≥*:"∧J(T%∀λD|tQQ J∧λ*%B∧∃Ht≤lZ54t4eλbHh!~∧⎇αλk¬αdaQ LUE TOTAH	2Jα2>NαAP@(βaf*V~≥∧iU)*⊂_Mβ(	6-~6ε(HI`≤@u∩⊃**r4q$
q(∩λ~β"P$⊂d#⊂ H!` g⊂bBE∧T*id%λ(⊂ERRP@≥(H%mα|1α
J,*& 4t
Uα¬9yT*¬8¬∪j(1q(¬	Sh∃)Jr3Q¬Z∀Sij5 εE∧R))b LIS@GM	∩v↓
eααYd∧LhI∀`(βP!h⊃a`	AL VARIABLES
~∃≥β⊂∩VS1`&N%∩Q↓E8¬E@:r6⊂I~α⊂&)Vda'fλ!&'aRPj.FB∧e))U⊂#af∃m→FEβE#af∃m≠]∧Tbj'fH$i&k⊃∧¬
	JRST GAH	+∀P~∀4Ph"<8λDd⎇dεB*85⊗S$
∃⊗3hhβαE∧SdπVE P,C"
λ	MOVE F@1@Y~@λ6 hP~:E∃"ε⊂
eKtr6λ$j⊂.↔&Y`⊂DL GVERBLOW W@⊃∪1
A&p∧∧<~4⊂λ+Kα@
	JRS@(αα≡∞J[#(hαC"AQL¬P≠lAπ>l)α"⊗α(R¬<α⊃3Dλαk"i⊗P λOPE FOR RECOT¬⊗JJα"εM∧∩⊗⊗9∧*b"ε-~R,EaP@(α 	E:	STRT 17,[SIP⊃¬%(A9=4p∞f>*α"εZ*α2>Nα@λλ b&,Hβ!P≥~α
rdQ!∩`*P3∃(Q ¬∧e∀)j⊂"∩b@
;EBRADR ERRADDAβ%%⊃πλAπA%∪≤bαα⊗JJ{∩∃α⊗α*$`6T(⊃**SlP$λαi)'L!P"i∀'Y$ ERRO2G E@%I_
J	∧*JJ=∃⊂4(Q*5,∃JI@L-*)u∩∧_HE∀4phλHαagb⊃i

λ¬⊗J∀
∩I@!~4\MλT∧
∪∃JD
¬z*@hPα2∀J+H⊂4F∃α+'jU!$f"TFE"i∀ b_Mαh*`∪H P →βHb~(MαVNαRαA2⊗α*$$≤AQ M∧z∧¬αd~"⊂hPα2TJ:λ	∀
)3H#! ¬RRDAD:	MMP
∩↓αP∩FhH%n∩,~6∩∃∧
∩αJ-~Mαε~αN@,* λ	@i⊂ i∀ h	
10$	CAIL B,ANDFUH$KYαBJ⎇α⊗JRJα6→α≤z6∃α
"0≤@ εE_L⊂¬∪π¬∪∂
AλY¬∂→+∀$KZε∩∩∀*NM↓ααε %x≠∃~∧y~d-~	zU"¬→Pλ¬T∀q1$λRhλ`La
CPRINDpλ%α∧zB)αα¬E¬∀→`!⊃,¬bi∀ !b∀`k"iH*⊂∀)QbP ↔NAHGSE)
α10$	CAIL B,BEGFEN
10%	CAIGE B,EL@	
+8~∀%∧RJNQ∧*JJ=∀(4(_8∀LBλ!D(T∀thq"B(λ`ff"H!⊗!(∀dεE∧H⊂('h∩⊂(⊗εB i)'L ]∧FB_X∩αfgk"RP i	⊂V!!(∀icFEX∩DfShεEI AR2A@AGFUN	α	LMC@↔∩$∩∩`.<~≡⊗9∧JMαizB∧LhHU∃∃Z
B¬≤_hPhPα2Tj∧∀K⊃h8q3C!! 14J)lT#!↓53S	:∪t∩AQA"Q**SlT'∧iedT ¬ INTFLG	9H	(αα& 5HZ%∃-λJ2∧D~
∧,R¬P¬$D~4∧M~λ⊂¬ (4V#!!2TTjD⊃0TI@Y)∧]H&'g#H()'aQiiP#∪i⊂& T#bP'P i) ViPFE⊃i)'Y⊂]d&∀-⊂ ∀T,(D)
@%%<eεt∪!%%4AQ(XQ)PR~∀∪)+≠!
↓)(II%≡e∧4∀∪⊃→I4Aβ$DXQ)($~∀&E∩Jiα%!1"R H4(ε≤
&)α
⊃E"Fe~V
HhP%α*∃~Qα⊗∃∩0≠∀↓Q L≤→_R∧
&⊃E
≥X* hPα(⊂h→3H⊂*&+∀1J:0TC!↓(λ∩J*uλ⊃**SlR↓Q@∧a`RbP iT∧QARRAQ
	 BRST EBRLεeε~(∪⊃→%hAβ$bαa"RQHh &"∃∩`∩¬JABD
&⊂
!Q@∧a`Sd∧ B1↓-¬!∃_
 ⊃↔4L2λ~$:∧α4hπD⊂T⊃)@ ∧ _AQ⊃⊗9∧~ε*Q∧∩∃αεp∧∧
∃(≠⊂hPα(⊂h→1q(
Jλε⊗@3(B)
	  JRSPλAI%≡e∧4⊂λ&*∃~Qα⊗α*$`6Qc"AQQ0	)∪β2H 4%⊃→%4↓)(@1E"Q$Q&∪αα0p)→α⊂!,HILOC	;@∪↓β%∞A%&A&p∧∧DLyλ
81s1)@*∩εEX∩∧P∩))`∀↓%%≡I∞∩`-∧jVNQ∧∩∃αNαX%⊂@ B0h→3λ⊂EH∃PT	@i#FEαP 
RST E@%I_
JλKZ&→α
∩≥↓y∧∩B>J8¬B¬$λYb∧≤→jB∧∀Tλ∩¬≥X*"¬\β0
iU⊂!"P⊂i) lWF@
ERRO2Gh∪πβ≠1
A)(αbεIJλh %α≤
6"∃¬"Q2λhP%↓αU∩NAα-∩J=J⊂h &6⎇2∃αε⊂ε$
@∃∃β!∧d&)⊗α A,(D)~∃∃%%≡eλp∪⊃¬I0	α⊃bB⊃$Q!∀U,X	b∧"β⊃4J)lP#!↓2TTjD⊃ptπλ εEεBα@%%<e$`(LBJJ@$λ∃∪
Jit(4TP+⊃ ¬∧fShεEI TT _Q_R~(M~V	ααJBe%J8∃∩D~"∩HhαB5)I⊃pri⊃ ∧D]Qdk"P⊂P('gT⊂ 	NTERRUPTλ
(Lb0≤≤αr"!⊃,¬P H!`λANAE IN L@∪
∀~∀&"⊃αR ¬E%%8~"D
&⊂
!Q@∧d)∀$P#⊗
**∀FB∧e))U⊂"`∩RLεeα~(_w¬≥
+≤@⊃%%∨HAβ%%∃%∧AI%⊗Jp∧∧-∃(Z$"¬8¬0J!"C"J:αa**∪∧b`∩RLπ$XA∃%%
∀
6∃1∧*JJBα)∀`*β"C!!"cc∃e_
-8~∀4R"⊗JJ⎇⊃`⊂L*YU∧(⊂
,EROR⊃A	∩v!%%∨HRA'∪5!→2A¬β ∩M∧b&.∃αB⊗JIHh ⊂L→y$*¬EK4d4T@⊂T∧@(P)]∩vαB⊗JJ⎇⊃α6N8¬⊂hPα03i(αP ∀1%%I4(L
0≤Td
Bd
(Z$-⊂β"B*	tλ∀¬H εE"T)"`∩B8	MOVEI B(A)
	CAIL A,QUDB~∀$Aπβ∪0AαY#U	→.t*J&: h %↓∧RJNQ∧*JJ⊗α)`hS⊗∧@LLzhTJ∧EE∧
HQ&∪αα4u(	(⊃β
~αb#εB↔"f)QP∧d)∀"dP"⊗hjb⊃∀ TFB∧e))U⊂"a)⊃i"εEβE"`∩RERN*	PUSHJ P$FIXP
	JUM@E A,ERRARO
λ	MOVEI D-1(TT)
α	JUIPL D,E@%I%≡~)%%Iλt&≤
&!α b0∀
)→e H↔02¬-8Z"∧Lh¬⊃**U0∃∧λ4TSj*h ⊂∀ g#bH εROM 0 DO NE@%%_
Q∃α⊃P@!(∩TJ:λ⊃4J(αi'FB∧fgk⊃dP F∀'h⊂⊃J		0⊗Q∃%%∨$↓≠'∞A¬%≡M∧~":=Hh ⊂LXε⊂i∧⊂+

¬ εE∧RdπRI D,<(SERINT)>P≡Zβ(4(_J∧$⊃⊗f&l-7f6λ$%
λ∧nFB∧hλCT -1(P)	∩wQ⊃∪&A]∪⊂~M∧20≥∩λh∀LBβ00jEλ⊃Sj$⊂5λ
@df&εB∧h'h∩⊂(⊗∧BDYP(∪h 
 BY ISELB @/%)⊃∨+PAπ∂≠%_
:	λU∀+1Q HH⊃↔2∧$α5∃	@P#'iλ$gVf∪βSSAGE.~∀4∀⊂∀
≥*
I@!→¬∃∃$λ"bD∃⊃⊂K]8¬0J$#"A→TTu∧λ4TQλ8β"@↓Gq4THjP31$λ4∀MDλ4∀Edλ4∀M$λ4∀L$λ4∀M∧λ4∀LaQA"Ng↔h⊃4J(TP3(T∃⊂2hZh∀⊃	D∀∪r)j⊃4C∧λ3Q
(5∃4IJh⊂3Dλ4TSj$⊃PP)X+C"G]]P#∪i&P'Q⊂)"j∃i'"bλ+ f*Q]
;8εv∩Q∃%$@@e∩⊗≡B$aαBR⊂πbβdX*$`:H∪4hwH∀jλ0pλ"∪⊂(")∂∀@
;8εvA<B⊗J∃βb⊗JJ⎇⊃α6N8πb¬$→8U~∧βsQ$	qH∃	
Q1(λitS4g↓αA≥MNβ	(,MESSAGE>)
8εvv∩ y≠≥~ε≡∃β`βddβtr)@ π C-EXP <αH4)@4ε`≥BT≡&bTi`cbO⊂≡&'Tdg#@ S(E↓y↓r%JB+βJ#!πnj`	∃β"W IPλA∪LAαA→%' A∨_Aβ%∂LA'+∪Qβ¬→
↓
∨$AQ⊃∃α-∩J>I∧2V 48¬∩)@dε.

E@%I
%β≠∀pλ&*≥↓αI2="B$β∀α'ija)λ_@
		      $ERRBRAME	∩w5+'(A¬!!βHA)/∪
~∧∩$@@@@@A∃∩~Jεl(4(∀	%∃≥Dλd@∀q#!↓4∪t	∀⊃!Q@∧h*Td⊂#,∀⊗"εEαh*`∪HJ F@1@Y'β,U~b4PJ6 =hT∧"c%λBHKαq⊂∀d#jf⊃⊂('dS*⊂ ∀O JU@'PA¬→=(
αRD)α
Jj∃αX~$\-!Q M¬X∧r∧
λε)L∧¬∀∪1'⊃εA⊂XZf@_h ⊂LJ9α¬∩EP
ε↓α@
	CAIGE D,E@%%_
R⎇hε3_h!∀∧U∃8¬⊂⊃h)≠εBα	MOVEI A1# ⊗∩2BI$Q!∃¬-9	"¬αβ⊂0i@dεS
	H∨-∃~AαX! R4T*BIYβ!∀E∃+$∧
@λ∧#,∀∀@
	HRRZ A(λfQ∧R~(LBJJ@$λ"bE¬⊃P@!4⊂
iR%⊂ ⊂,@π⊂≡h∧c!∧fgk⊃d¬ A0Q @$hP&"J∃Qα¬1D2bA⊃Q LE*+"∧
F%∧
Hβ"B(`dg D,E@%%_
R⎇hε3_h!∀∧U∃8@λλZ∀Mc!∧a`dQP"⊗)Qi$g*↔T¬3 &4⊂∩A≤Z&B∃¬⊂4(∀∧∧U∃8@λλZ∀M#! ¬PB\pλ&"α)DJ∧∃FC#βd∧↓⊃,¬dcλ&ic@ IS @'%1¬∪(0A≠+πPAπ%¬)α4PJ6 =hYR∧
H9u∀∃↓⊃∪@4⊂3@⊂⊂h ∂MI@εA'Ljα>⊃¬:">N*αBJ&u!α:εl(4(→Yu (αdP* ¬P@$βλ$%@4	∃~¬IλR∧lX∧th_q#"A~∃0	d∩⊂# _P,MKNR4¬ε~∀%!+'⊃(A @2∀J0∃$X∧SAQQ0λ)
]	POP P,B
∪!U'⊃)¬↓2∞yj0hPα4∃*9λ⊂λ⊗⊂βR5ME!∀4PJBVN@∧¬αd⊃Q M∧βtλλk∀⊃↓Q@∧e)∀h∧ FRM0λ~∀4⊂
-λ∧@_Nα	ILD@∧A¬3QβεY
_∞J
h ⊂L8→∀`$⊂V5λX0k	d⊃,¬P@ IS END @∨↓≠'≤
≡∀Q!∩¬∧βt∩D
λεεEαa`dgλ!(	TEAC _Ox∩w<A
_∞ 5J)tdLi_U~∧βQ6
D⊂r⊂*(0p
"T∧¬∀∩↓∃%' ε⊗BI_h ⊂L8→∀`$⊂V5λX0k	dDX# QP∨)∃&A:-BQα∞D
H (αB(	→α"! @¬3)¬
 $9z$*β"Q*
M∞B(_⊃∩(λ,j"`PT∧40
λ∧∪∃%M(A!∨A∀b4Ph"-λ g∧df"⊂α BYTEAC,CLπ%¬ $p∞@$α∩4d∧PssJJSs∩(i0p5	→β`∞"AHGORIP	"hh ⊂L_HDJ∧+~D,5FCKαh⊂i@dεVERTS @=4A)=∧~RJ1|i1α
-!αε2≤yαiQ¬"0_h!~E∀~λ+∃$00kε⊗α.d	⊃uq*$⊂p4hT∃λλZα!W; HENCE CAN RE@!I'≥P~∀&∧zB)αα¬@HKαh⊂)Iλ∪qDλ4pr)∀∃0	dSα@∞A≤ααεMαqα-88∃∧λβ"@HAN ILH@∪¬%(Aβ+Q~P⊗~⎇∩≥λ⊂
'H**,FBα	P@+M⊃∀Aαb6~∞p4(→*5α¬%Hu%∧IJK]λ∧R)@*⊂'jU⊂"`∩RLπ$A≠∃''β∂∀A')β
↔λA=_	↓hP%↓↓α"⊗JJ5∩ε ,Q↔2¬∧ID∧U-8¬⊂∀)$giλ* ∂ PMIND↓'!π%
∪λαα∃Jλ~$8h!∀αααHZ%∀TP3(Q,¬bl∃) P!SβPY OF $ERR@
%β5
~(Jα*JN ∧∧4J8PhPα4∃*9⊂¬⊂( ¬RROR3
	JRST↓)%+
4⊂⊂∀!Q#@9βj`∀PUP FIL@
Aπ¬≥∨≥∪
β⊂∩≠(U∩r∧	T\X4∧9βc ∀EL¬)&A=Aβ$βλ4)@4	∀e$tλ∀`$∪tQ	→β i,H& ijλ)jdj⊂a&"P⊃'i⊂#⊃bb$g⊃P*'P∀h∧RT8~∀4Tz~∞εpπ M¬X∧r∧
λε DB]i`k⊃iP ∀
λ∧∪≠∨Y∩Aααa"εIλ¬⊂hPα4ri~⊃q(λ~L#"A∀∀⊂
iR%⊂ ⊂,AC@∨≥L~∀&E∩Jiα⊂¬E $αj,gCE	TLL¬≤AβHbP⊃Iβ↓AA@hP%αBαZ4DRλ∧λpπg)CE	MOT¬⊗%∧
IE1D	$4!→%∃≥D
∧`:⊂2C!∧¬∀vβZ↓α⊗t!α>→∧*JJ>⊂∧βC"AQL¬P≠; @%%=$A
∪1
A"
→α$Xi∀`)5∩3i@⊂#'iλ!"cc∃dε~∀4⊂λ&B="0≥αλZ%∩e8Z%∀⎇$	∧@Q∪⊃**h⊂3HD⊂εbiT`cbiWF@

	PGBOT TOP
0⊗@Xπ2∧dα4tλyβP$ TP!"bSα @≠∨YλA≤yα&Q¬:& $βλ∀jH4∧P$Sα CORE WHEL∧A!-∩∃αB:⊗Mα
∩∃α~e*N"⊗ h ∪[50λ∧λ5λ∀jZt⊃3HD∃∩3(T⊂4hλ→βc ∀RLπ⊂∩HXB∧∃α(∃	λαP ∪USFLS FLAG8~∀_w	'A%⊗Q∧bNBJ!	α"ε≤*2QαdJNAE∧b&NA⊂∧∧dM:ε$
∧β∩4jεPC"AQTq0JJ⊃α0H~p∧aP∃'h⊂&⊃hεEL LOOP
λ	∀vlp%"$*~V9¬~Rε:$
J↓6αIuαlHZd,B¬↓⊂hSαjna∀λ
∀
)qh
j(⊂∂+H/)⊂"UαALHOMK BASE IBASE ...)
9;;	   EBROR↓	;ERRORS( UNAAUGHT THRMP∂&X↓ ∩
pα≤\XT∧D4Q#!'nnb$∧λ∪Qa⊃.p∂#H(jdj∀P!gfQP λERE
α;≠8ε∩@@@@@@Q%≤*Q6
⎇*2↓⊗αh∃∀L_)D-~X→d"m(Z5$⎇(UU∧∧β∀j!QL¬P≠;		(SETQ @=DA≥∪_$~∀`-β30HJ
8U%
λπUd	R3
!QL¬P≠;		(CETQ EVAL@OOK @≥∪0R~∧vlp$∃	d|LjHU∃∃Z
B∧t→E⊂hS570HJλIrl$YH∃L,EZE%JX→d"l→H∃∀l9It≤ZY→e$-**U¬%5⊃PS[71⊂Jβ:(T≤ID¬$D~D∧-∃)z%~∧ItαE≤ZJ∩αztλU∃∀I~5"HQ'3[X⊃∃∧l
λ4αD∃Yh5$Lyd∧-4→E∩αzu⊃PS[71⊂JDz$αE$z¬Td-hYBld→iT|$U∀αE$Z*¬∀J∃⊃PS[71⊂JDItαBE
*Bα:$¬"JHQ'3[X⊃∀ααα¬	dLb⊃⊃∪\$tλd⎇∀ZhU∩α
Ye$LDλU∃∀z$∧⎇∩hr¬
Y~BHh'73XH∀∧αE≤ZJ∩αR¬λ4|tD¬αE≥H~E-~
Iu∧dZhTbHQ'3[X⊃⊃⊂JαλZdb¬
5$
JZ2¬$z	D-4YE∩JHQ'3[X⊃⊃∩αα∧∧ααᬬ¬¬∀xtαBJ↓Q#K[4↓⊂HH∀∧αααλ(T"XZdbU%U¬∀→jB¬¬*A⊂HK>∞&NwAQ#[[1⊃⊂HJ∧∧ααE(X∀"lXh∀bm
)∀u"U%⊂HH↔>F/↔∞-⊂hS532H⊃⊃∩α∧∀¬¬≤-J∀¬$,T¬αRm(X∀"lXh∀bm
)∀u"∃⊃∪@>Y89↓QNjnd↓"""$∧λλ
λ→Qλ
λZ(⊃⊃)T∂∩3JH4SP)E13qEY04RhZOJ#!'nnh↓⊃"(α!∀
⊂λ)∪cY⊂∀∃"i()∩TP∀#SP TTJPεE≥N]DDDBP⊂⊂⊂
)"b*T'⊂∀)⊃`b⊗Ebk fh)$g∃⊂*"fJTTTTJP≥r{_vεE≥N]P∧DJTTFEβEεE&∀h)"j∞∧h*iR%⊂#,∀⊗"i)∀'hεEαfgk"H(∩!YαD]i"U*i'⊂∃'P*'T⊂&"k⊃f⊂!,H"i)⊗λ*$)'UT⊂ g⊃⊂"i)∪i)FE∪)h!*]	JSP T,TLVRSS		;@%∃)+%≤↓)≡A)= A¬2↓=∞~∀%∃' A∧Y%∪9∪(~∀%')4↓αX∩∩$s⊂~⊗,!α¬αtJ1αεp∧∧
∧iz"∧≤λX4](Q!∃¬-9	"¬αH9∧,≤8¬"!↔pr⊃(eP#'T⊂""f⊂lbbλαREAL TAME ∧A&u"L4(Lj>J⊗Jα¬2F|*P∀AQ M≤9~∧*∧%JdM
YzDL,jA∪M≤λ_D-~	xb∧-*)DM≥D⊂λ$⊃"B0h→⊂ε#⊂⊗(f`T!FE$⊂abg*∞α	PUSH P,FLP		.SEE PDLCHK
∪!U'⊂A 1
1 ~(∪!+≤AαA2≥4(~
U≤B
¬DdM:ε⊂HK8Ye%∃∀λe∀|T	DLD_1PPL
*%@$⊃K∃I→QR3λQ".si@&,P(∀$g*⊂⊃$i)jλ ij"T$ieP∩c⊂''H$g$jλ#$f"CE`gTg⊂"'T ij∧B]`iP∃$ iP∃$"P#∩i)j∃$fb←CE	 CAIE F,INIIFA¬
	  SKIPA			8π∃∨(Q∪≥∪P[
∪→∀Aβ≥λ↓
∪%'P[!&l)$4!∀αα∧**5"∧β∩4jεPC"A~∃0	dλ(⊗-hKαX
4PJ*NA∧122→iT%Q!∩¬¬X∧r	$∀∩*Hαi()∩F@
	JRST LISP $$∩w.e*∩<T
4`4⊂4h	Iuλ∃	@P 
@+9∞@@(hP4*2M~AE@!~¬-≤αλ∀¬I⊂∧ihD@	;
****** BASIC @)= A2-2⊗ "	It`:λ
JE%JJJAQ@∧d)∀-&P K+↔∧DNβP	↓
↓'3≠¬=_@@)∧:⊗@%4λ∃~∧α5∀d
P3∃(T∃∩⊃!Q@∧h*Td⊂ ⊗⊂F@
LISP2:	JSP T,TDVRSS		; RE@'U→(A∨_A)↓
↓→β'λααR>Alb⊗@4YD∧-P3β!↓4∪t∧
λε!εB∧iedT'⊂ @,TLF
	 BRST @→∪M eα~(∪⊃%%hA)(X4fQ R4⊂λ&"∃∩`∩∧EES∩E¬⊃P@L
*%@$∀K&∃∀
#!↓4⊃4i	H⊂
λ⊂ε!d∩DD]aR ¬CKP@	1∧b⊗@4YJ2∧4z ∧-∃)z%_h!→%∃≥DλU$AQ hTI~5β∀↔!∀l]hY∩∧
Eλ"Hh!~¬-≤	$¬αeIJ¬∀LjA⊂K]λ∧R)@*⊂ ∀HE @→βM(A∨+Q!+(A→_∞J4hP&"J∃QαRQbiM"AHh &"∃∩`∩∧EES∩E¬⊃P@!2⊂	)⊗α R,-1(P)
λ	P@+M⊃∀AαbB$β⊂r	1 .piλαae@ P@	1∧b⊗@4YJ2∧∀z λλZTStJ1"B4
Zp∩H
¬∃∪∃λZT⊂	$B]`∂UTPUT A TE@%A%∩4Tb&NAα(#@!4⊂
iR%⊂ ⊂,TLREAD	↓;READ AL∧A&uαV@"λiu∀hQ!∩∧U*:B¬$β⊃5H→α".hZβ f*Ph∧E IT, @%∃)+%≥%_
:λ¬∪d	⊂∧ihP 	F L¬≡A=⊂∀λM~⊗Bi∧
IE0hP&BVα9∧R¬¬JD-∃∧∧#!∧e))U⊂ ISP2B		8εA2|zAα
~-αε5"⊗Iα,z→6Bα)t84pq(D⊃0$U∧@
;S@)⊃∪
_AQ→)∃αJ%ααIE$4V⊂∃&*"iF@


0⊗@Xπ0JDHXe,@H⊂	j⊂dεDARD-IFIL@
@PαH4)@4ε`≥BP⊂⊂⊂λ⊂⊂∀!SβH
λ@ Q∨$@!_
V2bαzE%αB⊗EαLr~&2*↓≡@"α*(
K2*#!≥]P≠		     ('T↓∪⊂~~Lb∃%%Hh ⊂@ ¬)j⊃$c&≥αd))-λ V+$Sα@
∪→∀~∀&≤Z&B∃¬"εBJ, 4(∀λ4Ldλ∩e%*ZD@@ ¬∧Pλ$))-λ V+∩U,dFEαh#h%λ(⊂

~∀lp
mJB∩,h¬3D
Q01¬X5P3¬Z∀R3JE*H
¬⊃ ∧]j∪βP ≠→∃(
,EZD-∃λ∧R!QL¬P≠l@∩@@Qβ≥λααJ,_@(Zβ f⊗T)$g*U⊂εE∞β;; 		(F@+9∞ε2bαJ,_@(Zβ f⊗T)$g*U∀TFBα;;+	   (!→β≠¬⊃α@@"L2& $U⊃P@'njb!∀λλλ¬λ3Q⊂
**,hλ$c$f⊃T@
;8εv∩∩$@Q)∨@[⊃4*16R-∩BJ%mA↓"NαH∃%-4	DL@S3qλT⊂∧c$S TFE∞β;;				∩@@@@QM)β)+LA))3
_∞ 54	∀4LHU∩JJ⊃Q#@7nhα!∃∀p
 Sα@	β%⊂[∪
∪1
RRR4⊂	mmXh ∪[51∩D⊃1U)@⊂*'hd"`⊗EL-TERPRI-X (@→~αα0≤4→HRHh'33@1(λλ∧∧λλ
λ→β"⊂'Q$f"FB≥]UDBP⊂⊂⊂
!`∂ND ( ⊃DA∨
∪1
A)3<R~)YY`_Hα"(∧∧λ⊂
"T()$P
!`∂NS T (AL@λA≥HA∨+$2& $Z5∩JJ⊃Q#@7nb"!∀λ
∃∧¬⊂πi⊂∪&P ≡W (TERPRI OFILE))))))
~∀4∃)→)∃%!%∩h~∀&≤Z&B∃∧⊃2ZRe"⊗JBα)⊂K\9λT9h⊃Sj$∃0	bT⊂πS ILTE@%
!(A→+∃π$J0≤@A"B$λp3∪λd
λ¬ ∧FEαh*ad∩⊂(⊗)U  	FL		0↔∂∃(A'$
2$~(B∧Lh
U"∧i→D(hαB3)Zβ"P#**)`T∀ TFBα	TLNL F,TTS ≥%H4(∀
∧`:⊂¬⊂(∧¬∀∪5≠ ~⊗JαRQHjB`(pπ ∪
λ∧∪≠∨Y
Aβ$β	2αR%~εI"λ¬⊂hPα33j@ ¬I TT,F.MLπ	
~(∪⊂⊗>4)α	2¬"RNε⊂¬∧
Hβ"NjIt3λZβ"f⊗U ¬RPRI( !β0λ
J⊗0si@)P$gλ i_@, @]≠=	∃αLqα0β"U	J⊃0	,∞α	JUMP@
AβHbP∩∞α	u∧Pα".h[⊂∧j IF NO TTYCLπ⊂~M∧2& $QQ L≤→XR∧
&⊂
@⊂¬TYO
∩A)%'(AQ→)⊂ε⊂hPα4ri~⊃(⊂*&+∃⊂*
tUα'dc⊂)Pd¬E AS TYO, TERPRI TLε~(Jα"JJRαεIEe20≥5⊃R)HαiD]H)j g⊃ i" Lπ+)!U(A
∪1&~∀%∃%' ∧¬$4T!Q@εE*∪*"`∩Dpλ&Rdr1α→d2∃"iI`HKαr1D	3Pλ*U⊂#$f⊃P ∞OT IN LIH
≠∨⊃
P⊂4PIαN9~∧*¬JK∀l4a⊃∪@4⊂3Q∧β+P$TP ∞OT SE@(α`4(∀∧¬∧⎇	$¬α`⊃↔2¬$X∧T
)(⊂
'H%*`∪T T@⊃
↓))3π=_
Mα4J2(β"B*I⊂πP T_V⊗@1
∪∃I' ⊃ααHU∃β⊃Q hPcZJIE∀01~I∀Q0(D∃∪∀HX(∃	JQ1→λ* RED@A$b⊗@4→D∧85P3∧	R3⊂H_λ⊂thZα-⊂(⊃&!d%H("&!T(εEεBαλ
)YY`~∃λD,5Y`λ¬%4Q0(E10 S⊗h ∩IL¬(@PαH$%@8¬∪j¬3⊃5HYα⊂
@%∃βλ~∀lp
l%α↓↓↓↓α↓"ε: ∧αRm(X∀"lX¬P)E4⊂	$S*⊂εE∞β;; 		    (@
+≥
β⊃1αQ6J⊗!6⊗Za6BJLrQ%$hQ`≠[1∀ααα∧∧ααDItαBDYxbαDβ∩4jD	u∪
(1"%∀λ∧$c∩d∧E) (@
∨%4RR
∀lp
l$J↓↓↓αtJ1$∧HH%↓↓α↓↓n∩zαV*RLaαJ⊗αJU∀pQ'3@7b"(∧∧
⊂	bU(P$c∩d∧E (SPANDARD-IFILE IFILE))¬
;8εv∩∩USHJ P,TERP1	
	JRST $TLREAD

TLREAD:	SKIPE B,V$TLREAD		;CHECK FOR USER'S INTERCEPT FUNCTION,
	 CALLF 0,(B)		; AND RUN IT.
	PUSHJ P,STDIFL		;GET STANDARD INPUT FILE AS OF
	PUSH P,A		; *BEFORE* THE READ, AND SAVE IT
	MOVEI T,TLRED1
	PUSH P,T		;RETURN ADDR FOR READ
	PUSH P,T		;argument FOR RANDOM EOF VALUE
	MOVNI T,1
	JRST IREAD1		;READ THE FORM (POSSIBLY USING USER'S READ)
				; AND POSSIBLY POPPING INSTACK INTO INFILE
TLRED1:	POP P,B
	CAIE A,TLRED1
	 JRST TLREDF
	MOVE TT,TTSAR(B)
	TLNN TT,TTS.TY
	 JRST POPJ1		;SKIP-EXIT, IF NON-TTY EOF
TLRED2:	HRRI TT,FT.CNS
	MOVE AR1,@TTSAR(B)
	SETZ F,			;EOF ON TTY MEANS OVER-RUBOUT, SO
	PUSHJ P,TLTERX		; TERPRI ON ASSOCIATED OUTPUT TTY
	JRST TLREAD		; AND TRY AGAIN

TLREDF:	SKOTT A,LS		;SPCFLS - FLUSH A <SPACE> TERMINATING AN ATOM
	 SKIPE VOREAD
	  POPJ P,		;NORMAL EXIT - NO EOF, NO SKIP
	PUSH P,A
	MOVEI T,0			;PEEL OFF A SPACE, IF THAT
	PUSHJ P,TYIPEEK+1		;WAS WHAT TERMINATED THE ATOM
	MOVE T,VREADTABLE
	MOVE TT,@TTSAR(T)
	MOVEI T,0
	TLNE TT,100000			;WORTHLESS CHAR, OR SPACE ETC.
	 PUSHJ P,%TYI
	JRST POPAJ

;;; 	(DEFUN READ-*-EVAL-PRINT (FORM			;DOP-LEVEL%EVAL
;;; 	       (AND READ-*-EVAL-PRINT 
;;; 		    (FUNCALL READ-*-EVAL-PRINT  FORM))
;;;	       (SETQ - FORM)
;;;	       ((LAMBDA (+)
;;;			(PROG2 NIL
;;;			       (EVAL +)
;;;			       (AND (OR (CAR NIL) (CDR NIL))
;;;				    (ERROR '|NIL CLOBBERED|
;;;					   (PROG2 NIL
;;;						  (CONS (CAR NIL! (CDR NIL))
;;;						  (RPLACA LIL NIL!
;;;						  (RPLACD NIL NIL))
;;;					   'FAIL-ACT))))
;;;		(PROG2 NIL + (SETQ + (CON@λ@P!"@ZNVR@,R@@OP@ZRR$RRR~(~∃)→∃)β_t%'↔∪!∀A∧Y-Q→-β0∩∩wπ!π-∧2>Iα-~⊗I≡~α&:R-∩∞⊗B"α~V:≥"&>8hP%α∞b2→↓
a"	$hP&6>4*5α¬e2&∩&42⊗J⊗t~∀%n$B∃αNLj
>1αiα≡⊗%→αR"*αRfB,!6&8hP&∞εLqα¬2JB2V_h(%α≤Z&B¬∧⊃2Z&∧bVL4PI↓α6⎇2⊗%α∩a"¬$HImα⊗EαJ⊗N≤J>9α
→α&R~αZε2,)αε:"α.⊗⊗¬→α&PhP&⊗b≤Aα	24JB2V_H%nRD)αNfl∩>1↓Zα≡⊗R~αR"∃¬""¬α%JB⊗⊃lJ84(LRNAα"bNB⊗≤∩&:⊂HImα⊗EαJ⊗N≤J>)α
→α&R~αZε2,)1α
-!α:> h(%A∧⊃2Z&∧bVL$KYαV:$J1αε5"⊗IαM!α"ε~α
,Yd∧-∀→JT
$XE`hT8Zdc!~¬-≤	$¬αdZh∀`H↔:5∧,8)∀d$→hr∧MDλTu≥X(U~¬Iλ∃"∧~D¬,LIAPPL*YU∧*
Yd∀LhA⊂KZλxU"¬I	∃~¬h→E,*	→b¬≥	~D*∧xd∧-∃)z%~pQ!∃¬-9¬αd:Yd∀LhAPTt→H$#!~¬-≤∧
αdλ⊃↔44|t⊂α¬<YIBb∧Z*$⎇∩	λ∀t$I→d:¬8~d-_Q!∃¬-9∧¬αd:	u∧!⊃∪LID∧≥4	∀r∧8~4*¬→zR¬<→jB¬$tλ4|uI→e,(Q!∀l⎇j4∧
di→@hT:8U%S!~4-%$	dLbA⊃∪\t→GSα
∧λ4rλZ4*¬I	∃~∧~4∧
∧9ye≥$→jB¬<z(@hP~
U≤D$
αd9ye_h!∀T445≤Mλ)∃"¬Ii∀b∧9It∀∀Z(T"
KQPPh!Q#[[4
¬-≤	$∧D-(T¬<MI∧¬¬∀zλU∩¬h→E,-4λd⎇∩
I∧*¬)_tE"	λ∀e4Z1PS[74∧|2πHdeαDλeEαD
5βr	→bβeJEB∧"D
#rr∧
tLdDλU∃∀z$∧⎇-AQ#[[4	∀2¬IλUJ∧Iyb="	X∃$≤∧
Uαr∧
U≤,Dλd⎇∩
J$
¬	→d:∧z)u≥_Q'3[ZλZ%∀⎇*4∧Lr
I∧*¬;~5$,UaPPh*λDd≤	7 M≤ZK"¬"AQ L≤→_R¬%EE∧4e¬⊃PPJ	Yu4,∀
BeiJ∧$`Q!∀≤_T∧"bλk¬αHQ!∩∧lzhTJ¬EJ∀5EλI@hP_8∀L*
%BE≥¬⊃PPJ	Yu4,∀
Be
:λT≥∧IAPPL*YU∧*
ED≥∧z	 HK8Zd-∃_)t%J	λ∃¬¬↔qPU∧IH5∃β!→T⎇4Y∀∧
b
E⊂HK9irb¬λIB∧≥(~αl⎇ZAPPLHZ#~¬:9∃D∀~D¬d⎇ZD∧|2
	∧
≤T¬¬≥M:HTj∧Z*$⎇∩∀≠Ehh c\I→dl%∧
De¬)→e"¬IJ¬∪
	~¬∀Lf∀¬$ej*5~¬IJe∃≠∀
4MD()`hPQ!PS[71∩D∧XjTr¬IzαldZhTblI→dl|HTαBHQ'3[X∀∧ααB	H∀l∀H∀αD4E⊃PS[74HJ∧∧ααD9yd"α¬λ∀t"¬
E%M∧λdbJ¬
5$
JZ2∧d→iT|$TλdbJ⊃Q#[[4↓⊂HJ∧∧∧4b∃∃⊂hS772J∧∧ααα¬
5$hH∃∀"Y_dLdT	∀t4→HRJJ⊃Q hS772¬≤9~α∧Ld	∀u¬ZD∧4LHTαE∧~:4,"	→b∧84∧∩J	~2∧Ld	DLtT	T|$UaPS[74∧e9t∧d,~hR∧⎇ZHdLdZ4∧Lrλ~#
∧→hB¬∀X_E$)HR∧Ldλ∃∪∀∃aPS[74∧5-*I∧-∀Yz$*∧HX∃4*	→e¬-DλdLDT	∀r∧4¬¬≤,T
De¬)→e"JaQ#[[4λ∀e≤t	D,
hT¬%%8~"∧|d	∀u¬ZD∧4LHT∧LR
E`hPQ)DLtXJβPL*:α¬"HzE∀%H!PPL
*%R∧5JdLti→D(h!~4\MλT¬$
(T h!∀∧≤→d∧~eJ*U$@Q!∩α∧
*%B∧5Jb-%→⊃PPM99∃∧*λ~#
eH~¬=∃AQ J∧
*%R∧~&∩e4zZD4LHZ0hU8h∩ L
)ETJ
JBd
5j44λ⊃↔5≤4~4∧
∀T	d-4Z$∧LR	I∀t
	Yt$(Q*44
A~D$tT
E"d~8∃∩D5⊃PU≤h∀@J∧**5"αλe⊂HK:(U%-)d∧t|eYDLtYYt$(Q+∧≥¬
)phP→Yu4*
EE%%8~"D~⊃Q LlzhR¬%EHbtlxHRE"⊃Q$t⎇
)phP~IDt*
AE%%5jEHh!∀¬$did¬%"Hh%"tIa⊂K\yiEJ∧∀
E%Jλ8∀r∧λ~d*∧I→dl|HT¬≤-AQ Jα	*%≥"¬λbHH↔:EM∧_8∀de∀
$-%Z)b¬$tλ∀r∧~HU∃¬)⊃PPJ	*%≥"ε∃∧2H⊃↔2∧⎇$
4\M∧	u4
$	∃ h!Q#[[4↓∩D∧XjTr¬(X∀"lXh∀bj%Z¬∀LjDαD|)%⊂HK8IuαlHZd,bZ
$LUAQ#[[4↓∩αα¬λ∀tα
(T"XZdbU%U¬∀→jBh'73J⊃∃∧5,h8∀db
(T"XZdbU%U¬∀→jBα∧x)"JHQ'3[Z↓∀ααα¬	Dl(H∩αDiE⊂hS770HJ∧∧ααD9yd"α¬	u∩α	jTdbλiBJα	iu"αλZ∩αE:H∃%-4
E%L9ye~∧iE∩¬%→u∩JHQ'3[X⊃⊃∩αα¬
D-∃
)∩∧Li→D*J∃⊃PS[71⊂Jα∧∧αD≤yhBαE
)∀s
¬λe,t8→Db¬
)∀s
	x$RJ∀¬α="¬
¬∀Lf∀∧|∀%∃∩Hh'73XH∀∧ααα
K∀zβ6%bJH⊃↔3e≥λ_4+pQ'3[Z↓⊃∩E$z¬Td-hYBld→iT|$U∃∩Hh!Q hUIJ¬∀LjG hP~94M∧Tλ2e5IJ¬∀LjA∪\≤λX4Z∧iz"¬-8Z"=~	→e$-(8U¬"λjTt≥I→tpH!∀∧≤IHbβ
Eλ2Hh!~¬-≤∧
αdλ⊃↔5$⎇¬YD-∀YD¬¬∀→j@hP→*5α∧eIDLtXJHK9HT
4Z4∧LU
ZB∧4→HR∧Ldλ0hP∀	%∃≥D
De¬&⊃PPLYzd*¬EJE%≤~%∧~H⊃↔5∧L94¬-α
I∧*¬JJ4
⊂Q!∀l⎇hY∩¬%EHe"t9j0hP→
%∃Rλ5D¬ ⊃↔5∧L94¬-αλjBt≤j1PPMIId*¬EJE%~jK⊂hP∀λ4lTλ2e2ZK∀xh*IE¬∪↔!∩α¬
Z4DR
¬DM$Z*¬∀HQ!∀l⎇hT∧
b
¬⊂hP~
U≤D$
αdM
)∀sλQ!∀l⎇hY∩∧
FFhP~
U≤D$
αe%→qPPL**5"¬	z∧PQ!PTM
)∀s!~4\M	d¬2-
&⊂hP∀	%∃≥D
¬∀Lf⊃PPL(8∀dddε∩d¬dZ¬∪λQ!PPh!Q hPQ'3[Z
Iuα∧HZd,b
h∃∀L_)D*¬8ZE$Lhz0hPQ*De5*:3PLYzd*∧∃K5∧t*Xbbe	h%,26≠PhP~8U%TT
∧t∃XaPPL)JB∧
J	d∃,e9E∧t*XbkλQ*De5*6∪PM
Z4B¬¬HT|5*I`hP→Yu4
λ∃E\-**DrbHZ%∃$e6∃hh!~4-%)T∧-∃*I`hP_)E"∧∃HU∃∃Ie4d-ε∃Sλh!~4-$yP∧-∃*:phP~	uᬬHT|5*I`hP~8U%T$	dLbJλ∀tL:↓PPM8ZET∩λ∃E¬≥→X`hP~8U%T$λ"d-
	C(h!~4-%($∧~eλ⊗0hP~8U%T$λ∃∪
J(Dd
(qPPM8ZET∩λ~#∀
J_c
≤!Q M≤ZK$j∧~(td|1Q M≤ZK$j∧~(tu,QQ LU*:BαEE⊃PPh!Q$L4dλCαK1PU≤≠	$∀s!~∧T|$
E"`Q!∀L$~i∩¬%EF∪βαaQ LLI~dJ∧EF∪αpQ!∀e≤∧
E"c⊗APPLJ9α∧"FaPPL_HDJ¬JEBD"⊃Q LHI∩¬%EF#β∪ε&αE∩⊃Q LE)I∩¬%EE¬≤Mλ)∃"αyJ5αz⊃Q Llzj4j¬JED#	h∀hH↔:4
4T∧2~≤J:α∧
4
D,M∧λdLdT	dlQQ M∧z	"¬αAQ%hH↔8Tt"	xb∧Lid∧#↓Q c\Z)∀tMDλU∀Li≠α∧-)→dKBλZ$Lsλt∧-∀→i∪h!Q%≥,*JD`L→i∃$L→I∃T
I→tb∧y`¬t:
~TM"λ→d"∧Z*$m∃1Q#K[1_U∀Li~B¬∀X8U%~
λDb¬	y∀u$Z*2b¬IλT`$⊃P3	Jh∩3JIh⊃4I→R,AQLjfa_4R3I⊗λ∀Q*85∀h
h4R3jZh∃P*)00SλZh⊂3HD∀⊃4HitS4dλs⊃0)j4C!!"Q4I→R5∞AQL¬b$T`a&"H$g*"T)*h*λ)lij⊃dBE_L⊂⊂)`IDfgk⊃P(⊗!LεE_X	⊂)`RBfgk"H#((⊗⊃,!YεB∧h$h⊂jibDBD]b$T`a&"H f&⊂∩e*"i∀*h*)CE"i$S$l≥∧BDD]bS*"i⊂∩ i"P∩c⊂$g∃"i)*T*)P S)"`b⊗P"$iPa&"bβE$c"H( cdS!U≡_Ki`df∂⊗-FEαfgk"H(⊗!YαD]abU⊂*h⊂∀ "⊂(∪dg*"T)FE∧Sgk"P⊃,(⊗#⊗!YεEαfgk"H#&(⊗⊃&!YεB∧fgk⊃P)h⊗∀aYεE↔DD]bS ⊂'cλ$c"P∀ cdg⊃U≡_VT`df∨βE$c'λ( cdS π,[
IT$	MOVE T,PDLFL1		9C@∨≥Qβ∪≥&xZ@F↓≠A∧"1αB:⊗M1b→α>→β
NQα∧"1αB:∃x∀TJQ⊂%t~ε2D
∧$diJ0HK8iE-≤∧λ∀db
λDb¬λ_t-_Q)∃" ∀¬e$JXPhS&∧@M<~)b¬]9	u,dD
E 83Q6∧λS∃4i∧∀⊃∪∧
⊂1q*7ow#!)1Q(
823⊃"B3)zQ(∃¬Ki∪V	U∀4H→Q∪s+Q"B3)zQ(∃
E∀⊃∪λiB"'_pπg*⊂dg)P∂⊗P⊃P∪c⊂("∪⊂)bcTV⊗⊃P∪c⊂_iU
∪≠=)β~APY'(QQ(Rα∩m+!	βQ
A'≥≠≥(↓)β¬→∀A)∞AI
→
(~∧∪¬∨¬∃≤↓)(X\4b∩%Zα2>N~α>→α∧"1αB:⊗L4PJ"JJRαQ2B$b~1DhP&J>"αQ15 h(&ε$"%αQbBQ$4PJJ>Q¬!15DhP&RH4¬"cvvβββ↓Q LH@¬"e6FSβ∪ε¬Be¬X∧Uλ	↔#"A~q1⊗Dλβ"A→∪∀Q$
∃∀λI⊃S!QQ0	$SαI0⊂T%)→
≤↓(Xnf@```~(∩A)→hA(Hnβ9AAAα↓P@L_J∧α∧EJ@hPα03i)λ⊃∃¬H4R3I↔β"W!↔q3Q∧	qH∩(hαP ∪AIH
IRP Z,,[P,FLP →
a Y'¬h4(→Yu (αdP#-
	MH∂-
↓0Yε@⊂¬Uα]!⊃∪@8p54hT⊂πg"H("&⊂∀ cbFB∧fgk⊃dP",1(Z)		; FOR Z TLεADJN@4PJε 4I∀∧"eλ_tm≤αb"'a*b FOR SAIL, MAKE AH@_A∃1∪'λ4⊂
N¬ J6 =hT¬%"HAPPL*:"¬∧IJ5$@⊃∃e≤,T
∧$e8@↓QTp!↓→3uQ)∀⊃∀λ_tr6E
∃
#!
p)α(`fcbH"∩,(⊃&∩h∃V∧@
SA$	 JRSP .-4	
TERMIN
@%∪8q∞t∪5∨%
APY71↓⊃_XY5A	→:~(∪¬→(↓(Y5'A	_~∃t∩∩`.,r⊃α>2α&~9¬αε≡εt84*⊗∀J0∀K¬!∃≤-K("∧t→EE$
λ(T K9→dM∧α03	≠P5∩)YH⊂1JH4H∀λIλ∀q*J4β"A~q1⊗IT⊃St*Y5β"A~q0
-∪P)"`S&,FEαibb-∪P# iS(εE$Q'⊂ ∃SEHECS,	SETZM @)e≠'.~(∪'	i~Aβ≥Q
→∞~(∪'	i~Aβ≥Qβ$
∀%')54A-
¬→⊃∂∨,~∀β'∃)5~A≥π
1H%niybmTX∧Sd
qu3λD⊃10)D⊂∧g)Rb"P#PFE∧iQj-&@⊂α@
!∀"@$!→T⎇Q(∃¬Ki3∩)j∀⊃∪¬E⊂3U
λα ]
λ	MOVEI D1∪⊂~R∧"04λLj>J⊗JαQ1∩$*R&∞(H%nJ-~R>J*αJ⊗ε$*I∞M∧b&@%IHR∧lYaPPLYzd,j
AE%L→X∀ph!→T⎇∀Y∀¬"eYjELHQ!∀l]hYR¬"JYe%L→X∀ph!Q#\4→IE~¬I
$⎇1rβ! ↓Gq4R)@$Y⊂"T$g$ZH i$g
aP"i∩dε5DERIN∃A EBIL5B ERINI6 ARIN4A ERIH
∩f↓'β%)=	αN
"0≤∪∀
4
$x 
d	∀⊂Sh{H⊂λ"∪#&)FB∧¬
;FAL@→&↓∪⊂_∀Ph*εJLr%IhM~.&Bbα6V:=$%Nl
f
∃∧r⊗⊗⊃¬"0~¬YiU,tt
5LL)yE~∧→hB¬≤~*0hP∀	%∃≥DλU∀Li⊗`hPα33jH(⊃
;4qs	1"Q4I→β$Z]αe*fh⊃P"⊗"T$g~`CE	MOT¬β∩A_XQλR4∀∪→' AY'∃∂→∂∞4∀∪⊃%1∩AX5'∂'%4⊂∀(Lb∩	α"b`≥≤Xx%M"β⊃h:u
⊃¬≠!"Q*)3M0g∧fgk∀dP),1
	AN@CAB R,(F)		;UNMUNGS THE SYMBOH HEADER, IF NECESSARY
	HLRZS R
	HRRZ R,(R)		;GEP ADDR OF VALUE CELL
α	CAIL R,BVCSG
	CAIL R,BVCSG+<NXVCSG+1>*SEGSIZ
	JRST .+2
↓JRST ERIHkλ4∀∪πβ%_A$Y	!+%
L~∀βπ¬∪_A$1!~Nd
NP4PJ*JN ↓9-HhP&*J≥!α⊗JLqV⊂4PJ"JJU→↓"IHH%nVtjV:≡~αR"∃¬2ε2V*α∞⊗2baα&→¬~R>J,!α&9∧b&NQ¬~Bε∞(h*⊗JLqV⊃hL
>
*rα→2⊗∀J9VhP&*J≥!α⊗JLr%TQ!PT-)→c,!→T⎇4Tλbe]8~%$|%ED∃hQ!∀∀eDλbde
)t=PQ!∀l⎇hT∧"e8~4<d1Q$-∀→fT∪P→*Tm∧TλBd-)→dK0β"B)YuQ2$λK
⊃¬⊃"B3
9λ⊃K
81s∪hq"B2
)∩(⊃EE4q1j96KlAQB3⊃λ$⊃⊗j81pV*E⊃pj:
⊃
+Q"B2J*uλ∀h~∪pL!QQ4R)i-NB)
TVTd	53Qj↓ ¬∧iRdh'⊂∪jg#hαD]`∃NMUNG TALUE CELLS (SEE ALIST)
	 JRST ERIN6A
	MOVEI F,BVCSG
	SUB F,EFTCS
	HRLI F,(F)
	HRRI F,BVCSG
	HRRZS (B)
	AOBJL∧AX8Zb~∀%')54A≠+≥≥ ~¬I∪⊂→ZP&6>4)α	2\*JJRpa2⊗J∃"0∩[≠QPPM8ZETjλZ%∃$aQ L∀JD∧αeY~%$pQ!∃≤-IyR∧-**58h!→T⎇∃9∀∧∩bYj44_Q(U∀Li⊗3PLYzd*∧5J45EH)∩D∩⊃↔5∀-:Iu∀*λ9D|∀(Z$,"	It≤
I→tu_Q!∀l⎇hYR∧~H
45EH)BD∩⊃Q Lx)$b∧%HU∀Li⊗0hP~IEB∧∃ESλh'8Tt)HR¬$λT∧LuHZ%∃-
D¬≥M:HThh)_dr∧~J2eXQ!∩u≥Z8U"¬5j4l
95BdLX~4]h↔:$-≥Iz$*∧→jD-∃*Z¬"∧Yh∀∀dT	T
≤:1PPJj:U≤-D2u≤Z93∩bI→T
≤6+PhP∃j5-≤ZD¬Zu8Hc
bJ&s¬h↔:$-≤ZD∧$hZ"¬<z(E_h!∃e≥-8ZB¬Zj8D3∩EJ#;¬QQ%hH↔8Ttα	xb∧Lid∧M¬1Q M∧→yd<→→`hPα2TJ:λ
⊂%⊃".tHZ∃0	'λ*#P!Pf""iβEαEεB)`i*∪a_
				;@)U%≤A∨→A≠βI⊗A¬∪Q&A&p∧¬≤
*1PT|hj4-"λ%RpH*8∃$|&↔ LhH4jλ∧p*IpMc
J∀p4EλJ#"A_3pRJ∧⊃K⊃*)3M0AQ@∧`gR P#⊗∀`j'aFE)`U'a≠]βEj*∀↑#a←⊗εE&∀)'cm∂↑W⊗XCE'c#∀bj⊂_βE↔$%Rd  SATGB⊃ SATO@∧n~∀4⊃!	→→→&t∪M)4~(∪'∪1	∪ A9
≠%¬→-8~(K	AAAba@$%\"⊗"⊗$)αBε<*M99ph(%Eβ↓A1⊃iλ%mα5∩> *	[∃≤,HebrpQ!∃≤-K$¬ H↔4α∧hD∧D-(Tu~∧	zr∧l→k∩∧hD¬ 9⊃4Q$⊃"@↓Gtt⊃(8R3Q∧
t⊃0f∀∀p⊃(⊗H∀tλXmH∀jλ0m(
:⊃0m∧
t⊃0fH(⊂tλXlc"AQTu0JJ∪α4jλ0r0)D∃P4I_0S⊃$λR3Q	→Qh⊂)hλ∃3H)3Q∩)Hh∀SjZ⊂3Q*1"C"A→QPs↓⊃".r	~u∪tI_p3λ	Itth¬U(⊃5HYU∃0)I⊗(⊃IJ4rβ!*t⊃0h)3Q∞A→3uQ)T∀t
:∀uB'⊗λλishλ∧	103J4⊃Ssd	4h⊂(H∀H∪hd∀uPd
∪h⊂HT⊂Su)hλ∃∪d	R3∧
p5Q*4⊃β"J:⊃0l'!3⊃⊂D
K⊗lFV-,¬E
∃
+Q,lλ	e⊃Ssd∧λ∪1(→Th∀jhh⊃Sit∃∪hλ((⊂SjYQλ∃	t⊂ssJH3U∀d	qH⊂(8h∪C!!2U3*λ(∀C
:⊃0m↓QB0p)→⊃(∀EF-b"'⊗wm$	+⊃Sitλλ∪(X3Thλ	3Qλish∃	t	3*
¬!"B$	TTu∧
t⊃0f1".sjI⊃4Ui~q+λ	~h∀⊃
ε,λ∩)ju∀U(:∩3sED∀shλ[∩5β!*t⊃0f'@2∀J+H∀C¬
J""'→Su⊃$
q3∪∧∀⊃PsiZ∪∀HλH4⊃3HJh∪sD
∩⊃(λh0uβ!!0p3)D∀K∪Jλ⊂ε&∧B]P*$⊂j⊂)∂P**∃L⊂≡P'∃fk f⊂aUQεB∧P!`Sf"P)'("&∩εA∧Pλ%))jλ)h"aMεA∧h∃id⊂#⊗(⊗*εB∧fgk⊃dP*,(R)
	LSHT,-SEGLOG
	SKIPL T,ST(T)		;NMK1 WILL WANT TYPE BITS IN T
	 TLNN T,$PDLNM		;SKIP IF PDD NUMBER
↓  JRSTSPEC5
↓HRR T,(FXP)
	LDB R,[251500,,(T	]	;BECKM@UTE ADDRECS OF FROB
	CAIG R,17
↓ JRST SPEC&
	TRC R,16000#-1
	ADD@∩AHXbQ $~∃'!∃εdt∪A+'⊃∀↓ Yβ¬%≥f∩m)≠!=%β%∪12Aπ→='
A)!
A¬∪9λA¬→=β⊗~∀%!+'⊂↓ Yα~(∪⊃%%hAαXQHR~∀∪A+'⊃∀↓ Y≥≠,b~∀∪5∨%~↓αXQ$$∩wπ→=¬¬$αα2>
∧z→α~∀z↓α↑M"!α:-9α:Vl∩⊗H4PJεε&pαI2∧KZ≡JVl∩2∀∀PIα6>4*5α¬bBA$∀PJNV	¬~A2I;↓-D%]~=αJ*j>B⊗rαR"∃∧∩&:⊃l∩2>∞Xh(&6⎇2⊗%α⊂¬BD
⊃↔5$DZ(T¬J	→dDL)~DLTt	∀u$Z*%-¬J1PPM	zα¬αH⊃PU≥λX3+P~	uα∧k
αe Q)∀4rλF∪αe1Q%≥∧X6CPM
Z4B∧k
αe Q!∀l⎇hY∩¬"H¬¬"HQ!∀≤→`¬"e
y∀lLjAPPJ	*%≥"0¬∧⎇∧λeEαJAPPH→*%≥"
y∀m≥λ;PhP_[∧B
%BE"⊃Q M∧z∧∧5E¬J@hUQ↔4,TD	∀4rλF∪h&⊗α(L)hE%∀~∧¬≥∧X6Be<→z5∧~JEB∧-λ9α¬∩H¬¬"HQ*5∧4H∪PL
)B¬∩E
BHh!~¬-≤∧
5αe!Q Ly(∩¬"J:∧,≠⊃Q hU:λT≠≠!_4LxT¬∩c⊗fββQ!∀U∃:D¬≥∧X;hP~J$
¬%F∪3βε∧2kλ⊃↔5∀B	xb¬∩	iu*∧λ~2∧pQ!∀$I∀¬∩c∃
αHH↔:5∧,8)∀t$→hr∧|hd¬∧$AQ LU*:B¬≥λX3⊂h!Q hPc\Z*%∧⎇∧λU∃∃	jR¬,(Bα¬,(D¬,∀F∀¬,∀J∧¬,∀Jy∀j¬X(C"¬Yh$LtD
Tt∀hFα¬,h)d#

Yd∀tF∀¬,t)hEα¬Yh%<LqQ hTZ*%∧⎇π!∃∧⎇∧λeEαHZ%∃∧_A⊂K]	zα¬∀ZJU∀rλ_E∩∧xhb∧5
↓PPLYzd*¬JED≠⊂⊃↔5∃,dλ∀db	xb¬$λT¬,uy→d"∧λ→d$dZ*0hP→Yu4,T
Bd-**¬≥ ⊃↔5≤
hT¬ h!~¬-≤	$∧5E¬JTu=
)phP→Yu4*
ED-∃*
5 H↔:$-≥Iz$*¬8~d,"
APPM
Z4B¬¬HU∃∃λ_@HK88∃4*λZ%∩¬(ZE-∀dλ∀%⊂Q'4,uJ+∩¬∧y→e"∧_d∧tz
Ye<LhEU¬∀zHT≥αλjTt≥I→tu~
9∧⎇,HD∧∀
λ*Tph(Z%∃∧jW M≤9~∧
¬JEE@*plB!↔u∪uλ→⊂ε,P∀'h⊂'Q#⊂ ∪PECPDL FOR ERRORS
UBD0:	 TLZATT$-D∩∩w∧zAαN∧*εB∩bαR=α∧bε∞∃¬~Bε∞L2&⊗⊃∧J1αR h(%↓¬~⊗RyPλ¬
∃
"!↔q4TJ	tλ∪*Zuλ∀hZ⊂πf@ - SEE UBDP~∃+¬⊂t∪πβ%_A)(0Q' R$∩w%M)∨%
↓)⊃
AM!	1∧∩eαJ-~R>JLr≥αZbV⊗LhP%α*∃~QαVt∩:↓HHIeαVu"&!↓E~A%αl
R∞"-→↓"R"H4(&∧zAαNαbH4(LB2Ji∧!2H4PJR2i¬⊃15DhP&∞εl:∃αIeRN
HhP%α*∃~QαV∀!L4(L~ε&≥¬⊃1"NαH4(%∧RJNQ¬*
⊃PhP&N.Mα9α⊂hP%↓:dzN∀$HI↓↓↓]≠?7↔⊗{∪eβ≤≠C↔←.!βS#*αNB⊗≥α∩1↓jα"ε2α	¬∧4PJ
:∩%∩εAα,∩⊃M∩,∩∩AH@∧	∀TVIT∀K
λE εE*P _]∧R))j∃a"εEβE*a"∀≥∧h*Td⊂#,∀⊗*∧DH⊂⊂∃c~szy2H7zz⊂~s⊂ ↔ITHOUT-INDERRU@TS
	HRRP∃∩↓(XAλ$~∀&≤
&)α bB↑ε|J2P$J↓↓↓n<JR"≡-!6&:αHU∃∃X
E~B
⊗v<π∂ε\8
,≥≠≡#!!(∩TJ:λ⊃0HJp3c!↓4∪t∧λT⊂
A (λ∧πtY<nMβy2P≤z0z2CEd)∀-&P)∀"∀DBP⊂⊂≥T2qpz\rP2i≤5y⊗⊂≥tv6⊂≥90x⊂≥44yP≥4vrFB∧e))U⊂*a"αDP⊂⊂∞aww:~w:rP~s⊂1g[:4w:YrεEεB*a"+Rg]∧h∃id⊂(-kdgUg!.DBP⊂⊂≥SpurP≤zy2P≥tz47]z⊗tg≥2y9:\:∪riλ3rz9H1pv6→rεE∧T'h⊂#⊗(∩*εB∧h*iR⊂#$()∧DPλ⊂≥kt]4⊂7v→⊂;0v≥p¬ to store
	MORSS (BP⊃ $∩∩@@w'β∨U≥∧AKβCC↔∂'→β'Q∧¬⊗rεLXg"ε≥F H!→%∃≥D
T∀Q!PPH*X$##!→∧e∃$λBbE T,(R)
	PUSHJ P,AUNBN0		;FOUND A FUNARG BINDING BLOCK
	POP FXP,T		; - USE SPECIAL ROQTINE TO UNBIND IT
	JRST UBD


UNBIND:	POP SP,T
	MOVEM TT,UNBND3	;HORRIBLE HACK TO SAVE AC TT. THINK ABOUT THIS SOME DAY
UNBND0:	TLZ T,-1	;AUNBIND ENTERS HERE

IFE D10,[
UNBND1:↓CAIN T,(SP)
	 JRST UNBND2
	POP SP,TT
	MOVSS TT
	BNDTRAP ,UNBNDP,TT, HLRZM TT,(TT)
	JRST UNBND1¬
]; END IFE D10,

IFN D10,[
	PUSH FLP,R		   ;Sav@∀A$AM=`AG←αkCπKO≠?9↓D≠π9∨ βWO∃∧2bA↓jiβGO,!βS=∧εε∂∨1Q HH⊃∀ααβ4λ⊗rε≡,w.n]nBπ&t
tL@u3PE⊃ B3)zβ"dP∀⊗(#dSβINT		   ;For @
←[aCISg←\0AMCGQ←eKH↓←khAα{⊂∩πMRεf⎇}hUYh$t.B(`dg∃⊗∀)h
D@	   ;End of looop?
∩@↓∃%'(↓+≥¬λIα~∀∪A∨ A'@Y)(~(∪≠∨-M&A)(4∀∪πβ%_	αIbBRQ$HI↓↓↓\KEβSFKMβSF)βOC,≠'π1∧∧6∂≡T
¬<Ly→e#xQ!∩α∧**5"¬Yh$t∀α"$∧λ∞`∧9<k∧
_8zd
=β"A→∪∀VIT∃∃β¬
∃
#!!2TTjD∃3PIh#"KWh⊃3HD∩1SDλ,↓QA"U)hSQ∀π!4∃4i∧⊃R∀¬Jα"(∧∧∞qR(z4Q(	Zαj⊂$Q⊂+dj∩'jb-IJTERRUPDS
∪⊃I%5∩APXQ)($~∀&≤
&)α ¬E¬<→y∀e ⊃∀ααβ8y∃$DzZBlLh¬⊃**U0λ*∀T⊂$ S ∧@→
↓'!π%β⊃2Hh %αU∩N@"λYd¬<→qP@!4∪t∧λT∧ ⊂,T	↓   ;RESTORE SP	β)∀~∀&DbJj5¬"Q1α%!$$∀∧αβ](X4

8T∧-∃)z"b¬y→Db¬J(∃α¬I	∃~¬I→T(h!→%∃≥D
Tt∀hB⊂HJ∧∧βL≤βsU	→β*bP∩c⊂!gS*$g*QbεEεB*g!+Re]∧h∃id⊂(-kdgUg!.DBP⊂⊂≥S`ebP∀ji"P∃dj$'Uj⊂
INTERRUPT'ER GEDS CALLED
	POP FXP,T
	PUSH FHP,TT		   +WIT@ OLD FALUE
	JRST UNBND1¬
;BIND BIND4 BIL@λjA
↓∪≥λPA¬∪≥⊂bA!∨A¬∀AπA∨!¬∀↓≠β↔-A≠β↔Yε`A≠¬↔%εBαα6ε.4~aα6ZZ
LhP4)Mβ72∧∀→hBb∧→hB∧l→8Rm∀→JT*L8YDb¬)zU$LhZ2rα↓Q#@7nh∀
Zr∩H
¬⊂R3HDλλ∃i~⊂λ∀k→0Ss∧	3H⊂%D∃P3
X(∩3Dλ4L#D∧β"Ng↔hλλ∧∧∃4q*4⊃sS∀⊂+λ
J∞hλ	Z4uλ
85Q(
A"Nng∀∩Tt∧
∃∪(→uPh∧
r5∩∧λ3H⊂*Is20d
v30Iyλ∪sD
∩⊃(
λ⊃λ

y∩0r∧	4h∀	z∀⊃1¬⊃"Nng∀λλλ∧λ3Qλ
I⊃(∃H→∃1(	→β⊂!↔λ)"`∀URNS ADDRESS OF NAW VALUE CELL IJ A∞
3+;     (LATTER CRMCC FOR BIL@1 ONLY).  USES GNLY A,B,TT.

BIL@λt∪M↔∪!≤↓)(Yα4∀∩A∃I'(A¬%_
⊃ThP&"2∃Qα¬1D	$4)α↓αb∞%αJ<4PJ"JJRα¬1α
H4)↓αα:>B∀x4(ε≤
&)α
bNV:∀zV*⊂hP%α*∃~Qα
Lr⊃DQ($LTFG M¬Z9α¬≥¬E∧
HQ!∀E∀IP∧
b
:αHh!_$t¬J(∃α¬8J∃¬-%JtL@pSQ¬H+λ∩
*TS ⊂⊂i_V∀⊂TFE∧T'h%⊂∀⊗εEεB!$g"
]∧fgU dP K+'$fαDXALLOW PURPGI TRAP TG WMRK JUST 
CBIND4:	JRST BIND4		;@→∪-
A
∨HA')E∪⊂~≥¬ 4(∀T∩&:⊃P&BV≤AαA2≤∩&:⊃ H%nN-!αVA∧2>Iα≤
21α$yα6ε]24(MαVN!¬↓2λ4PJBVNBαA2R h(&6⎇2⊗%α∩bFF:∀zV*⊂hP&*NααRQ2l
.ZhRB>B∀Q`⊂M	zα¬αH!PT≥	z∧∀SαB4	z⊂H∀¬J∪t⊂I!"C"IX2uPg∧h*iR⊂#$(**∧DNβSAVE RE@)U%≤Aβ⊃	$4R↓↓αN∧*≥¬)t∧L@U⊗P+↓ S0):Phλ≥αiedh∪⊂ V#⊃+!FEαe))jλ&`ek⊂YFE∧Ql!d⊂α,@FFTC
   XCTPRO
	HRRZM B,FFVC
   NOPRO
MAKVC1:∪⊃1%4A∧1Q R$∩w!∨%≥)$↓)≡A'e≠¬∨_↓⊃⊗ε$*Iα&~α> 2λ∧uλ_pc"J
4U∀H~λ∪0):β!P→,@∧X∪⊃I%~Aα0Q∧R~)≠β↔

0t∪'UA YHj`VB$∩w!∨@A!∂∪9)β$X↓%β)+I_	αε$"JεN~α6→ααh∀e,Tλ4,@⊃β"A~∪t∩DλT∧(⊗αDX IL∧AαX↓β		$↓_∞→αα;∪∩∧)It9h∩3DλA"C!	1Q(
λ1r3Hu⊗c"IX2qPf7@∧h*Td 
 P,CGNS1
α	SET@∨~αα⊗@%h8de≥↓Q LU*:B∧l→:dλβ"W!⊃,q3HD⊃qH	_Q(∀λ_p∧g#CE
;C #
_∞ 54∧T`(pπg)H'!gg∀P agSαS BGL¬≠β⊗αα∀t9ye_h!Q%≥0U∃	A5P4I→βj`∪ Lπ		¬¬→_Aπ=_
N⊗α*0hPβ"R(iH⊂R(yβ*f@,Xε~*≠
≤@pπ ∪:	EP⊃π A(@2L
≡∩
 h ⊂L*:α¬"β⊃UhdπF@&4⊂λ&⊗βλ4B¬EK∀<H*@hPα2TJ:α⊂ aSβH
&~):∩%\*0∀λ∪qD	1S@⊂⊂αIGNUM
∀~(K⊂~∞|rMhε¬*N!ααbP4)h4`9β)U∧U&-⊂ K⊗XDFB⊂⊂⊂!⊂eh ∩O
ACOL¬&t∪M↔∪!≤αα~
LHI`≥⊂∧$iH$iP H!`∂NS L@∪↔∀A1π∨9&~∧∪A+'↓∀↓ Yβ∂∩∩`.∃*QαVα8U~∧βsS∀⊂0pjYαjf U'i⊂ CE	MOT¬'&A∧∩∩%]~P≤
∧	∧@∃Q4d	qH⊂%D∃∩⊃)@∧¬∀@A'!
!%≡A%_
Rε≥@4(_[∧9λ⊂ ⊗⊂ εF@&$∩wπ∨9&A/⊃=→∃ααyu∀λ⊃TI@d¬ A
λ∧@@Aa∞@%λ∧SaQ@∧bl⊂βH A1
~LhQ↓↓αtzBJ<hP&Bz	"¬αββ"AQR1SDλR1sJYαV-FBαλ
)α↓α
ε]αJ<4T∩≡ 4X→3@! ∧D]S`ebP⊂P('iRh∧IVE BIGNUH
@QMβ⊂⊗∃∧
Mα
t~0≤@Tj#!!'!gSαS:	SKIPN↓
~λKZ∀LyjTj∧9ye≤-!Q M¬X∧r	$∀⊂(xc"B([⊂r⊂⊂T∧@FF@∧⊂∀$∧α¬D8¬∀
)c"B([⊂r⊂⊂T∧FFB
   L¬∨!∀x4(~	u∧Rλ∧↓QTεDDNβEND↓_∞→αL20∩∧)_te,QQ c]9≠∧l4
4MDβ2d$¬U1∃εD∀r6λ~⊂εP)Rl j1 PFBFAP PNBBA1 PNBFMK PNBFM6 PPNATM PPNAT2 @!A→β(h↓!!:
!P∩¬λ∧∪H~α→P(∀' j
CE
;8εvAa!→>$*~∧~(u,@13U∧	3H⊂$¬∃r5	∧⊂P4hW,,EDλSSj	p∧g*∂h⊂	,
λ;;;AJD REP	+∀qα¬α≤Jb
& αP≤](@λ	→β⊂ ∀T,∧@Aπ1≠¬¬I&Aβ→0Aβπ&8~∀4U~&bX→3PLYzd,Jλ!DLS¬2∪αpQ!∀U≥∧
Be≥λX4∧LhAP@J∧εα∧∩Jh$
≤QQ Jαε∧∧∩eeid⎇∧y→e h!~4-%)T¬≤M	Y3⊂h!→T⎇4Tλ∃∪
K6C#βdεαbe9≠∧l[+QPPL
*$`9(∀C
96∪2f⊃ +ThX(⊂∀EJ∀Pc!!4∃4i	H∀

R3Uλ⊃".ph→⊃λ∀
)3U⊂$
∪h⊃+
⊂ε'b⊃aP*$⊃P i#Ufbg*βE	MOVA DT,SIXMK2
	JRSTUNBIND
α
SIXMK1:∪π¬∪∂
A∧Xbh`$p∞RαM→αNεM→α∞>u2⊗JQ∧b6@<Z λλ_4q(
Ih∃4
λ4C"A~∀Phλ∃
α'acg+⊃i*⊂!R i⊂*∪β SIX@IT
	T@→≥∀Aβ$b0j`≥Aβ↓@4%jT%#G!∩∧LJλ"∧
H~#λK9X∃L∀T
4
∀T	∃"b
Ydd-:4∧e(X∀%J	λ∃4(⊂r+↓ B4	Z⊂H∀¬A C"G↔nh∃λ→q(∀i≠⊂R5∧	3H∃
Eλ⊂Q*J4S@λ→H⊂5	@ddaP∀lfa'S⊂ g A.¬
;8εvA5¬β		∃λA¬→¬→↔&A
≠ ⊗: aα
V αRJεdJ2:	yd-~λIt`$βj↔εB≥]]@⊂P-"i∪β WORD BECMHε↓)⊃
A¬)∨
@λTD\@↓'β-LA\~(~∃'∪aβ)5PJN⊗R|iα2Bt04(εlzR*λ5E∧t*↓PPLYze≤J
@¬λ4pr)∀↔
W¬⊃"B3)zQ3(
E∀∪PJXC"B*85⊗S$
∪PU(el#"J96⊂5ε↔@∧e*Sh"P*∃⊗)$g∃ i'∧Ni$g*⊃i'⊂)Pi"`∪ F
α	SETZ T,
α	LSHC T,6¬
	ADDI T,40		;CONT@%(↓'∪!¬%(A)≡↓β'π∪$~∀&L"B	α ¬D1 ∧]iU$ae@ @π⊃β%¬β ∩⊗α*2∧Ld
∧t∃XaP@L**5"¬9≠∧
β⊃Q hSαh
MH P!j∀$g#@ IS IN PFBUF, @)∃%≠∪≥¬)βλA	2AαA9+⊃1ph!mmX∧∧d|8~D*∧α5∀dλ3Q⊗λ g" @πβ→_↓%∪≥)∃%≤A	<A≠β↔∀Aβ≤A¬)∨
\4⊂∩*∧r

ε!P&6>4)αQ2∧rα@4GUMENT.~∀4∃!:∀26-hMαVN↓¬↓2∧∀PJBVN@αA2∞∧zBε(hP&N⊗%R5αBt∩V_∀PJ6.Z*αQ2n∧r
V→bbB:
,1-FThP&
2"αQ2Bt∩V→.eα0∀∃XeSλh!→T⎇Q(⊂*&+∀∪H
β"B)Yβk"dH i→ K&('!∃c∃!,U)kbεB∧d))∪βI B1!≥¬
4h∩α]M
A¬⊃0∃¬(1P@L**5"¬λ∧R)@* FEβE('!⊃&[≥∧R*f`&⊃P i2A(C@OPJ↓;GIP
AU A&2α2=αlzJ*λ∧SiYαP$gλ(#!*Q∧E∧dQ(!⊂ K i_DB]bf)QP)`∀I@π⊗Aπ!β%βπQ$A∪8~∀&≤z*¬α
⊃J¬2≥α>BλhP4(Q!P@HαC"I_SH⊃ε⊗⊗c!πnn`λ→βc ⊗ERT APP@≤A%_	αR αR=αq↓
ε$z5	1∧I0∀+H⊂)D∀k1+
∀H∪hd⊂4∀
)t⊂R(~α"P#∪βRM.A'β-∃&A\4⊂λ (αT∀	@ j&@:
IFE SAIL,[
	SKAPN CE@+@~∀%∧RJNQ¬αB:ε!⊂4(→	E∃Rλ¬⊗∃*εE∧PβAIG↓(Xb`$∩w!∧q≡Mααy∃$Bλ∧∀I@e"ajλ!"`∀WEEN 1 ANDb`~∀$A∃%'PA!!≥¬(d$KYα6Vα:B∧∀TλUE¬(Z5≤,D	∀`$⊃⊃0dλStS!Q@∧fgUα@
A ¬E@:α*⊗⊗∀'!*c↔F@
	SEPZM↓!≥¬+_Vb$KZ0∀11⊂∃$ 	S @¬⊗∞
*N∃α|1α∞X¬(λ*cFEαb"aaSh¬ @(α`$%NαJ%J∧9ye (αi*$Sα@∞A¬α0∩¬It∧@5(∀jJR3QaQ@∧P%∀)j⊂(∀' j2		3ON @
β∪1+%
X↓∃+'λααJ-hZ%"¬It∧$0h⊃I@i&`jβE	JRSP @N@@
β($∩w>p∧¬≥88U≥~βλ⊂iYβ)P*T⊂ j'SP#!'SP)`∀RIH
∞~):∩`.,r⊃α≡2α&~∃¬~ε&0hRBBh~C∪Pα2U)Z⊃H∃
E	JdaQ@∧P&Si"dP⊂T∧Q.
λ∧∩A∧zB)αα¬@hPα4∃*9⊂π⊂(_@
	PUSH↓
1 YQ(∩(M"2iααJBbk⊃Q M¬X∧r	$∀∀
	P5¬↓⊃,¬agSαVE@%PA!%∨≥%β≠≠∃$⊂∀(Mα0≥αλk¬αeJAP@!2∪∀K)P ∀T
∪!U'⊃)¬↓2BBt
QP$KZ≤@qP"T*⊂ )∪βJECT
∪∃I' A↓=!β∀~(~∃!∧rε@#G!P@)1Q(
823FA∧aPdg⊂*∃⊗⊂
!		;77\h
@;tπSr∧βs2*J⊃1⊂∩ f#⊂∪βF @!A_∩(JαN.&∧	α¬2]	0∃@ ∧D]T ¬PLACE IT WATH *~∀$@A¬'@A(@25Bε <h∧b!↔qu∩λZUr4hT∃0	bH P#$V'*fFB∧fgk⊃P!⊗⊗LT(∀FB∧h"iR%⊂ ⊂,AH∂≥_h ⊂LYzd,@(⊂#¬V*∀
!Q@4∪j	H⊂λ⊗βE(
		8π≥λαα0≤2	_d*¬8→∀`HαR1I@⊂)`dS⊗-FEαa`dgλ**⊗⊗LD@	;750∞nn\@rlA=≠∪))∃λA↓β1A>2αBBaQ J∧**5"¬λ	d
#⊃⊃∪@:Q0λ&⊂abP$U⊂+dj∩⊂⊃εEαe*fh⊃P**,PP@≥βPr∩αv|A≠∪∂!(Aβ&↓+→_↓)%βP@`AβLA∨6M"R,AQ%¬∧βP5ε@≥j&∪α@
A%!1]]β↓A@$KZ2ε~α@λ	*4q∩(k(⊂
$⊃P)dl⊂αIT CHARACT@%&4⊂∩A∃I' ⊃α¬α0∀
F1⊂K]yλT`$⊃∪sHUα⊂!i⊃`j"P⊂dε ATLπ⊂∃αr⊃α∞|rMαyjD`4⊂ε$iU∧¬∀∪1'⊂A%!1XQ!∀U∃:@λ

⊂π j
αλ
*hH%n⊗t!α>→∧J~9αα8∀L@β"C!)`R PP@≥βPrtβ'-∪!αA∧Y7"]t~∃!↓9β ⊃Mβ!P@&L	"*
4r∩D
	∀r+λ5∪#!→_∩∧T*id%λ(∩('⊂ εAT
λ¬!!≥¬(j`(Lj6@4Tλ"bk∃
αHh!~¬-≤	$¬αd9ye_h!→T⎇Q3 ⊂⊂T⊂
!λP)~∀%!∨!∀↓ X~∃t∩∩`.,r⊃α≡2α&~9∧!E@4P1n∞
"BVM∧~εBB≠	α∞ε$∩εIα≥"εε2bαR"Jb1αRE∩6@;T
DE∀zv∩¬$
)u+H⊂
$∀',*∃$)'kMP*$)∪hπ3 THRP⊃∪PA)↓%M!εA$BJ∞ε⊂∧¬$E)zs"∧X*Td∧βh⊃**Lλ⊃i@a)%@∩dπGBND E@OPJ~∀4⊃'+¬Q)_∪π¬)πX↓)⊃%∨\XA∃∩N⊗Qb↓0∃≤X@∧λ3Q⊂⊂αREAK ROUTIH
_h  (αNsIZS03∧λp5⊂i↓ ¬!`U(*`∪:	PUCH P →∧$∩wπ∨5!∪→⊂Aπ>$)α~>⊂∧αT≤~H4B∧YjD-∃4	∧-∀QQ LLzhTJ∧∃E∧
H⊃↔2∧≤yZ∧e∩λ¬∃*)ThλH`j!dλ⊂*'Pλ∃!`j⊂βH"
	MOVEI T,(A)¬
	LS@ T,-SEGLOG
	SKIPGE ST(T!		9SEE IF DAG GR TAGLIST
	  HBLI A,CATS@!
9πβ)1∪&~∃
β)!≠	`⊂LYzd,jλ∃D85∩1↓⊃.p	bU⊂*h⊂⊂P!`j⊂βH FRAME
	JSP T,ERSTP
	MKVEM P$CATRTN
λ	JRST (DT)
α
9CATCH-BARRIE@$4∃πβ)	β$d∪A+'A@Y∧α∩mβ	$AQ~A*,jAαRzαV"⊗pαR"J⎇9α&M∧"6 4QQ LE)I∩∧
H8∃%≥λ;D85∪∩*;⊂p5λ`a⊂≥Q& c@ AS CATC@⊂[	β%%∪∃$∩∧∪5≠ ~⊗h∧∧
@⊂p5	_α".jI⊂∧iP∩iP ∀HE CAT@π⊂A∪⊂~∀&U~AαQd*JNRH%nN-"VAαλ∧∧`(5h⊂h~⊂r⊂⊃) fbCE	MOT¬⊗5¬↓2∞ε%∩R8Q!∀U∃8@λ¬
∃
#!↓αA≥aPh!d S&εE≥H*h'gλ g*)⊗]⊂ ∀T HAS ADR-DA∨A
β)π⊃¬→_A
U≤XA(↓⊃β&A¬	$Aβ→)$A=)⊃$αα~V:_h"∞R≤
21hMαVN!¬↓2P4PJε.M¬"P$$KZB>&u!αR=∧2&JN ∧∧d|8~DL\βH∪hd⊂p5λd f&λ#*gεB∧d)&∩P**⊗⊂`j)h⊂n!`j⊂f&.!Pj!gfH≥c& QP iP⊂P!gfT$f"bλ!`j!R f&εB∧fgk⊃fP"*!`j$Q∧D]j∩$iP$TP*$"H!`j!R⊂$bεB∧e)hλ*⊗"i∀j(∧DNβSEDUP A NES CATCH FRAME
	MOVEM @,AATRTL∧∩(LRJNQαiE"R H4(Q'4¬∀X→5-αλ⊂∧85⊂rλ→⊂εεE∃$) f∪≥∧ibU-&P∀∀∀@		;TURN↓∪⊂~Rzα¬αiz$lDλ4
∧9↓PPL**5"¬I
$ml""'h∧HEN BREAK U@ ↓→∪↔
↓αA:⎇∩6ε1¬""J>8h($*I¬∀⎇vW M≤9~∧*∧EJTM∃Ia⊂K\_d∧dz
Z4-∩	→e$-**U¬"λj$lT
5$98T"`Q!∩∧≤→_r∧"E
E"H⊃↔2∧⎇$	∀2∧~D∧M~λ(Td⎇t
DD(⊂p*Hrλ⊃J(31+↓Q@(λ	*Tu
I∀Suf1 .h
I⊃3H	*4uλλ[⊂5λ
I⊃(⊂h~⊂rλλjP31!Q@2Tj∧∃∃β
Y0TRa⊃,su	λαi+dTbP!)⊃`eP'Uj⊂'cλ* "P∩dεTERRUPT
THBOU12	SKIPNTT$CATRTN		;SKIP AF AATCH FRAME BELMP∞AL~∀%∧RJNQ¬""J>; 4(→Yu *p∧P*!`j*UhεE∧U" ∞E T,(DT)	∩wU→/∪≥⊂[!%∨Qπ(A→%β≠
|~∀%∧RJNQ¬""J:E $%Nβ_U~Bλ94Mα	~B∧≤yZ∧d
HYEHhαB2JY4⊃(λ%∃∩∀IZβZFE∃$)'kMα:↓SKIPF T,(TT$∩∩`-D~εB∞@∧∧4|t	dLBα(∂$¬⊂p5λd⊂#'ST@
	 JRST T@BOTε`∀⊃↔4
H9α∧LD	T
∧9λU~¬I
$mh∩1↓Q@∧j&∪ ¬ D1∞εR≥α∧$↔:5∧0r0)D∀∀ShbiidS π NEEDED?
∩A)%'(AQ⊃%'!∩∩wL*M1α$yαN≤hP&∞εLqα	1E!$$¬\~εR∞Bα&⊃αl
R∞"-→|4(Jα*JN αR"J⎇9T$%]J⊗L4U""J:E!`&6⎇2∃αR"aq62-↓E-ErYr∞ε%∩R96-∩JR9p¬¬%"⊃↔4<zλ(∀≤Z	yd*∧8~D9β"B)*34∪D
∃∃	
SumA⊃,¬c S&⊂"$∀'jcdλ$c⊂'∪P 
ORE
THROW7:	EXCH A,B
	%@+≥(A≠Ldr
∀%1π⊂↓αQ∧~(∪∃%'PA)⊃%=(
D∀Ph*R"∀zP≠≠!~¬-≤	$∧5E¬JTu=λ∧Sa↔u3Ui→β"⊂(∀'j"aU⊂!d"PβKEB
λ	MOVE P,TT	∃)!%1∪(h∪'	i~A!β9∪π ~(∪∪∨-M∩AλX5→β b,bQ R4⊂∪⊃%I∩AλY∃%%)≤4⊂∪¬→PAλ@2-∩JR9\b⊗AEhε⊂hPα33j@ ¬ C,@πβ)∪⊂∩∩`.<*Qα∞-∩Jε: α≤
H9α∧LAQ M≥X ¬αdXλ3λhαB4	zλ⊂λk∀β"A~⊃tλ
¬⊃S∀↓Q@∧h'T⊂(⊗*∃ε@
	POP P,PA3
	PUCHJ P,UB@λ`∩$p∞J⊗≥"6J∃∧~6 4I~DL\βThλ→Qλ∀
)pq1(AαA∧j∪''⊂!K!`j S&∧D]PP!`j⊂βHALL?
	 POPJ P,		;NOPE, RE@)U%≤A	!%∨/≤ααP∀JXPhPα16λ→λ⊂#λ∧D]j⊂cP iH#$i)U⊂ i#K⊂+ fλ iP)Qa`∂ND
↓TLL@
Aε1∞εR≤z4$¬\~0≤@4∩3λX∂c"A∀⊂TTjDλ⊂j!⊃,pbTT⊂!*S⊂!gfT$f"bλ!cb"CE	CALLF 2,(C)		;ELSE CALL THE USER'S FULCTIOLλ
∧∪A≠!)¬↓0$∧KZJεR-∩0∩∧hZr¬4→D∧L2λ¬∩λT⊂p5λd f&λ!*g RATURLS

TH@%M!εt∪Q→≥
APYπβ)¬→_∩∩m∞εR≤Bε"⊃xh %αU∩N@"λI¬∀⎇vQ⊂K]_Z2b¬xT∧D
hT∧4⎇YhB∧
λyt`8λ⊃TH→αbP*∪β S@)= Aβ(4⊂λ&Rdr∃αQd~εBVαzHK8¬3JY3Qβ*
Su⊃(h∨FEαP!))U⊂*$)∪αXT		8π3ε0A∪∂≥=%∃ααI∧*∧h∧P)X εE∧U& ∞E T,CAT@πβ∧∩$p∞∞ε$~!6

∩J&⊗α#phPα(∩J*uλ∃	
Pp0AQ@5∪	IH⊃⊗⊂βATLIS		;A LIST OF TAGS >4⊂∩A→∃%$A]~&b
M"rNB,~&ε1∧~εB∞@α~Jεl)1α
-!α:=¬2ε"_@λ
K4⊃(λ$j)P⊃l 	ST!\]
	PU@' A @2λh &BαZ4B¬¬H HK8∧p*hαP'"Qb"b ACS
	IOVEI A,(@∧R$KZ≤
H9α¬$_qP@!33uHY(⊂@⊗
*⊂DDNβH	&≥!α>→¬"ε≡LhP&BVα9∧R¬¬IT,@4,"!↔pr⊃(eP#'T⊂ 
EM@¬⊗J≤B&A↓D"6⊗M∧r6@"λHU≥∀Sv$
∃
#!↓33uHT∃⊂!⊃,p	`U ¬ @)!
A%M+⊂∩R_h &B⎇↓αA∩⊂h &B⎇↓αA∩λh &*,jB*λ@
I∀SV
A".u*
p4Q∧
⊃h∪H[∃λ⊂h~⊂r⊂⊃) fbCE	JRSP @)!%∨.j$∩w→M
A
∨U→Aα↓≠β)π XA'≡↓	≡A	!
AβπQ+β_AQ⊃%∨.4∀~¬)!%πβ∧h∪!+π A Yα4∀∪!+M⊂A Yλ∩∩w≤
Z¬αt*⊗∩⊗ αε∞LhP&6>4*%α¬bB↓$⊃↔4
H9α¬$_qPPLYzd,Jλ%BE"⊃⊃∪L@∩4u∧	qH∃λ_tc"A~∃0r	$∀∪(Y4,"!↔pr⊃(eP#'T⊂&bfP i)d∩h⊂∀"∪biP'∪h⊂""Th)'lH**∀FB∧fgk⊃P*⊗ BD]`∪AVA DHE RESUHTS
	POP P,B
λ	POP P$A
	JUMPA D1)⊃%∨\h$↔84
$9↓T∧
*)∀-∩D	dmλ∩3D	∩4u∧	qH∃λ_tkλλZTStAQ@∧e)∀h⊂"$∀'kZDB]bf)QP#'jS ∧ AMATCH, SO DO @)!
AβπQ+β_AQ⊃%∨.4∀⊂∀
$BJ>]!P&*Vmα9α	e""J>;8$%@9ir∧≤~H4B∧h∧P)X(#$λr5Q$
1uλλZStC!↓2TTjD∪∀t
(5α"'dc⊂'∪P*$)∪βP∞A	¬∞PA	!%∨.AQ~A)∨@A→
∃_~(hP&*J≥!αR"∀
20$KZ∞ <X	∀dD
$,@3uP)D⊃qHλ∀⊂p5λd f&βE	JRST DHROW1		;COMPILED THROTπ&Aπ=≠
A⊃∃%
~∃∃%+≥	<pλ&N\JB9α-∩JR8HIf∞yZ∧LdX@∧-∃%D∧TD	dm∀X→B∧-**4-λ⊃6	~α⊂!gSbP$"T"BE∧H%))jλ&)`)⊃h∧		;RETURL TO TOPLET¬⊗0hR⊗JIβP4*&4qαVN,b⊗NM`JN⊗RTiαRf⎇~\4(LRV -	`∧
@⊃0	*Sα0		;EH	'
0A¬%¬⊗A+ααε 2λZ%∃≤XAP@M99∃∧(⊂↔∀)bbεB∧P ∪KIPF VERRSET		;ERRSET BEING BROKEN BY AN↓%%∨H~∀%αα*JN ∧∧-∃YbhPα4∃*9λ⊂λ⊃ B3)Zβ"dP⊃⊗_X_D@	;ERRSET USER IN@)∃%%+¬ 4(~
U≤DαH∀¬J23U↓Q@4∪j∧∀⊂!Q@∧e)∀h⊂"i∃g_εEβEieRh P*∃⊗!`j∀*'∧DNβP@⊃∨=2XA
_∞ -	→D,"λ9t$(⊂siX4h∩λZQ(∃iλαg⊂ H∧@
GO@¬%⊗t$A≠∨-∀A)(Y∃%%)≤$∩w∂≡↓_∞Iαα(U%-)`∧`8pq4J4∃r5		K DOOP SERROUNDED BY A CATC@ AN@λAβ8~∀`-β32∧
**4-αβHλλZTStJ4⊂p5*8(⊃∩λT⊂ε'gT⊂*'P⊂ ¬ @%∀[≥)∃%βλ\4∀vvv↓
J≡,qαJ⊗αJU∀u4
tD3H∃	λαP&'Sh⊂!'Uj 	NE PEBFLπ%≠&↓α~∧vlp
αRE∩0≥h⊃∪d
⊂⊃(
H1h⊂J(α`e@.
.CEE BREAK
.SEE $@REAK
~∃	%π≤h∪≠∨-∃∩AαYE↓%β,∩∩`.≤
R∞↓∧J⊃↓u∧∩J,→1P@L*:α¬%EH4
¬λ6⊂HK8∧q*D∃0λλ`j!dλ!) fQFA∧h∃i`⊂("εE∧T*id P, ≤∩$p∞J⊗αJU∀rλ	tL@Uλ⊃I@i⊂"i∀'iεEαe)`⊂∃⊗"`∩STP		;SET UP EBRSET FRAME
	SETOH
AI%'.~(∪∪∨-∃~A Y∃%%)≤4⊂∪∃%M(A[1%'	@ZbQ$∩wπβ1_A%β9	∨5¬∩>@-I→d(hαC"G]]P!∀ ¬AK↓→∨∨ ↓+'λ↓
e↓T∩J,→1PP@ PTIJ.B*
4r
¬⊃S∀↓Q@∧h*Td⊂(⊗⊃,(εEαh*`∪H P,SP
∪!U'⊃)¬↓2RHZd`⊃↔4-P3∃(~⊃(⊃I@i&P)⊃`bεEαfgk"SP V+α		;STICKT¬β→+∀A∪≤@(~∀&¬*N"$
αe$J
$L@Uα"'h)$g∃⊂+ f∃b@
	HRRZ TT _Zβ⊃"A⊃Q LE*+"∧αβ _J(⊂	
	HRRZ R,(P)
∀∪A≠!%¬↓1L4PJBVNDQαAJλDd≤α∩b!↔pr⊃(eP ⊂DL @→Y⊂∩LhP&*J≥!αR∩$*JBJHH%nR-∩BJ%∧J→αε¬αJ>Bα)∀
⊃#"AQPTS
π@4∃*9λ⊂λ⊗⊂αRLP		; ∀T(TTA¬¬'∪εA	%⊗εX∧∧d|βtλ¬%JJJAQ@∧ieRh"P K!&#∧B]`	F USEB↓' ⊗Bα	DL,Dλ∩∧∃(X∀Z∧β∪sj∧⊃StIUβ"B$	TTu∧λαk fαDX ET¬β→+¬)∃αM!↓"J-"VJ:α4¬$zλ*$eαα#"A~∃0	d∩⊂(⊗*∪)"`bαDXOTH@%/%'
A∀*ε⊃αλ∧∧4⎇)QP@J	*%≥λBfA ¬∧Pλ)b`∀Z AR10∩∩`.|qα,xeB∧dβst∧λP0rdλ1P
"T⊂*"i∀)$g#CE	  PUSHJ P →)∃% b~(∩@A∃I' ⊃↓p¬S HαB4i94⊃(
@ ∧@∨→1% ∩∩m∪A$B∃α~⎇∩5α~4∧-
λ¬∪d
⊂∧"FBα	 CAME A1(
$βs∪
*α".d	Ss@⊗SαIL VAH	+
↓_∞→ααI∧*¬h~$L)HR↓]¬AP@!(λ∩J*uλ⊂J)∀λ
∧B]P ∀HEHA$Bε@"	XT@Th∀HZα*`∩N NIL
λ∧∪≠∨Y∩Aααb0∀LAQ$*S∀G∧fgk⊃dP!,QBREAK
∀∪)%'(AQ⊃%∨.βλ$%@8Z484⊃(λjSs ⊂⊂αRGEN L@∨∨@~∀4T∩J2Aα@∞A→⊂ε)-λ!⊗∀ JD@	;λR@)+I_	↓r4z0≠r∀	T,h∧h
(αj*i∪α THE
∪π¬∪
A∧αbFJ⊗αJU∀pα".d
P3∃(T⊂πc⊂⊃'gFEαP 
RST BRLP1∩∩m_∞@$α⊃4J@dibP⊃hεAL AH
λAA%∪≥(ααR"∃∧20≥∀QQ LU:∧¬"bX8∀%⊂β"PJ)∀λnA~∃0r	$∀⊃*@ fεEαe))jλ!)&(εEβ≥S ∪TLπ%
@9' ∩≡⊃↓↓:NαIu∪
¬j5$⎇& α`*u∪tFD	P	j∪βR4

0⊗@Xπ0LU8∧¬"bβPu	@i"D]Uibb @¬2Aπ=≠!&d*⊃α∞|"∀4'33@4⊂πg @πβ→→%_
:¬j5$⎇(T¬,*	ZU≥λ∩⊂*HαP%*Th∧ COMP@→QλAβ8@E∪≥Q%!∀*Rε⊃⊂h!mmX∧∧
∃(≠∩¬∀XhU∀h8R∧|d
4l@1(∩i→β"⊗⊂⊂αY @!U'⊃)<J0∀h∩3JIh⊂
$⊃P i)⊂lP$"Pb"`∩
λ∧vv@Xαε 4DλtlLhpλ
Ih∪sHT⊂πc⊂∃$"P'⊃$f`_↓%∨+$J0∀4k@⊂λ* λIS LEAVES @)!
A'βH~∀`-β0∞d	qH∃	λαP i∀ h	 REFE@%∃_
∞⊗ ∧∧L@H∪∩*84Kλλ→β"⊂*∩ ¬ IND@ !¬:0≥∀D	∀`$∀KC!≥]P≠↓αAπ∨9)β∪≥LA)"*αP∀JXR¬$βh∀jItQ(	→β*'P∃$"P T) lWβE
.SP	∂%∀pλ&N\JB9α ¬DdM8~ hPα(∩J*uλJ:⊂πf-αDXERROR IF @≥≡↓β%%βdA%
∃%⊗:≤*⊃αH~D,E⊃Q LDβ∪λλE⊂4p*%⊃
#!∧j&'∪α D,AS(
'⊂$∩w/βLA∪(A¬_A&[∃1!%M'∪∨≤ααεJJ
I|4(Jα*JN ∧α`*u∪tF!αA↔)U'i_≥αdgk"RP**,(R)		8π3αaαNR⎇∩∃α¬∧Bε $eZt`:Qλ∀*X3P
$U,@
	JUM@L R,.STOR1
λ	HBLM A,@TTSAR(@λ@$hP&*J≥!↓"QHh ⊂@ ¬↔)U'i_Mαd))&H V *∃)`i(D)~∀%∃%'λα↓"Q⊃Q hRh∧u	@i→≥∧U& ∞N↓λYβ&9
0@.
→0∀Sα.j9p∧h⊂∩c⊂#$V'*f@ Lπ$A
1_∞ 5YQP@)1S@⊂⊃!#& QUa`_FLAG, JRS@(α↓0∃≥Iz# @ ¬↔"S)bDPαVALUE
∀∪5≠ ~⊗Jα→1λ@
!Q@∧j&∪αN D1β&@:5@4(∀	%≥αλ@λi⊃QL+↓ .qhZα⊂#&∪dεUM↓# ⊗εu"&@%∃D¬ 95∩⊂∀e`h⊂∀ j*i∪αλ
(J↓α*NααQ2~β	e#λα".i@i⊂&`Va"P#Qh⊂#$V'*f@ QPβ≥Q∪ ∩dhP&⊗@λ9α¬%EJ hPα33j@ ¬M R,@TTSAR(D$∩w'$zJ*λ∧5(→U∩5∀⊂∧g*∪β ARRAY¬
	JRSTQ→$hP4*&4qαα
4bε≥∞≥B~2ε8b`_h%j5$⎇&G M$β∪SDλλε iK ∧B+AS(
π@I`≥≤αr4∧	1H⊃	Z0S⊃$	tH⊂iYαh&"V∧@
IFL∧A	1→→β∞X↓∃%' ∧α`*u∪tF@∧¬∀]∃→'
∩X
Zεe*∀4!→TmQ2(λeλ⊃∀CE"!$ CX$	TL@≥≤αα⊃2ε~r∩λQ(D$α⊂!l	∧P%)T⊂*⊗!V'+⊂⊃X		0↔∂∃(Aπ∨5!→@∧¬
03U	~α,V⊂∃βITH↓'↔β ↓%⊗R-∩0⊂@ ¬"!	∧P⊂%∀h⊂",DBN@,D∩∩`.⎇⊃α6εL∩∃α≡-!α$βu0IHαP ⊃UAH
)∪Q2~*$⊃∀&*≥↓αQH;∧`*L#"A→3uQ$
λε&$T`iεEαbhλCH TT,R
∪≠=(
,T
"d¬JJ4
∩λA⊂K]8¬∪j(αP ⊃UAH
)∪Q2A&u"0~∧~*$
Hβ"B(_⊃∩(
J	#!↓33uHYαP",@TTSAR(T)
λ	JRST  F)
P~∩$p∞⊗: ∧∧`8H∩1I@⊂"!#∪ cUaV#& cCE
IFN DXFLAG104)u~R>I!P&BIib∧αβ⊂4eH⊗α"'~pr4∧	1H⊃
Z⊃⊃6↓Q@∧P↔∃ f*bBD@]dQ⊂#'jλ*  j⊂*$"Sα EBRLπ$@QU→↔:⎇:0∩∧~*$
Jλ¬⊗*λ*#"A~∃0r∧
λε#εB∧h"iR⊂#$()αE∧R)h⊂*",'+FA∧fShεE T,LISAR	
	EXC@ TT, FXP)~∃-α∪≠∨Y⊂∃α⊂¬D¬%J8∃∩EE⊃∪@:u∪tHT∀50)j∩5⊗$	3P
'H i) VFA%`B`b"$H**⊗_CE%`DSdπVEM B,@TTSAR!(R4TZ∧&ε$"%αR ¬CλhαRr)9α1∪)Zβ"f@ R,@DTSAR(T)
∃↔%↔⊂∪β⊃	∩A%!1HQ!∃∧⎇∧λeEαβ⊂∃
Jp4B
E εE∧Pb"$P∃*⊗_FB∧fgk⊃dP"ε⊂**)`T∀*∀FB∧h'h∩⊂(⊗εB,@D]QdεD OF AFN DXFLAG
;.CET .CET1 FWLACK FWNAC1 LWNACK ERSTP LERSTP EBUL0 ERR1A ERR1 EPC1

; 6l∪∃' ↓(X]'∃(∩wMλA¬dAπ∨≠A∪→λ↓π∨	
4∀vvv↓β)∂~ααR=α≤*Qα&p∧∧
∪∃D∧tD
deXT¬$z
8U"¬It∧LRλ∃`hS572¬$λT¬$JXR∧mZ:B∧tzD∧((⊂ 
λ⊂ε⊂(U`g"$U,WεEβE↔)bU≥bl⊂d⊂ F⊂i_FE)bjλN∧h*iR⊂(⊗ CE	PUSHB P,BIND		;BIL¬A)¬↔&AM3≠¬∨0A∪≤A∧XA-β1+
A∪8Aβ$b4∀∪!∨@A Iα$∩∩w	!∪&AπI∨π.M~!α&mα2ε⊗lrRεRLz0$λL*b∞↓∧	2εIλH%mα∧*J~>∀jMᬬ~⊗Aα∃Iα∩y→d:∧∀
5∧8)∀dαAQ LU*:B¬≤ZK∧Mα".d
∩⊃3Dλ∩4ph~Q∩3Ht∃∩⊃$λR3Q	→Qh⊃J)s(∀j↓ ¬εEβE→P≠;	JSP TT$FWNACK		;GR LWNACK
;;8ε∩@A→β11⊃`XY#
=~∩αw=$A	βa110X1#
∨≡4∀vvv↓β⊃π-&A
∨HAβ≤A→'#¬$Q→'	$RA$BεQα$B∃αJL:"Qαu*6
⊗⊂α>→α
∩≡F6,rRL4SYemα<*J∃αα
$mR1⊃(Eλ⊂3HD⊃q3HZP5⊃*4⊂3@⊂⊂h(!'T)$`j⊃P+g H"i)'T⊂ c⊂∪'j↔εB≥]]P∃$"P#⊂l,$,λ∀ AXXXX) HAS TH@
A→=(
α
M!↓Aα4zIα2≥*αI1β	α
>⊂α~NV∃⊃0⊂@ ¬≥]Nβ BIT 2P∨≤αα&Mα≤*Qα_hb∧<XJDL@Qh⊃+λ0p
&⊗P ∞ ARCUMEL¬)&A%&Aβπ
!)β	→
\~(~∃
<rε∞
β!∃≤-K$¬"`⊃⊃∪@8pπjg∃⊂*h⊂⊂aj*`S⊂#"fP i⊂'Q⊂ i#TFE∧fSi"dP⊃⊗∀ DBDYf"Pi"aP∪ ¬GATIP
A=A≥5¬β$A=Aβ%≥&Aβ≤ααQ04T2↑*ε≠	`⊂L*YU∧
λADe<h_4XH↔4¬≤zλ8∀r∧h→Db∧→jDj∧β∀u(*H⊂rλXp¬biβEd)∀-⊂"⊗
 ⊂FEαice H*∩#+S aP⊃
λ
∃→]→βπ⊗h∪∪∨-∀AλHQQ(Rα∩m∂(A]_∞J⊃∧z→α
M"L4(L
N!α a"Q$hP&RIhR∧αF!⊂K]99∃α¬YiD-≥4
ttλQ!∩∧U*:Bβ

JBHh!→%∃≥D
tdF↓⊂K\yt¬¬∀xJT≤*λ∀¬ :SQc)Ik04Hzh⊃4J)tC"AQ@εE≥Nβ; @USH CRUFT FLπ$Aβ8Aβ%%M @>≤
R∞↓⎇∩⊗ε∩,z→α~α(∀l(Q'3@7h⊂Q*@`i"PH* "P⊂βH∂∧J2εI∧"⊗B⊗t"Mαy`λ
I⊃(∪λYβ#j$λ'c⊂*∩ ¬~∀lp
mα-∩JN⊗ ∧∧5∀→XR∧∀Y→d:∧∀λ4|@Tq⊂)jC"AQQ0	)U(≥∧h∃id⊂(( YDB]Q"i∀)bj↓λ(*`∪H
↓PUSH P,SP		;MUST SAVE TT -SEE $TYI
	PUSH P,FLPλ
(MαVN!¬↓2~Bh"J⊗∧*εQαd*AE0MαVN!¬↓2⊗J∃"0∩Zh*∧≤UAQ$d-*:Eβ@-+K(ZTq∀↓⊃".sλYβ#j$λ'c⊂"T))bjλ(*`∪H
∪⊃1_A(YU→%β0∩∩g≤yα↑∃∧"⊗∞_HT"¬It¬∧90∧∧⎇Iλ	XHλU)JQ03∧∧A∧d∪&"P*%`
@!1_∞N⊗~BA$¬Zαε*⊃α∩⊗JJ≥9	αεu"0~∧βsQ$
⊃∪λ
9⊃uβ!↓2TTjDλ⊃α!Q@εE"T*g⊂≥αd))-λ**⊗"T)*'∧B]cbg⊃i f⊂⊂αREAK OUDMF AN ARRSEP
	SKIPE @ →+%%)≤~(∩Aπβ%_A)(αa""α#"A∀λ∩TJ:α⊂"i∀_`FEαe)h⊂∃*⊗*dPαRK		9Hβ3	
A¬%∃β⊗A+@AαAM$A∪9)%%U!(A
%%'(~(∪∃%'PA%+8`~*-∩IF¬PJ"JJRαRQ∩-∩JR8HIfN"-∩∃α↑*αεJ∃¬*:↑&t"&*≥¬"<4(MαVN"Rα~bAe*:↑B∀x%n"r∩2∃¬*:↑&t!6BJ⎇"⊗∞PhP&6>4)αA∩-∩JR8hR⊗JIP&N⊗%R5αBr&∞@hP&"2bα⊃2.mα2>N-→"A⊃↔5≤z
xR∧$X9∀$1λ∃	T∀⊂0i4⊂Su	∧∪qH∧*3TQ(→λC"A→∪∪⊃)T⊃∃)jQ03↓⊃.h⊂)hλλQ**TuhD	3U∪d	sQ(
λ⊃λ∀iIuβ"A→∀TQ*4∩s4	Itq4e
λ∧FEαfgk)RP"⊗⊗S h_ELT(∀FB∧d))∩P"⊗"T)*'εB∧a&*λ"⊂ERRTN+LEP1-D~∀β'U∧A Y∃!εb~(∪!∨ ↓ Y
⊃@~∀β!= A Y→→ ~∀%!∨ A@Y)(~(∪!∨ ↓ Y!αL~∀&U∩NQα,∩⊃@%]∩⊗NR⎇∩∃α∞|r∩&RLz0∃~λ→d"¬λ)t≤,XAPPH(Z∧≠!→D-β∃EDd-ε⊃PPh  P@∨∪9)⊗I∧J0∩∧_4¬% Q!∃¬-9	"∧T∧ ⊂,UH
/!I_%@9λ∀`(α E UH
/∪9λA!∀zR,8¬∩)@dε~∀%1π⊂αα⊃2R h ⊂Lλ*$j¬J@¬V*⊃∀CE	HRRO FXP,1(D)	∩w)+'(AM ⊃αd*~QαD
22	xb¬∧ID¬∧|→jD-∃1Q LDJ)r∧∀J¬C
DE⊃⊂KZλIrαk∀λd`:H⊂R('h⊗⊂⊂e"⊂&⊃h∧ @DLOV
	HRROI P,-UIFBM(@ ∩~)∪
≤AMβ∪_Yl~∀&5BB4≠
∧$bλ~#λh!_de∧i≠¬∧⊂ε⊂ T_BE∧T εIXPDL AR1
]	9ENDLπA∪→_	αNJ0$!→TmQ3 ⊂⊃⊗*diPi*⊗j
c∀#,∀∀@	;LEPλA↓↓∃αα8∀4(∪uHZH⊂	"Th∧GRATION
λ∧∪≠∨Y⊂∃αα@
Y4p5JE⊃P(
DX@(ααR>qQ LLzhTj∧5JTM≤~h∩l
85¬αHα.pd
⊂πgFBα	MOVEH
A∧αbV&N
2¬ ,∃8"Eαα".h⊂*'gCE	MOT¬⊗5∧	2V&≤
P∀
λ¬⊂K\∀
D`9βFE∧R))`∀↓+∪≥!α` (αC"Gh∧@⊃∪LA%∨+Q∪⊂~∃∧2& 4J4∧Dβλ∃)@+`g"h)'j⊃aj)P⊂α@)/∃⊂→ααI∧*∧8¬4J(αg" SPACK PGSITION
λ∧vAβ9λA)⊃∀A↓≤JJ,D
5$90¬∧⎇9~DL@pπ⊂∀⊂iP#'Ue"⊂$Sα TT	,∧@A∪_Aβ≤AU≥/∪≥⊂[!%∨Qπ(A%&~∀v↓
∨+≥⊂XA)⊃∃_	h∀SY↓↓αλ¬∩¬$λT¬,Uy→d"mλ)u$8¬⊂∀j aeH!) fQP 	S POP'ED *WITHGUT UPDATING↓
1 A=$A
→@T⊂∀)X↓↓α	JαNAαM→αV:<zV*⊃¬"5αRD)α∞Vα*$,@Uλ⊂I→β"$g⊃P EVEH
;   C) T@E FUNCTIH∂9∧JMα∞b2,D
tM⊂∧⊂"Uα@%3Q⊃∪≥∞ααNεZ, 4)@4∧α∧αα(∃iλαg⊂*∩ ¬ FUL¬π)∪=_	αJ-"VJ:α5B∧84∧
∀T
$-≥Iz$,"λ→d"¬IλR¬∀zZDL@Q(⊂iYβ*$g∃biFE∞β      SEARC@⊃∪9∞A
∨HA)"*α0∀4∧ ∀↓+⊂~↑Lr⊃αBα)u$0p
εBα; @/!⊂→αtyα6>∀)αV:αy∀`(α⊂ ⊂RLπ ∩⊗≥"Mα⊗β	∃≥α	→b¬$α⊃(
:⊃0r(i11⊂∀ g#bH'c⊂*∩ ¬ @!⊃_X~∀lA)↓∪LA%∨+Q∪⊂~∃¬∩⊗@%X∧SJ4∃∪h	~α)P!Pd ER, WHI@π⊂A∪LA⊗BαλT:α"b TO @%∃' ∩≡∀(4)@4λeEαλ→d"∧iJααD→hB¬∧βtti_S⊗(	@h∧@⊃I&RA
I_∞ *λ¬∩λT∀p
 PβK FRAH
AQ⊃β(A]β&A-~⊗⊃ααIr¬≥IzhSαh∃	λαP ∃NTπ∪≥λαjBJ>$*≥λ⊂	bPi!dεBα; CALLED↓(∞&R@∧¬¬-9	"∧T∧ ⊂,
0⊗AQ(Aπ∨9)β∪≥LA→><*N@"λ_E∩¬It¬≤,~(4@@ ¬≥@ PRE@'∃%-~αε $βλ⊂(∀tc"JYβ+h)∪β:~∀lp
mαj0≥3P
 LπA≥"V~→¬""εQ∧:⊗@%4
¬-≤α⊃1∧	50	jλ!"P+Qd∧@_A⊃
∪≥∃λXAπ!β⊂~≡*αV 5z
U_hαN`≥Nβ @∪↓∪ ⊃α≤Bε 4xZ0hRh∧q(T∃3Uj
4c"A~∃0	dλ εP⊃αb⊂ (αB4
Zp∧⊂#⊗(⊂T
λ∧∪!-~!α~β
αe⊂β"B*
4r⊂⊃,(⊗*∃∧¬∀vβY`_h!→¬∃∃αTh
Jα".i@dεLY P@	1¬αεJPhP&&>4*%αIbBNA⊃⊃∪@8u0	)⊃dεT VAH	+
↓≠A≥↓α&9∧~εN∃∧r0~∧h∧P)X4h⊃IZαg"εB*g ↔PR20∀∪M↔∪!
↓λYπβQ%)8hRV 5z
#Pα(⊂h→3⊃(
J	
⊃¬⊃ ∧]d⊂hεE WE GONE TOO @
β$|~∀%αα*JN ∧¬,uz
% H↔9dj∧β3tHT⊃P	 SbiP(∪βSSIBLA, SM RETURN
	HRLZI T,CAP	+=$%@9~2¬$α∩4dλ3H∃)@+dg"h)'j⊃aj⊂#∀ fb←CE	TDLN @(αa""α#"A∀⊂¬))U⊂*g+SαXT		8π⊂~> αV 5y→d"mλ∧SjHαa`∀0A'=¬~.&A¬""&M∧2Jε6(h ⊂Lλ∧TI@P(⊗"αDY`∩ESET PDL _A]∪⊂∩D
t`:Rh⊂K∀∀⊃∪∧	uH∪H[∃λ∀
Zp∧εE∀`R∧h⊃$hλ@!⊃_A(~(~∀`-β0∞d
∃0	dλ''j"CE↔ ∪EE UNWPUS
	PU@' A¬ "α¬E,@TQ0)A .qJ)q(∃		4h∀	@dg* Lπ⊂→αb2>]∧r5αVα8U∩∧α3U∧zc"C!∧ibj∪d¬ @+9%⊗ε`h &"∃∩b5α5BA2J,
22dhP4(→Yu (αP ∀0Q @$HI`≤<X@¬∧|α3UλZH⊂
'H*g#dS ∧ HAL@DER
∪≠=(
N∀λBblHZβ
[∃
αHK8∧Q*:∪tQ$	⊂4hλjP31$¬∀sP*(Q1λλjSs λZTL"!Q@2∀J)(⊃λZTU∪AQ@∧a&∃⊂"⊗"T)*'¬S"h_VLFE∧iUa⊂ ⊗⊃h!XFB∧h'hλ(⊗"∧BDYcbU⊂'f"λ#, εB∧h'hλ(⊗#&∀∧D]i⊃ij'i⊃P#&(βEh'T⊂(⊗)αDD]iPk"P&⊃hεEL TO SP UNWIL@ TO
	POP P,PA3
	PUSHJ FPP,SAV5		;SAVE ALL PROTECTED ACC
	MOVEI B,(T)		8π!∂∪9)$AQ_
α∞|jB&2,!α~Vt~R&>pα6IαdJNP4Ph)mmXαBVNBα2>R(h):N,)αV:=αVL4PJBVNDQαA2≤
ZaTHI`≤h@¬,uλ)u$,8¬⊃(D⊃sQ*1"C"A→∀TR$

⊃¬⊃ B3)zβ"dP∃*∩∀)
FE∧h∃id%⊂∀⊗*a"∧D]j[;tw2λ)hεEαh*adλ#&(⊗∃εA∧iQj ∂I A,
	JSP T,SPEC@IND
	   0 A,PWIOINT
∀∪M)5~↓%β→12~∧∪A∨ A
1 Y(~(~∀β)1_
9α ¬D85⊂siQ".piYαh$f⊃b⊂!gQ ¬7
	 BRST UNWL¬π
∩$s⊂~>∧)1αV≤)αBJ|:8$
,r↑BV≠iuiE_H$%Nu*6
⊗α λ	@c⊂ ⊂USHES DOFE MHA
a ∩(Lj>J⊗JαRQ⊃E!$4λLBJ2%¬"Q1∃e*:↑BαZ2keλeEα↔8$e"λ	tL@U⊃4D
⊃h⊃λ~⊂(∃	λ5λ∪*Zuλ⊂HT⊂εgk⊃bεE∧PdπS TT
∀∪5∨ ~⊗Jα⊃2Vu:BVMi	"RQHI`≤∀J@∧,TD
∧lLhHU⊂H!_$e"λ¬∃¬E⊃
"!↔pS∃∧λ3∪λ	→αh'i∃ g*⊂⊃,(⊂"⊂j FEαd))'RP#$(∀"∀DB]c"kH#((εB$c'⊂∀`df⊗⊗FE∧h∃id⊂(**εEαc,(#∩l("&λ**εEαh'h⊂∀⊗**εB.D]bS ⊂'cλ$c'⊂∀`dfεBεA∧h∃id%⊂∀⊗∀!∀BDYdg∃'ebP∃$"P*S+dg"∀)'j"Pj$ggλ!gb"CEieRh FE∃g+g!S]P(∃id%⊂∀⊗$h)∪cgεEαh*`∪HJ P,UNBIND		;@+9	≡A)!
A:|J:R⊗∃∩VBQ¬αJ>R,~R&>ph(&B-~")ααbJNRC($%nα(U≥$z(R∧:1PPM
Z4DRλk¬αe*:C(h!~∧⎇∧∀λeEαF⊃⊂K\iJU≤B
8∃4D
Tu∀X→B∧5)yR¬≥H_4Xh!→%∃≥D
Tu=
 A⊃!"U)jsV∃π∧fgk⊃P"⊗≡f"h_JX←∃↑⊂`j)*∪α-EBRTN>(D) ;GO BACK OFE AATCH
↓JUMPN D,UNWPR1		;IF MORA FRAMES TO CHEC@⊗AQ⊃β≤A≥≡A>ph*V:=αJQhMα>Aα5BA2R h(&B⎇↓α~bαbH4(Mα>Aα5BA2PhP&B>αα~bAd 4(&∧zB)α5BA04P1n∞LqAα∞|rMFB5Aα∞≡u→F~A∧~> 5:λeB∧9ye≤5∧λ4l@Tr5∧λP4∪j	H⊂
(∪h!⊂(∪h'#%λ!ah'T%⊂⊂⊂POPB PMP2J APOPJ POP3J POPAJ1 S1PAJ POPAJ CPOPAJ POP1J1 POPJ1 POP1J CPOP1J M1PTPJ PGPCJ C@OPCB ULLKFALSE UNLKDRUE @X1J CPXDFLJ PXDFLJ @!=!1	∀↓∞Bb$P4(Q*5,∃JI@M∀~)∀`:αiP!SβH≠∨8Aβ!∪Q&~∀~)∞&9βP&&9α↓∪@:u0	(∀$ibPCE
;8εvA$B⊗N∃¬∩6@-I→d-~λ~$*¬X∧q(j3λ⊃I@i⊂!gSαS@∪≥≤A+ A1∪')&↓≠A≥U≠¬∃_4)@50∞d¬⊂4h
:⊂5∃*4⊃Q3H~⊂∧gg∀P ∂FTEHA	<XA
∨HA∪≥≥"ε 48U∩`!αA≥@;8εAαA
β→1¬"0~∧9ye≠iλ
@df&⊂∃ ebP⊂P ∞@+5↓⊗I∧J0∩¬J@λλ→Qλ∪(→q(⊂$
p3QiH5∪sAQL¬P≠≠ LAST OF IT.  SUCCESSIVE AALLS T@≡A
∨⊂~N5Aα↑→IB¬$λYb¬$_92∧tXpλ	@*fa"T)FE≥Nβ; ONTO @)!
A
¬=→(A∨_A)↓
↓→∪'λαq↓α∞|rMFB5Aαε: ∧∧9βc ∪PFX ARE SIMIH	β$0~∀`-β32∧∃Z@λ
	tλ∃	λαP'*Sa"a FROM↓
1 \A∪≤AQ⊃∪&A]β2A∨9
Aπβ8A!%∨⊃+π
A9+∪¬I&~∀vβY`~∧α3@⊂⊃'i+`T ∧S OR@	∧αaαBVα9∧L@Qh∃	λαfP'Sα F@1@XA)⊃∃_	αVα8R¬$α⊃4hT∀Su*I3Q4aQL¬P≠lA)=∧~6 54
DD3(∃*∧⊂∧g R@-I'
A∨I	⊗IbαBJ>%*≤Lhpλλ∀⊃StJ@`i")H& ijλ'c⊂*∩ ¬M.
λ∧⊂∀(9t`*l4⊃Kπ@5⊃ P!,@∧⊂∀(9t`*l1Vπ∧P ∀DX¬αA∧αb⊂@ ¬!gSαSPFX8∧∩@AA_∞Aα5BA2R h ∀≤βsThk∞B2J:λ⊃⊗⊃,!gg∀F@
COL¬'&!P&BVα9∧R¬¬H4`9β)FE⊂αAPOPJ:∪≠=(
,∀λ"bD∃⊃P@!4∪t	$∀β!↓α@
;≠8εA>$B⊗Iα≤z6&>p∧∧-Dα5∀aQ@εE-∀'h%≥αh∧DZA TT,TT	3@5∃%≡A%!1αRD*0∩¬	z∧P@"T∪j	URNA∀⊂Tt∧
λε#,∪αV1	;FX@≥DXA)⊃∃_	αB⎇α( ((85∧⎇	' M∧z	"¬αβ⊂pj	t∩B'dεOT@π!∨!(BA/∪1_A'πI ≥α∀
.@%(_4(hαC"F
⊂πh%∞α	SKIPA A1∞&9α↓∪@:∃0
 A @→∪M A
∪a_
V5β↓α&9∧	αε: ∧¬∧⎇	!P@*⊂πh→∩≥	 PMP@∩A@XdαwA≠ @@⊂αB$βλ∀iIu∀hλ→β"⊂(∪βP@∀~)∞B≡∧Q`⊂M	z∧R¬¬H5∧⎇	!∩`*q1(λ e`∀RACE	;SAC@%∃λA)≡↓
ε.αJ$≤QQ%∧⎇∧∧rG∧h'h∩P(⊗→CE	POPJ @ 0~∀4Uα0≥∧→&∪@!03th∀λεP⊃λP)∩wA_∞AαLrR=αλ¬B¬$α⊃3D
p¬dhλ)"`∀URN¬
S1PAJ:	PGPI P _b$p∞Bz∧β
¬λIB¬≤β∪u¬D∀∪t∧	3P
'H V⊂ Sα@λA↓=!∀4Uα6BεSP&B≡ααA2∧HI`≥∧z∧∧
@λ⊂
$⊃dε @!=!∀4T~B>BQ`⊂M	z∧R¬¬J∧`:⊂2C!↓αA('T_e_]α`gi`H⊗XT(
DX@!= @bAA	_Aπ1≠ ⊃⊃¬"",d
4\M∧
$-∃0	'βE('h∩_X
	 AH∂'αα↓"A⊃↔5≤\~
∧L@Qh∀	Z⊂¬⊂)⊃h∧U@%8~∃!∨@c∀d∩A!>∧IαA⊃λIfB≡α↓EαB$aαNIzB∧h@λ
	t∩C!λt∪tε→LB4	Z⊂¬⊂((#h_R∧AεE∪Xj*(∩≥ieRh P*∃⊗,!VLDX-DA∪≤AQ(XA$B⊗)αα	u∧Pβ"T	@h!e≥αP('hλ(∩!DB]h'hλ!P TH@≤AA≠!(hRεB≡∧~)h&∧zB)αα¬E∧⎇λ9 hPβ"U)I∩qP)Jq(
∧U - @ A(A	;UNLOCK @∪≥Q%%+A)&@1¬∩⊗@%X∧SI→β#P#⊂d∧SE (NIL)
UNLKP	%+∀pλ%αlzP∀2(⊂%J∀U5	↓,p
g∪'ae@ IH
)I%+!%→1αJ-"VJ:Lr≥αR∃*R!↓E!$4!⊃∃,TI:∧`:⊂¬εEβE( _E∀tβ!=!∩A
a Xb∩$p∞~2-~!↓E∧2bAα≤b0≥λε⊂*∩ ¬N PLπ!)¬↓0$(:¬D∧iI#@!4∪t	$∀∀λ⊃S∩AQ@εE(⊗ #&%∞α	HLLX D,(P)∩∩m!∨ A→1 A∪9)≡Aλ0A)↓8A!∨!(A H~(∪∃%'P@dY!=!1	∀!λR%Zαε*⊃¬∩⊗NR⎇∩∃α~d
≡Mα5∩> *λ¬∩λT∀λ∀iIuβ"AQT∪tλ⊂NB*	tλ⊃K
λε"∧B]h'hλ!( ⊂ SHGTIH
)≡↓λXA$B⊗)α5I2 RSP5M3 SAVX5 SAVX3 BSTX5 PXTTTJ PGPXTJ @%M)0fAI'!0dααJNRA	α∞B⎇α:Z(hP4*N,∩RR⊂M2εJ&⎇*Mα∞|j6>d
4
Q(⊂)Hλ⊂Q*:α'i"H)'jj∩dεE@&4⊂∩*≤
YUhMαVN↓¬↓2∧∀U~εIVi	`⊂MλZ4B¬¬H hU8~c,k'!∃¬-9¬αd1Q%≤
dYS≠P~
U≤B
¬D
∪⊃Q M¬X9α¬αH~#∀λQ(5∧⎇		#@!4∪t	$⊃R∀¬A"C"J85LnA~∃0r∧
⊂c!
p5LG!4∃4i∧∀⊂AQTp5F↔@∧h*Td⊂(⊗⊂FE∧h∪h!⊂#⊗(∩εEβE))j]∧h'T⊂(⊗ CEh'T⊂(⊗!βEh'T⊂(⊗!CEh'T%⊂#,∀⊗εE)∀h→≥∧T'h⊂( FE∧T'h⊂(!εE∧T'h%⊂⊃,(⊗εB))j_N∧h'hλ(⊗ FB∧h'h∩⊂#$(εEεE∀)j~]αh'h⊂∀⊗ i→⊂FA∧h∪h⊂(⊗⊂i_FEαh'h⊂∀⊗!FEαh'h⊂∀⊗!εEαh'h⊂∀⊗ FEαh'h%λ#,(⊗βEαE)
fXh%∞∧h*iR⊂#,(!ah'T%αE)∀j~fXNα	POP P,AR2A
	POP P,AR1
	POP P,C
	POP P,B
CR5M1PJ: POPJ FXP,R5M1PJ

RST5M28∧∪!∨@A YβHeα~∀%!∨ A@Yβ$b4∀∪!∨@A Yε4∀∪!∨A∀A
1@X~∀~)%'(k4ft∪!= A Y¬$eα~(∪!∨ ↓ Yβ$D~∀∪!=!∀A
a X~∀4∃'β-`jt∪!U'⊂A
a Y(~(∪!+'!∀A YMβ-0f4∀∪!+M⊂A
1@Y~∀%!∨!∀↓ X~∀4∃'β-`ftβ!U'⊂A
a Y)(4∀∪!+M⊂A
1@Yλ~∀%!+'⊂↓
1 YH~∀∪!=!∀A 0~∀~∃I')0jh∪!∨ ↓
1 Y_~∀∪!= A
1@Y$~∀%!∨ A→1 Yλ4∃!1)Q)∀t∪A∨ A
a Y)(4∃!∨!a)∀t∪A∨ A
a Y(~(∪!∨!(A X~(~∃%'Q0ft∪A∨ A
a Y$~)%')0Hp∪!∨@A
1 1λ~∃%M)0bt%!∨ A→1 Y)P~∃π!=!≥-∀h∪!∨!(A Y!=!≥-∀4∀~∀~(_vII%
%β5
@IYβ→
%­
@IU∪
%β5
AλI∃)β→
Iβ≠
A¬
!∨!(@Iβ!A→3
%­
~∀4∀~∀~)'+¬)Q_∪-βI∪∨+&↓↔∪≥	LA∨A→%β≠
↓≠β%↔∃%&~∀4∀I%I
%β≠∀zbdjHjdXY∃!∨!∀$∩w%I∨$A
Iβ≠
~(I⊗Zb~Jεl)uEI+⊃UI1eα>AJPIf⊗Zaα~Jj∀4)[Y↓∩ε¬α2f~∀
6∃u+⊃UIU⊂a2ε~∧zB(%\
BB∩Jα~Jεl)α∩⊗4J:,Dλ$,DzqPR¬Y_e∀XWS+∪V"S∩bH:∧⎇∧→!⊂K]X∧q*$⊂3UλZTU4
D⊃PP)X!"C!'nnhλitS0*D⊃qHλZβ f#∀ fb]βE_+l∩y
→@|XXy→1 |~(p
mlKbNAybar4z)SpH'73@1)⊃5H→⊃P	 SbBE&	 ¬VALFRAME==3			;@→9∂!⊂A=A-¬→¬%β5
~∧~(rvvA→≠%≠βPA∨A¬!!2L2Jε6+P4)@530JjTλ∃∀≥4¬Rhh'73HKβ⊃S
πK∂λk∀C!πnnb'Jt@⊗≡#*g⊂j gg∂∧E≥]Nβ	$APPLYFRAME
	.SEE L$EVALFBAME¬
;9; GHERE -- ARGS -- MAQ BE @∨≥∀A∨AQ⊃%
↓)⊃β≥≥&XA	∃!β≥	%→ε~∀lp
mα|qα&R~α2⊗~ α"ε23P4)@530Ld¬RM∀πYDM≥D	t2∧~(u_h'73@13∩πε↓3∩β¬JRλ∞`Sa%'∀'`g*⊃i⊂ ∀O ARGS VECTLπ$@Q∀X
:dλd`:H∪∀jXTJ#!πnnb)I∂Hα*)∂3⊂*:α⊂ i⊃]P'j∩ ¬R AR@∂&A¬%∃α∀*2>]¬""&M∧z0∩¬IλPhSαh
@;		S@)¬∞-→∧J1αRDJMα∞
~∃αRD)αεB∧bf~Jj∃αX≠∩∧∀T	Tm∀QQ#@7nb"*I⊂3@⊂⊃'ji Tπ⊂≡J%→α2≡t90 ('33@4⊃2⊂)Z⊂ε"]αDfgk⊃dP F∀c'gFB≥]]DBDfgk⊃dP!ε∀a iεB≥]]DBDa`f∪⊂→⊗(Ujhλ
9;;	CAUSES THIS AP@LYFRAME TO APPEAR GN↓)⊃
AM)βπ⊗h~∀`-YX$$¬αa2F~|x4)MYX$$¬∩a2F

⊂4)@4εna⊃ /⊃IJ∂KπHβ( ∨βE→P≠;			<SP>,,QUUP⊂~(rvv∩$∩Iβ!A→3
¬¬≠

∀4⊃β
∧zB)@!→∧e∀T
Bbk%
αHHα.p*
⊂ε,c∀ fbP∀'h%εB∧iedT π @($∩∩`.4J≡@-(T∧`:αj⊂&⊃dεGTH OF
	IOVEI T,1		0⊗A¬!!2Jα~Jεl(4(__D$Jλ¬⊗∧¬∀∪!%→αAPXQ(R4⊂λ&NαX"¬αβ∃α!⊃,¬`⊂OP C@%U
(A
I≠⊂∃ααλD`@ ¬∧h∪βP@∀A@X∩$KZJ-JZ$`!α@

$AP@!13
%β5
zj@⊂εS∪+%ED5	z∧PKαp4
	⊗(⊃J(31#!∧¬∀~(~∀_w
→Q'⊗bA→→)'⊗β⊃α4JJ4]αλiE%≥H λλi∃∀qK∧⊃S∃
8Sλ∪J@)`@ HA≥-≤Z&Aαu2N.R⊂∧∧`*TrqIAα@


~∃M+¬))0∪⊂~Vl*J&
¬"fB∃m"⊗NRLr≥ "λ9t`*Q0	)Rdπ@≤X↓β⊂~⊃¬2ε %XT¬∀⎇X¬∩)@ ¬S

IFN BIGNUH
W		
→β∞αZ≥DiH∀:@⊗c"Hi∃∀rf↔@∧RkU P'&Uα5∩∩m+⊂~ε≤~⊗BR∩2*	jTl-)_2¬4→JT(hαR1HT⊂π i∩h∧@⊂X%∃%' ¬I2αβ8de%9:¬hKαpsλX4H∀λP#& QiFE.BDXEND @∨↓∪
≤A	∪∂:,i.∩
4bε≥8;∧4d_qP@(β&*)RY_
	%Tπ ∩¬∧r6@31⊃∪@9β'g-L¬+≠I∪εA4
2V∀hR&~∃∧rεJ&$A0&*∃~Q↓Idα`≤4JJ4]¬Q↔49α"`iλ(!P#∪ ciFBα@
→)M↔ t∪5_∞@4Y∀¬%"β
⊂%⊃ ∧]A⊃& ∂AT S@↔∪@@	αJ⎇*R&:(h ⊂LJ9α¬%EEU≤,yIt8Hα.`⊂λ)`IPS 0 FLπ$A
%1≥+≠LX@bA→_∞Iα4b0≤@U34d¬⊃t@λIu0SλZh#"A→∀TVD
∃∀jE∃∃∀BDXLEAP
~α0∃,XZ$L~λh∀e,T	∀`$∃∃β!$c"P∪αARITH,   2@@∪↓∃%'(αα↓"R ¬∩d∀JJ5$∩J→DM≥AQ$L4d	d
∀~Iαbα∧ε$$Ld4U∃8@λε%⊂
∃
E4εc&∃)j!,QH	&≥ %n∩M~BεR≤Aαε: ∧∧9α"`iλ(!P#∪ ciFBα	∃
1)')∧βP&~2%~-H∧KZ2&N I`≤-*)u⊂H!_de%8kHKαqR+	U3"'~p¬dh∀P_εEαc&*)Q&∧D]Q&'g*SDY`∪KIPS 1
DB⊂∪
→)M
_∩∩m	∨+¬1
∩`.α94M¬4ε⊂hT8ε∩αc&*)RX@		;@π⊂≡⊗α	D-C8Z%∀⎇!Q$%BA_de%90!⊃,¬b*T&"`_	8π%%=$⊂∀
∀9⊂&~e"N-DHI`≤∀_ye,@ ∧]bT)'iεBα	FLTSK2		8π'3≠	≠⊂⊂%\*JJ>⊂h ∀DβI⊂λ)"`⊂EAPλA⊃9↔⊂∩xp
f∃α⊂#&∃)` $$p∞"VtZL%@8Z%∀⎇!Q L4JJ4[⊂α".j(3Q∪iQ,¬bi∀'iεEαc&*)RYD]Pi) lB]b`∩RLπ$4TJ~9↓pj~2R≥"↓6:%JB-5D¬,
)`λ~βi'g⊃P ENGP	⊂AQβ¬→t~∀4TJ~9α∀J≡*VhQqE6t
J&R@πbb∧h¬Ti8QnC!	1S@λ$cg*SU' i∩h λ, NMSKBG:~∃→→)'
`pλ&6⎇2∃αR a"¬$hP&*J≥!↓"QHh $
L21α
L::V5SaE6:
∩&Bπ`∧	UTrhk∞C"Hi∃∀qIGB33j@ ¬ @)PXQαR4∀∪∃%M(@bQPR~∧~(~∃∪
8A¬∪∂9+~TxD[≥β%%)⊂|Yl~∃≥
M↔ dt$K ≡Rλ∧∧`)5Hb!↔pπ'ge*fbT$aP+⊂f*bFB'+)eRh≥∧fSi"dP∃*⊗∀ JD@	;"NUMERIC VALUE SKIP"
λ	LSH TT,-SEGLOG	∩wM↔∪!&h@`@Zαα∀LyjTjB∧⊂βj∧i≠∧e,UDβ∩βTλdd|βQ3%D⊃3∀hT⊃0	)∪βR~∀%⊃%%4↓)(I'PQ)(R$∩w2,
R-4	e,@10	$Pβ VALUE IN TT
   "DIF JRSP @(TT ∩Y9)'.αH"eI~5 H∃j4,*λ∧uλI4pβ!↓ SUJ9u⊂@≥αg+!eT→		;LIST	8π%%=$∩∀∪9)'.5@$%N4Jb:VhIfN∞MαM↓DhP&:Z≤Z~0$KZ~2>u*4%Nα94M¬4ε hTH @Luj95β⊂α".hIu0SλQ"Pv∧A3QTi:B"'acfh∪"hεE⊃,∩∧g∃)`P2		3DUPLEX
BG$	NVSKBG		;BIGFUM	;SKIPS 0, LEAVES BIGJUM HAADER AN↓)(~∀%≥-'↔@d∩∩wM3∪¬∨0∩w¬I_∞H∀TB9↓↓¬∩⊗B⊗
!α":\b0≤:4⊃B∧uj95β⊂α.r
YRtb'bi)'T∧¬
	NTS@↔H∩∩`.α(∀d∧yQ∪L-*)u⊂H!→e%≤αpA⊃,¬`i∀ lD]Qi)'iβE$c'λ↔⊗g+∀ej!-LTYPES( GARN KWRONG↓→≥∂Q⊂A)β	→ 4hP4*:αj4\4G!∀l@uQ(
Jλε∀ JF@
	JRST 2(T!
]	↓;EL¬⊃α|1α&~pα∀LyjTjSF∃T`(4R5	πβ

λλ
∧~(~∀_w≥≠M↔ dA9≠'↔∪@A≥≠'-)∧A≥5'↔
⊂↓→≠'↔→_∩∧~)∪
≤A9β%∪) Y6~∀4⊂vvV↓_
V6-∩&
α≤Z&Aα∀zVR→hPhSαh
MBDe)hλ*⊂NMSKAP
λ;;+	@¬≥⊂J↓0∩ra⊃∪@9⊃0	"H!'i⊂αIGNUMS; LEAVES HEADER IN TT
8εvv∪⊃0@∩@8X\α∩m⊃⊗J*α~>I∧"VBH[hSαh
@;	CX$	 ...		;@⊃I
A
∨HAπ∂≠A→  hQ`≠[1_Dα∀¬brp⊃↔4D4Q(λitH⊃	Z0S⊃'P EAT@&A→∪%'(ααV =(@λ	→β⊂ ∀T
0⊗@YX$%↓pq0$%\B⊗J∃∧26Iα4b6 5YS2∧dX~d-~
h∀e,T	∀r¬JAPS[71⊂Jrea⊂K\λZ$*∧iz"∧4≠	e,k4	D,
hZ2¬4→JT*∧→`λ
Jβ"Ng]P f∀gP!f⊃`i)P∃$"P(⊂P#& QiFEεB'&ieT→_
	%WPA NMV3		9JON
NUMERIC VALUE
NMSKIP:↓MOTAI TT,(A)
∪→M⊂A)(0['∂1_∞≤4PJ"JJRαRQ2≥!"RQHh)↓↓β∩∩&→¬Z*JN ↓I2↓E"Q&VtjN.R⊂¬ED~:@hPβ"Njλh⊃Sλ_th∩)D∃∩∩*4∃⊂0IH(∪5*:λ⊂Q$Q0SaQSS4i:⊂NB)@&ieh∧DD]S$ijεB∧g&iRc,∧DB]c$l∪*fFEαg&ieQ&∧DDNβFLONUM¬
D@$	NMSKDB			3DOUBLE
CX$	NMSKCX			;CH∂≠↓10~∃⊃0H∪≥5'↔	0$∩∩g	U!→04∃¬∞H%≥≠'↔	∞∩α∩m↓∪∂≥U~~∀∪9-'.β⊂$$%]~f6
|`4*"r!↓αJ-α⊗εQ∧B:.Ixr[
D	e5≤:ε K\λ¬3I:c"B)jTrtε!"".j(3Q∪iQ"B3JjptA⊃".p**P6#!)1SH¬E3UTi:⊂K3JK4⊃4eD∃p4ID⊗utIyQh∪λYQu∩∧
⊂0Sλ[#"C!)S4rhk∞B3)zQ(∃
E
⊂*!Q@2TJ:λ⊂R(yU3*hK⊃S⊂(upv⊃IH1jqλ(S⊂1e6*∃
!QC"SIZrqSπ!33uHT∃∃¬λ*#"A→TTu∧λR1sJY*q⊗λi⊂1jh;⊃S⊂(uq⊂QIH1j∃¬⊃"C"HHIα3IZrq⊂G!33uHT∃∃¬λ*#"HHIα")*Tuλλ	1sU)Uq⊗⊃IH1jpkλS⊂1e

#"AQPr↓↓→LT1 IFLT2↓∪
→(β!α&~e!L4(hP4*2∪9A`+β(
→∧@		;LAP AL@λA
¬'⊂∩εαα"εZ*αR"~4¬
03U	~α,P!∃df*∩dε~∀4⊃⊃EαqAh¬	↓0∪α↓Q Jα∧εhTF⊂FλαXλ 4$bP→Bβ`∞↓Q@∧P⊂∧¬∀~)∞∩Vα	CPα1∃*	""!⊃,¬c'T⊂⊂λ% 0 0 DUP@_b$~∃ππ5!_bt%∞ -	F⊂HHα".hitH
∧Tλ∧λpε`⊂L1)~∃
	¬_bβP&∩
cλ$$⊃↔44⎇$¬α*β∧εα∧⊂S%⊃ ¬!c∩l_]∧Q$hλ "$∩∩%\20≥∩¬	$ελλλ⊂⊃$hλ "αH4*∞4b0≤
F⊂∞Dλβ&'`U_@				;FOR (% 0 0 FLLπβ(bαH4*I8εβ@!4Q4λX5λ∪
&lλ¬@)(!g∃⊗⊂.RPC@≥ I`≤≤βs3)Yβ⊂& T⊂!gg∀h∧ANTS ALSLεA+≤*⊃α
Jα2&Nαα≤@q⊃#!∧¬∃5i0	`+β(
FBαIFL X¬5 )lrε∞Mbα`∃UαO')@ a`∪		;@≥∃λAβ(αα2,~:BβDβP0j7H∪qD
⊂∧"iQF@
REP@β(αα`∃UαKλ¬@)(!g∃⊗h
ZZ
P⊃εhpλ$∧KZP≥∀~HRα∃λ5T`$H⊂
'H πED↓)⊃
A
_∞ 58¬⊂)Jλ3DλSt@⊂∀d¬ALL N~∀4⊂λ (αN`≥Nβ @∪≥Q%≥β0A¬→∨9+⊂∃6$y6~&DrV *λ9t`*Q0	)Rdπ@≤@X∧∧$|X4∧`)h⊃4J)tH⊂iλαaeiKαλ
)Xπ3@4⊂ssJ@ ¬RTS NUMBER IN TT TLεA¬
↓αA
∪a_
V5bα≤@⊂πa!⊃i$g#H ∧ ≤~(p
mm¬""*λ9t`*Q0	)Rdπ@≤A%&Aα@	
→>⎇⊃∩∧βt@⊂λα@≥$J⊗I	∧2V 48¬∩)@dε.
8εvvAQ⊃β(A%&P⊃↓~qU↓uβ`λε5λ⊂U*DλεQW
P≡P≡Z`@8hP4*&4Jah→ZTdJλ¬∃¬Fλλ∧B]b`_PMH
≥PA∪≤AQ(XA≠¬≥)∪'MαA&p∧∧ @ ¬∧j∀aP ∀T,TT		8π ∩αM→α"ε≤Yα∞⊗αJ2∧l_ydM∃1⊃$	qH⊃+
⊂πg"SαT
	AS@ D,-24∪(TT)		;SHIFT DHE @≠β9)∪'π∧~∀&lzP∀(⊂
* ∧D]T ibf∃⊂ 	N↓)(~∀%∃%'λα↓"Q⊃Q hPβ"Ng]P$g∃ ¬RNAL FIXLUM-TLεP⊗~dz2V5∧~6 5hZ%≤Lyabα¬8~d-~λA`hPβ"R(i⊃p5π∧j&'⊃P**,50∞n`@`∩∩w→_∞Iαα	u≤MI~d*∧α3UλXq0	)H→≠W @¬∪)&↓≠$A→∃'&H~(∩A¬%M(A&4bQD⊃↔2∧≤→`λ	*4q⊂∃ibP#∀aP ∀O SCALE
∃∪→→(j@PJ~N
¬"Q1I≠_$%N5~¬αiz$lI≠$-~λ(U≥JAP@L**5"αλ@
!Q@εE$Q&*_Mαj C TT,774ε``@$∩w)⊃∀A'β≠∀A⊃βπ,A/∂%-&A
∨HA≥∂¬)∪-
↓→+≠¬∃%&~∀%)→π≤↓)(Xn\h
AAH%mα<JR!αtyα6>∀)αRαq↓I]p∧¬≤Lyi∀4L8→e"∧)~E_h!∀∧U∃:@∧L4JBPhT_iE#∪!→T⎇∀YPλλE⊂1S
G"".hitHG¬H⊂
'H→ZW @¬∪)&↓∨Aπ%∂≥∪
%∞ε:≤)04!→%,m	D¬%"I_de#1⊃∪@4∃q(λ→βc ⊗ERT DHE @→→(Aβ≥⊂A%∪∂!(A↓β1(
-1Q LDJ+"∧αJJ@HKαh∀hZ⊂4P*H3⊗+∧λ3Q
I⊃3@⊂⊂b"⊂*∩ ¬M, TRUNCAP@∪≥≤~∀&lzP∀2(∃
Eλ∧"*
F@
IFLT4:	FSC D,25 *$∩w'π¬→∃αα)∀<ED	∧@⊃C"A_Tph
Jλε→33	∩wM∞ε2*α2,h¬⊂∩ f#εBα	FAD TT,D		0↔β⊃λA)∨≥ ∩λZ hPα33j@ ¬ D1∪
→(βH$%@8∧Q*:α ∂RE @
	JRS@(α↓"Q⊃Q hT_iE#≠!→∧e∀tλBe%A⊃∪@8St@	@ ¬GATIP
A9+⊂⊗
-∩M "λ¬q$	50	jβE	HRROA TT, @)PR∩%X∧¬¬∀xJT8(⊂
$⊃P!gi∀ ¬C@(ααN&≡ph ⊂L→y$
∧EI∀4eFAP@ ↓GqS∪J@_hλ EFLFF1 BLNV1 EDBLV1 D@NV!↓∞bh¬L+∧⊃0v	JL(⊂k	UHλ@ EDXNV1 DXNT∧bA∃~bNQ∧rBVN@∧⬬X∧r∧ελπ⊂⊂PUS@⊂A
∪⊂~R∀*1α→jE∀Dλ4D0rr$λαi)bU*hεEβE_ 6βYα:Vl*J&
¬2ε %XT¬∀⎇X¬∩)@ ¬S.A)"-~∃α∞D*≤Zλ→b¬~β16

Q0	iRe`∞
8εvvA→_∞Iα∀*& 4t
DD(⊃⊃*94Q1∧	U31*)0h∃~⊃+λλ→β"⊂(∀'b*aQP FE∞β;; WRNG-TYPE-AR@∞AI%∨$A%Aβ!A%∨!∀Jε@$U`λ∧	u∩⊃**p4q!QL¬P≠lA)"*αP∀JXR∧|d
DD(∪U)XQ0	 IS LIFTED↓∪⊂~RzαRQ↓D!2I22I0⊂@ ¬εE⊂βH∂6l*0∃"∂HeDud∧ ≥λ εP⊃≥XdtA
a_
YMRα~bhfC@/β"C!≥]U@ FX@≥D@PdXLXh@%¬"ε.⊗~αM ,Xε∀∧	3H⊂$¬⊂K⊂eH4L ∀H g" PUTS T¬β→+∀A∪≤AQ(@AλαbI2→Jp4(Q)∃∃∧4λ∀
Bβ⊗d&&m↔#!λαc _NT!AC:
IFN AC-A,	E@1
⊂AαY¬α~∀∩$K ≡Rλ∧∧5DβS1*!α@
IFL∧Aβε5αP∪a∞!αλ¬D_Q(eDud_∀7@∧fgUα@∩AQ(ZbW¬
 "α⊂0e⊃,¬ad⊃a` DAP	αAQ3!
~(∪%∨(↓)(@5λ¬4~β4hXpε'cCE	SKIP@_AQ(ZbW¬αP∩Nα@

JλεP@+AC ∩~(∩A)→9_	αR ¬S
\_5D5@⊃↔5≤\~∧∧L4dλdMDβP
fCE	  JRSD↓
 "u1εεHH%nIz4(hαB3)Zβ"P*∃⊗XU`Pβ(λ@"→$$↔8t-λ⊂ S*bP$Sα @≥,j⊗J&~αε4PJ*JNα@λ¬
λ∧FE∃ i&dSαλ
(hP4*~drP∪
αλ
∧Pdπ@∃αααQ2~drP∪λα".hi⊃QL$
p5∩∧
p¬dhλ)"`∀URN¬

λ@
→9(	E@!∀U-⊂(⊃IIS14AQQS∪J@_X
	SKH∂)(αα¬ $iA⊂K\xZB∧4Iye,Jλ¬P)J1(∩)@⊂** FROM↓α~∀∩↓∃%'(αα⊗~2u1D4λLj>@4T
E"bα⊂"!Q@∧e)∀h⊂∀*
FAεE∩c'⊂"⊂#& cK-FE"Q!'#_Nα	%@/QαA	¬9≠$~)	¬≥Dpλ&N\zRQαλb∩λ$KZ≡⊗Q∧">@,)HR¬4→JT*∧α3@⊂
**⊗"
P#!'SP FEαP!))U⊂"b!∪+_DDNβHAGH ORDER WORD AN↓)(HA1∨ ≥α⎇∩∩-$	∀b∧AQ$\λα33j@ ¬ @)PXQαR4⊃↔α∪5∨%
A⊂XbQα$~∃↔∪-_∪	≠=(
*λ¬∃¬E⊂*#!↓2TTjD
⊃α!QTεDDNβENDMF IFL DBFLAG

IFN CXFLAG,[
CXNV1X:	AMJA T,CXNV1	↓;CXNV1 Tπ∪)⊂↓'↔β ↓%)+I_⊂∀λhR⊗∞bu1Eh∀Zu$
λ;∧tlX!PT≥	jcP~94⎇¬Dλ∩d≥↓⊃∪\<Z@∧@s0∪λ[λ∃P)J1(∩)D
⊃∃¬Hλ(⊃J)s(⊂!Q@∧P%∀)j⊂"Pl##_BD]`∩EAL PART IN TT, IHβ∂%_
εJJα& 2λAPD\⊃→T⎇∀T
E"bλ⊃⊂hT8⊃∀l]hT∧"c∃λ∩Hh)9∀\`_IT⎇∀T
E"bλ∃⊂hPα2TJ:λ
∃¬⊃"W"!↔q3Q∧	qH∩(iH⊂vλi⊂1c!!"R1ID⊃⊗⊃IH1k⊗aQQ1⊗	@+_]∧Iij @ DXNMER
DXLV1:	SKOTT A,DX		3GET DUPLAP VAH	+
↓∪⊂→↓E⊃2→2%!2⊃¬∧2J>5∧λ4(∀	%∃≥DλT4dhf⊂HK8∧Q(→λ⊂⊂**λ∩3D¬∀K⊃E∃α⊂$fPc`g T,P$gλ∀**,D)~∃-α∪%Aβ(@PXA∨Y
A)(,xdF]I!π≥!q1:J∧~:Q"λH4*.LZ0&∩lzP∀(⊂@⊗∀ TFB%`	KL	DMOVE TT(A)
	JRST (T)
Y		;EH
λA=A∪
8A	1
1β∞~∀4∀@@A	β↔!%<~∃%'a'(t∪!%%4AQ(Y-%∃β	)β	→
∩wIβλA
⊃β%β
)$AM3≥)β`~∀∪⊃I%4A)PY))'¬$Q)($∩vA)¬¬→
AM)+ 4∀∪⊃%1∩A)(0PQαR$∩∩w+MλAβLA∪≥	%%π(↓β		%∃'&A/%)⊂~∀%≠∨-4A)(YI'1)∧$∩w∪≥⊃0A
%→λA∧~∀@@↓≥∨!%<~∀∪∃I'(@QPR~∀~(~∀~∀4∀~∃'U¬))_%'+!!=%(A
=$A→β@←
β'1β Aπ=	
~∀4∀vvv↓+'
AQ⊃αA↓U'⊃≤A5βπ%≡↓)≡A!U'⊂A≤↓→∪_OL@P`OLX@`\@O&RA=≥)≡A@@Q
1@XA
→@R\4SYmmαM!α↑εdaα≡⊗t*JεR*↓α*NααQ2:¬*N!6p↓↓!B¬*N!1β↓1BB-~!%α
→αεB¬∩0≥¬)_∃$*aQ#K[4λ4|@4∩3λXλ⊂shHαP ∃SES DHESE ROP)∪9&A-∃%2A
I#+9)→2\4∀∩∃%∃!ββ(↓_
:B-~!0&≤z2
αdr:BV≤A5:J∧~:Q2uαVN!cP&BV≤AαA2∪9@4)j¬-≤π!∀U∃:DαE"⊃Q hU(Z∧,
D	c¬¬X9α`L9yd~¬Ib¬¬-9¬Re∃λ9e"e
Z4Bc!~¬-≤∧λeEαJ&sH&
¬-≤¬!∀U∃:DαE"⊃Q hU(Z∧,
D	cαs

U≤BA_4|@Ph↔	f	L∀
Zr+J*⊂sU¬ET∃4i¬∞B4
Zrλ⊃IJ∀Mf↓ LF
∃4rπ$∩TTjD
∃
!QA"C!(r3U
(3∞B)→U∀Q)A".tH→Q∪s$
4q1JYλ∀Q*J4S@λ_⊃∀Q*:c"C!)3U∀HY∞B4	zλ⊃V
¬∩3R	_R5α%jq1(
YS∪pi9".piy1(∩λZQ(∃	t∀⊃4HitS λ→H⊂
g∪'aedCE!d"Ped]∧Tedh'λ''hjRj∧D]Pd"aeH#'i⊂⊃"f lQb⊂$g∃))*h∃)FE∧H)edh∪⊂$g*⊃&#FEαP⊂('T%⊂ ⊗αD]bl∩h∧ IF NONE
↓JRST CKI0		;EHSE GO PRMCESS
.SEE ANTXIT


	JRST CPCALL		;CATCHALL IN COMPIHED AKDE
	JRST CAT@¬β$∩$p∞∞ε$~!6

∩J&⊗⊂α&)α≤z6B&d*⊃α∞|"∀4(LRJNQ∧~εRBαZ0HK89tm∧→HT"∧9xD*∧8→De~λ8∃$≤↓Q$-∃8ZE-β!Q M¬Z9α¬αH!∪\≤yZ∧LDXD∧|HT∧IJ2∧-**4- Q!∀U≥∧
Bd-*:EH!→T⎇4YT¬αdZ*%$pQ!∃≤-K)R∧-**58h!~4\MλT∧λH⊃↔54JXR∧Ldλ∩∧$Z85∀L(Z2¬<λZDD
$λU∃∀z*2¬¬)→e h!∀¬≤-IyR∧-**58h!→%∃≥D¬¬%"⊃Q cZiH4dβλIHp1M$¬S⊂p(fhSλ`c$ ,LCAFL .LCADB .LCACX .LCADX

λSUBTTL	SUPP@∨%PA
∨$↓∞ <X∧∩)H1λ∪
:0TTaQ@εE≥Nβ; ORDINARY TYPE COMPILED LS@+	%&A¬∃∂∪≤AQ⊃⊗&⊂α≤\HT¬ 95∩β!πnnb)*tλ⊃¬ES⊂p)Iβ"Ng]P'*Sbi$aH*,h"H!cfh∩d∧ED↓→'+¬I&A¬≥∪⊂→ααI∧,M$λ4l$T
tM⊂∧εE∞β;;	JSP D,¬→πβ1_[≤∩$s⊂→αM→α¬α5*0∀≥I→t`$⊂πc⊂∃$"P*⊗h"FE∞β;;	 JSP D,.LCALL
;8εvA$B&Mαα)u-∧α3Q$
⊂2q*4⊂p4HT⊂πc⊂⊂αINDIL¬≥α
∩≡ $x4∧@Qλ⊂*(βc ∃M BOR↓)⊃
~(p
mm∧∩⊗ 4Xi∃"∧βqH
I⊃(⊂*(βR⊂)Qh∧ARG, AND L@∪'Q∪
 %∧2V 48¬∩)@dεS,
λ∧vvVααε 4D
D\Tλ4
∀T	t2∧iJU≤Dα3Qd
⊂∧"P⊂i#jfQdεTS FROM↓)⊃
AM)βπ⊗8~∀4SY`≠Zλ¬∩λT⊂πi"⊃i⊂'cλ* λESE ENTRY @OIH
)&↓∪&A¬U∪⊂∩Q∧J0∃$t
DD(⊂siZ⊂∧f"T∧¬
	JRST .LCADX	;SETUP FOR DUPLAP TYPE CMH!∪1λA→M+¬%&4⊂∪∃%M(@@:d~ε∞`KZN⊗R-↓α
>⊂α≤@q0λ&⊃l⊂ ∀YP@
Aπ=≠!&d*⊃α∩≥*∃∃1Q LU*:BαtH8∀$⊂↔:4-∃0λ⊂⊃'i⊂"∪h¬BLE TYPE CGMPIH	λαα2NV∃∩L4(LRJNQαr2∞ε4`%nN-"VAα4zIα~dz0∃,T
EM∧Tλ4l@4∩3λXλ∪∀jXTTc!∧e))U⊂⊂∞LCAFP⊂∩m')+@A¬∨$αα~&@	jTj¬K~∧*∧9yU∧LHXB∧e8¬0J*c"KIHp3∪π∧h"iR⊂(⊗)
X∧]iQh∧U@ ↓
∨$AI∂+→¬$Aπ∨GJUM
	 JRST .L@πβ@8H%n⊗L:"Qα
→α↑⊗daα
Vhα~>I∧r=αε∀:V6⊗u"L4(LBJ2M¬ $$%\:>@"
Ir∧<Z@λ
)1λ∪hd∃∩⊃$λ4Qu)X3U∀aQ@∧ijP⊂(⊗*βE↔&!Pc≠]∧R*fh"H"⊗*g⊂$g"∧B]j$$TP"l$U⊂)dcS f)P⊂`f&⊂∃'P''U,h"P∪)ja)⊂'i⊂∪!`f&λ*#P'∃fb`∩IC
	PUSH P,D		;EH	'
↓1β(↓)⊃%∨U∂⊂A
%0bA∨HA#+%-β→9(X~∀%∃%'(ααV*
Lr⊂$%Zα6⊗εtJ2:λ(T=,H~"∧≤→IB¬$βh∪JY10	$Pβ @→'U↓$4Ph!:2≤
~ahMαVN!¬↓2∞~MAD$¬]αVN↓∧
∩%(Z5~∧iz"∧≤yjd-∃I→d<@00r	→β"P'∃da"iλ* ∂ FIX@≥,h4(_→tT
λ@¬@&!`c
D@]dSαCREMEH
(A⊂A!β'PA)↓
↓∞ε2bαR=↓tb≤IESα¬y	∀9λ⊃SiI⊃utaQ@εE↔∪!`c&∞α	PESH P,CFLOAT1
α	AMJA D,.LCAF5

λ.LCADB2
DB$	PUS@ P,CDBL1
∃	λH∪β∨)αAλX9→πβT~∃	∧α(&"⊗∃⊃αnNMB∀MDDID¬$zλIu,∀HUU%MλT¬-≤Z λ	Ju0TD≠↔#"AQKS⊂h_v
C!λv	α*
4r⊂∀⊗!afT&_FE⊂βX$	AMJA D,.LCAF5
CX%∪→∃%$A]~&b
M!αb∞b1αRzαε <X∧∪λ[	0
,T P ∃SER LSUBR!\]
α
.LCADX:~∃⊃0@∪!U'⊂A 1∞∩Vα	CλhαQ⊗∧A03rH∀⊃IHp1M!QQ⊗∩Bd"`∩R [SIX@¬∪(Aqββ→_↓)≡A	U!→⊂5)3!
↓+'∧αα2NV∃⊃εrthP1n:⎇∩⊗@"¬j%≤-D	dm53h	I4u	I4q⊗∧	∩4uεh∩s	~uλ∩II4u⊂∩d 	ST ILIST1 ILIST3 GPRDT@∧A∂)I	(p~(~∀`-β32¬$λZ4*¬I
$,*λjTt≥I→t`*h∪1*(3⊗(
85Q(
I⊃(∪	@ibi∃$"P*∀'ja&⊃P ∂F TYPING "SETQ "∞
~∃9≠%λβP&BVα9∧R¬¬Id⎇∧iz@HK8∧u(
HλλFB∧d!)⊗&P F∃αNORET
α	POPB P,
α
,RSET8	PUSHJ @,NOTNOT		;SUBR 1
↓MOTAM A,V.RSET
	POPJ P,

NOUUM:∪!U'⊃∧A@Y≥∨)9∨ ∩∩m'+¬$b~∀∪!%%5~↓αQ-≥=++≡~(∪!∨!(A H~(~∀~∃M+¬))0∪-β%%∨#&A1∪')∪9∞Aβ≥⊂A	
[1∪')∪9∞A%∨U)∪≥L~∀4Tb&NQPJBVN@α~bAd~εB>∧P$%Ne~V
HhR2&N%A`⊂LYzd,Jλ⊃D`)3α"'a idPβALLY, THE BUNCTION@
2&≥! (!~4\M	`λ
%∃α"'P!`f∪ ¬D WIP@⊂A∧A!+≤B)α~β
α`hαS∩*:⊗nA∀∩U3*λ(⊂@⊗⊂βPOPXJ
∀∪5∨ ~⊗Jα↓1αλH$%@89D`8PQ4J4⊂+⊂EJ	∃∃¬J@εE∧T'h⊂( BE∧R)h⊂*("&'∪eFE∧R)h⊂*⊂agg∀FE∧`Se P)& ij⊗→FEεB≥]]@∩dεTERLAL LISTING FUNAT@∪∨8rA
¬→+β)∃&AαA1∪'(A=Aβ%≥&X@~(rvvAM)βπ↔%→εA)!∪$AYβ⊃+LA∨≤AQ⊃∃ααλD`h!Q$\D~:C@L	J%R∧%E∧
H⊃↔5≥-λZ"lD_94M≤∧
d-∃9→tp@"B4
Zrλ∀¬HC"B)
TVHλ∃λ⊂*!QRS∩*:∞B2	JVH⊂EE⊂*"!↔p⊂0i94rλ
H4Tr)yβ⊂ ↔HIC@⊂A⊃∨'≤≥(~∧∪A+'⊂A@Y∧α∩lA-β0A
∪%M(Aβ%≤A∨$A
≠ ⊗: α&P4PJ"JJRα¬1λ⊃⊂hT→I∃≥#!→T⎇∀Y∀¬"c↓⊃∪@8p3∪λXλ⊂V$	Ttλ
Jλε$f∩ijεEαe*fh⊃P V∀∃*⊂FEαh*adλ!( ⊗∃*εE∧T*id FXP,T		3CONTAINS 0 - USED AS COP≥	∃$∩∧∪A+'A→1 I$$∩w-~QαN
2∃αIλh"&2M~QEHMαVN↓¬↓2∧∧KZ6@$λZ% 94q+∧
⊂∩4dλ5P3∧	⊂πghβE	HLRZ A(A)		8εA6
Iα∞∩|∩αεI∧
2fRDJ28Q!∃¬-9	"¬αβ⊃5H→β"R)I4q→N∧bd!R⊂ V∀∀∀@		;SAVE TALUE OF STACK
	HRRX A,(A)¬
	SH∂&@4bQ
1@R∩αw
_∞F:"αRε2,*L4(LRV6Bpα¬2εdJNADhP&B>αα~bAe⊂$%nα(U≥∧z(R¬⊂Q!∃∧⎇∧λeEαJA⊂K]D	∧
~¬SB
∧βqH
H3∃1*4⊃s@⊂∀  >
λ	POPJ FHP,


3 6l@∪∃'@A(I∂Q%	)∧$s∂	LA%β⊃)β¬→∀A∪≤A¬$eαX↓β∃λA5β3¬
↓∞"⊗≤ZMα~⎇⊃α⊗J∀zJMaQ hTzJ$%$'!∀E∃+$∧
∪(∃E *Q01
H0S⊃!Q@4ri~∪H∃EJTq5↓⊃,¬bi∀'i⊂!R ¬CKS IFF *RSET NON
LIL
	 BRST (D	
↓SKOPT AR2A,SA
α	 JRST↓∂!%	Pp∩∩w∃%%∨$↓∪A≥=(Aβ%Iβ24PJ6 =hT¬%"H~4
∩λ~#∀
⊃Q M$β∪Q$
∃⊂*7∀Q∃πa .q**St@	_H∪SjD∀Q0(J⊂0SλT∃⊗4λT⊂4TH≠ εE∧H%))jλ∀*∀FB πTRDT8:	MMP
∩↓β$eααbJ,_JD∀HQ∪@9β`∞ ERROR RE@'Q_∞J∃¬"0~¬8¬⊂)Hα i"λ)"`b∃ a&"CE	EX@π⊂AβHeαY-Iβ	)¬¬→
~(∪ "≤AαεI∀	2∧Q!∃¬-9	"¬αβ⊃u
(α*≤DB]cdk⊃P ∂UT A FAIH ≠β
(∩(Lj>@4Y∀∧
Bα⊂4F(*#"A→TTu∧λβj)"∃!		;TRP∩A¬∂β∪≤αα&→αdzN⊗I¬∩⊗@%X∧SJ4∃∪h
Zc"C!β≥`∞OIL¬)∃∩VBQ∧r6&:α@∧λp∧"aRh¬ CHEC@↔λ∧∧`)p3Uε∀⊂π'dS*~P'∪dg"3 NOINT4 NOIH
)ααα0∀|α3Uε$⊃3Si→β*εEβE)ba∃* 	NLπ∪≥$*JJVα
B∧U3PjI3sC!∧¬∃≥=∪⊂~R-∩JVB π LUYZ∧*∧∃H4D0ru!↔tp
a∀⊂_P⊗H g a∪ Wb$T`a&"CE	CAIHAααbF@%K⊃P@J	*%≥λ⊂rλXp¬`∃
λ∧∪'Q_
α¬`H$%@4
$@Q∪s$λ4pg⊂βHRONMP&~)_
>&u!Ah_[∧9λ⊂ ⊗∃dεREAL	↓; ¬%β0A)&l)∩∧α3UλZTU4
Jc"B*9p4⊃hT⊂""'P⊂λCLLππ.α4∧@Qλ∃
K*#"A∀⊂εgk⊃dP F∃)*`∀H
∪!=!∀Aα`4(Q'3@7h⊂rλXp¬P#∪βR ANY DELAYED ¬%β0A)&l)∩∧α3UλZTU4
Jhε⊂ S ∧ @%U_A)⊃∃~~∧vlp
α_d∧Uα+@⊂∪hib DO @)!⊂∃αLqαRλT∧`:Q⊃4DQkwK¬λ⊂s	@a`@&0Aβ≥λαα0≥⊂∧"iαλ
∧vlp
αizD*¬Iλ∃"∧_jD-∩λ⊂λhh∪tDβ(λ, @π⊃π-*A∂Q&Aπβ1→⊗⊃∧
≡ε&p¬`hSαh
@; @ECTROYS D AND B~∀4⊂
∞α,~.@+αB4i94∪@⊂∃e)"`S∧XNOL¬∃α≤
1α
*αB,hI∀`(βP$cλ''j DALAYIH
∞~(∩A¬%M(A
∨%→(`~(~∃π⊃∃∞.EPJBVN@αA2∧hP&BVα9∧R¬¬JTL@U∀∃!QSSr)J.B*9r4⊃$¬∀
#!↓(∩TJ:λ∪Si→β*~FB∧iedT ¬ D1+∃%ε9∞∩g¬∩0≤≤X:2¬@QkwK∧⊃R4J:β"B$	TTu∧λpr,H⊃,¬`∀OP @→Y⊂⊃α⎇⊃α⊗J∃∩R9ααy∀dbλIr∧
λ9∧,≤αp
FB''dg∃~X
	PUS@J P,FOILTA	;LOW PROCESS ALARMCLO@π⊗A∪9)⊗J∃*BRLhP%α
∃~Qα~|J2QDhR2>&u!Mh~94M∧tλbe,j(T
⊂↔9dmh⊂3K∀∪u∩λZH∩3JH4TU*
∀c"A∀⊂¬))U⊂#'dS*~εEαiciP∃dεREARλ
∀∪5≠ ~∃∧!2V:∀*εI"2H4(ε%∩0∀(⊃⊗
__⊂⊂00	0↔∪_@Q:|J2R⊗α*%-¬D∧u%%∃∃B¬≥X∧∀
(4p	FB∧P ∪KIPF (P)∩v↓))2A%_
R⊗∃∩VBR~αεAααI∧M~λI∀l(Q!∩α¬λ¬4i	H⊂_4r3JA,¬f`VP!f'P!"`∩↓$@Aπ∃
A+∪M)β⊗R4⊂∪∃%M(A
∨%→(b~(~∃≥∨%≥(ht%'↔∪!≤AαY+9%ββ_4∀∩A≠=(
ε%∧	2RJ-"  (αB4	Zλ⊂
YTQ0)A B2J*uλ∃)→U⊃6↓Q@εE≥Nβ; DO NOT↓)%β≥M
∨%~ααR"∃α∩BVNDQ1αB⎇α)	α≤*F@,Yh4-~	→e$z∧)%∃≥D AQL¬P≠lA3π%→(A	∃!≥	LA∨A1≠⊂≡∞Lr≥αε αR"∃¬αVNαRαε∩∩∀*NMααIr¬≤XT¬,DXI∧-⊂β"Ng]P#bH!`fbH!)'fH''dg∃ i)*T*⊂'iλ"f)bUd"`∩E!
α
LOINTA:↓SKIPF D,UNRRUN~∀$A∃%'PA≥∨∪9(d
∀%')54A+≥¬I+∀4PJBVNDQαA∩L*N&: h &B⎇α)αA`h":>LrQI@!~4\M	`∧"eYj%$LQQ J∧αTTjD∀∪t	& εE∧Tbj-&H*g!*∩d@
	PUSHJ P$YESIND
λ	POPJ P,
λλ
*,r0≤Lh@∞G%B""%@)bbP∃dg"λ∪∧@
;CAR@π	$@∃∞ε∩$"I↓⊗≤
∩αε⊂↓⊗∞ε$"I↓⊗≤
∩εIα*≤J λ∧Xp04D∧0p4D∧0q⊃λHα)⊂∩Pb"" T⊂∩ab⊃ )⊂∩Pb" iλ⊂ab"∀⊂∩ab⊂i⊂∩aQ)⊂∩aP`b")λ⊂a``Q i⊂∩PβAADR !CAAAR %CDADDR !CDADAR %@π	β	H@@⊗∞$
εI↓,~εεε%⊃↓ε∞
εεIα*ε∩∩"I↓⊗≤"∩εε⊂↓⊗∞∩
∩I↓,~∩εε
⊃↓ε∞"ε∩Iα*≤H_∃⊂h!Q Hh!⊃PE≥X*E$`_8∃∩|8J"¬∀zZDL@Q0	P⊂e"⊂#∃e!`∀ILπ⊂~LhP4)@4εfd	⊃0Q$λQ3∪j@P#'f∪'kP*∩ ¬ "FAST"↓∞εIl~∩Iαα)u-∧α3Q*5α⊂εE∞β;; USED WH@≤@)%'λβj0∀LED∧TDλ%J∧9yU∧LHXB∧≤xHR`!αA≥]Nβ @≥∨Q
A)⊃¬(A)⊃∀A%→¬)∪-
↓	∪'↓1βπ≠∃_
Qα|1αRλT∧5,h:DL@pπ⊂"S*),P∀'`	NTS
;;8εA&~αP∀4TTJ*T∧P$Sh'i*⊂e*⊂*∪β THE P@∨∨=$Aπ∨5!→$\α4)@50∞dλ⊂πg*λ"k"iλ!d g⊃bP"$⊃dPPFB∧@
CARCDR:		∩∩m∪⊂~∩-Aα:Vl∩⊗Iα4zIα∞b1α
Jα∞ <X∧∩)H1λ⊂iX⊃#"DXp1⊃λJL¬∧iRdh @ A((A		;  
!CADDAR:	HLRZ A, ⊃α$∩v@b4∀Cπβ⊃	$`(M~.&Bλα¬!αλ¬⊂HK4ε hRX8∀$
'!∀De+$∧
bα⊂"!⊃,¬P→CE∩a`Q)_
	SKIPAA((A$∩∩f@P~∀Kπ¬β$d∪!→%$A∧XQαR$∩v@J4∀CπβHpλ&"e∩aα¬bB¬$$KY↓X∀PJ*JN ↓"Q⊃Q",≤HHD%∪αB4i94⊂ λ∃λ⊂ ∀B]P∀εB⊂ab"⊃ i≥∧R&)-⊂⊂V⊂λA		; )
 π	⊃	$`(M~.&Bλ∧∧
@λ⊂ ∀BDYP⊃0,
∀K
	∩ε⊃P&"2∃Qα¬1D	$$↔6∪
@@εE∩Pb")
αiadh⊂P V∀⊂T@D]LY↔εE	ab i∞α	HLRX A,(A)↓	;13&
%CDR:	HRRZ A,(A)	∩vDh\
∀%∃%'(Q(R~(Kπββ⊃	$`(M~.&B
α¬!αλH%mE2p4)⊗≤
ε∩εA)	;32.
%CDAAAR:	HLRZ A,(A)	;33.
	JRST %CDAAR¬
%AADADR:	SKIPA A,(A)	935.
!CADAAR:	HLRZ A, A)	;3&.
∪∃I'(@K
β	β$4∀~∀~(_vKπ¬%π	$↓utAβ⊂A∪πβ⊃% A∪X
J@hP4(Q'3KZλI∧*∧iyDd⎇y→d:¬H_$d
	~2∧
λJ$u8hU∩¬hX5$⎇'$∧<MhYb¬$α⊃(	→β#'VS*fa"T∧¬
;;8ε@A∨_AαAπ¬$[π	HA∨!Iβ)&|q1αN
Iα91¬"",dλ4
∀8J%@9β⊗Y.H$iP*∩ @
;8εv@A¬	↓%M&A∂↓)⊃
A→β'(AI∨ ⊗RLr∃α~⎇⊃αR"
!α>B-∩εRε|q9↓αtzR¬ααI∧
"λI∧(h'73@4λ∩3Hik3U)XQ0@	~h∪SjD∃∩⊃$
p31$λ4h∃	λαP$g⊃"hλ-NUMBER-FOR-CKM@ILED-CMDE
9;; ALSO, THE TMP !3, BITS ENCLπ	
A∧A↓π=≠!∨'%)∨A=A)⊃∀Aα[λααNBJLr≥α→jDhh'73@4λλ ∀H* "P∪ c ∀5≠↔' ∧∧`:⊃0	 U$gg  - !↓
&QαAEα~⎇⊃↓
⊃⊂∧∧@Qλ∧λSt@∧ Q∀Vλ∧@
;lp
↓↓⊂¬∩¬$λT∧L@QSh	@*fa"T⊂ ∂F THE "TAIL" - & @¬∪)&PE)β%_DA∪LA%≠¬∪⊂~∩-⊃α>→h!mmX&¬6 ∧¬≥¬)→d:@λλ⊃%HβP∞,  TAIL ∧A>2↓∀HH∀"∩	~2α∀HH∀"∩⊃Q#K[4∧β~Jλ¬∩λTλPSk∀⊂4Q$
⊂⊃4hT⊂π ∃M@@%&↓%β≥	=~DA≥U≠¬∧ααP≤Dα0r∧
⊂⊃(λdπE@ILAR
9;; 	USES Tπ⊃≤↓_∞@-J
U%$→hr∧∀~:B∧U:∧∧IJ2¬$λT¬$DT∧T
(8E∩¬)zU$LhZ2`HαC"DXp4PhJL¬∧FBαIRP X,$[A,@
AA(AD1	αY	⊂~∃ββ∧Yββλαbε∩¬d
∩⊃HH∀
DH_Bd∧H⊂λHα"εE⊂```@,AAAD1ββ	ααbεε∩ ¬D$_⊂λ_⊂1⊗⊂b" @,ADDD
λ@AAA,@AAD,@ADA,@ADD,@DAA,@DAD,@DDA,@DDD]AD,,Xε`Xb4⊂`@1αaE #⊃Q#αc¬FαcαF∃C
@+!QL¬F	ε¬¬Fβ"L%F+#ε∃α_V_K_V_nU&⊂,[0,0
2,3,2,3
4,5,6,5(λhXTXlXn4⊂	EAc	E #⊗!C~F⊗BcUF∪"c⊗qP@&,&∃α_YεYV_Z_ZV_M⊗_[nCE	`5hzzKε¬0C$~(∪β	>LjTW)1>db\αYskin≠πK∂'⊃z`;&5b←W!Q%$
)Y∀`!α@

ICADRP:	PUSH P,@π
∪0D∩∩fW%_
R⊗α)dBβ0p*(q∀T↓Q@∧e)T⊂*⊗$PTεRP
λ	 CETO DT,
∀∪A∨!∧A@X~(hQemm¬~.&B*α&→α≤
J∞∩⊂∧∧5,h:DL@qKλ
Y5∩λ→βb"P∃dπRD↓∪⊂→ααJ@hT_5e∃β!_4LDλ∩e8~ HJ∧∧βL6≤.7 HαB(λ`df"H V(aQ ∧DDR	   ;Last@πβ%π⊃$Ags4~∀%αα*JN ∧αE"α#"F(⊂1Hd&)-λ**⊗∀⊂Th
%CARCDR,QCAR
∪→M⊂A)(0Zb
∀%∃%'(α↓E"QHh  ( c\8∧TjXTTc!∧¬∀~(p
mm¬~Rε:$
J↓αLrRεJ¬∩⊗@$X λ
:0TTdλSt@
I⊃(∃H~R3u*4⊂p4EXq∀C!πnn`	@h"a U$gg)Kα THESE CALL A↓∞⊗:%∩ε!α$*≤@q⊃4D
p∧$aR⊂ g *RSET
0⊗@YYα6>$)αB⊗α(d`:S4h
K4⊃(λd"aeRg#P'Sα THE OPERAJD AT EACH S@)∃ \
∀4⊃π%'U
JMβ!P@)4Tλ¬	⊗p%Hλε `K b⊗"⊂T∧DD
λAAA1ββλY¬	αYβ⊃λY	β∧Y↓βλαb∩$∃HD$Q(∀∃H∀EH∀$∃H∀$EH∀$∃H∀$EH∀$⊂+⊂(Hα"εE⊃ ``@,DAAD1	β	ααb∩ε∩ ¬D$⊂0 ⊗⊃ ∧AD1	∩∩λ¬D$⊃⊃↔!QPh6∧~L¬∧e∀h⊂#⊗⊂βR0
TARMIL∧⊂∀!Q#@7nh∪λZα⊂ @=0, DtbP⊃αr⊃αHZB∧≥{∃@*H⊂Q$λ(⊂p*%0q∀D	t⊃4H~⊂∧gg⊂+dj∩∧¬∀vβY`~¬IλR¬4~)∀∀HZ2¬:K↓EJE$
$@Qr3Ht⊃uQ*$≤¬V K ∧p≤\αα2-Dλ∩∧uYX$-∩	aP@'nj`⊂⊂ ¬ COMPU@)∃λAπ∨I%⊗N∧z0∀⊂∧g#H* ∂ CXYZWR AS FLπ⊂∩∩⎇:Mi↓h!mmX∧∧`$∂""!∀λλ⊗D¬hλ@⊂λ⊂⊂⊂$Q⊂+V,,P i⊃P ∞@+1_∩)Xπ3@4⊂π⊂≡BDP⊂⊂λ⊂,U→λ∃P-⊂
P~⊂⊂λ⊂⊂$cλ+PX↓β%
A9+⊃0hQ`≠[4	bβ@(λλ∧∧λλλ¬Mλ
d*L@¬4⊗H
dε,λλ∧∧⊂∧c⊂∃β @∪&↓_
V2`h ∪[50λ	@⊂≡P+J_X⊂∃H,⊃~
P,U→λ∃P%⊂
P→_⊂λ⊂⊂$cλ''g"H'c⊂+K,∩,V⊗α ARE NULL
0⊗@YYα:>$)αR↑zαR"→hu≠Pβ"Ng]P%@1] THIS REPRASENTATIOL∧A>2α¬α∞
⊃6∞∩⊂∧∧`:⊃0	 U$gg IS EASILY
λ;;;@¬∪)/%'
A	∃β⊂≡∩∩2¬9¬""*λ∧∪j95∩3i@⊂ ∂F THE FIRSDbA¬∪P~∀`-β32∧LhI∀85⊃4d
⊂∧"P∀h i*λ'c⊂*∩ ¬ @%∃' A∨_A)"*α⊗ 49xDLTuD¬ 9⊂∧adλ$ iFBα;;+0 FOR CAR0@bA
=$Aπ	HAβ(A∃βπ!¬α6N&$J0≤@KC"G]]P-L,P#'T⊂ g,H)bj MF OPERATILπ⊂~M∧~6 -	HU$(⊃TIYαP!`T⊂ g"λ!b),
0⊗@YYαRα∀zV≡↓∧~εεIbα≤J ∧¬KK@⊂∃'P⊃&⊃hεEL M" CAR-CDR'S (THOSE Tπ∪)⊂4⊂vvV↓~AαOLAβ≥λαα⊃=5∃B¬$	~2∧,h9t$Lhpλ

Sq∃(_4h⊂$λpπfh⊂aj⊂"SαC@∨	%_
:ββ"G]]DDBP⊂⊂⊂λ⊂"U@1
0⊗@Xπ2¬<~Iα∧rλ∧P)@!`g#H!)'fH→⊂ ∀O 2   -1 INAH	+≤JP∀+C"G]]FE∞β;;  L¬β≠
$A≤@Q=∞@$→E⊂LR¬λ$L@P4V%⊃ NfgP⊂⊂!PiP⊂λ→		   10
λ;;+  CDR	   3		   11~∀lp
m↓αα≤~!∩αα∧A⊂Jαε⊂ε↓α@
;≠8ε@@A
β	$∩@@j∩$@@b`D~∀`-β32αα¬`α`$	C"G]]P⊂λ!b" Q)	  31↓	1110!
λ;;;  CDDDAR	  36		1111⊂
0⊗@YY↓↓α≤"∩α∩⊂I↓↓Mαq⊂K⊗∩∪λh!Q hPc\:"α∧≥&∀∧
∪_∀∧≥∪$λ5∪~λ:#:∧:&B∧≥&T∧≥∪aQ hPQ(5∪β!~4\MλT¬2u*8U h!∀∧U∃:@∧≥∪⊃Q M∧z∧¬αeAQ LU*:B∧αX8∃∀≤J%Sd≥*:T∃∃56∪rDe⊃∪@:520i4∃Q4J93sHλitH
J*q5πT⊃R3↓QA"Pj&,B4
Zr∩H
¬∀p5Kεb".h9s0∩)H1λ⊂iX⊃(⊂*:u31*4∪P
fPaiP)Pc"FE⊂i_`Mαfgk"RP"⊗∀⊂TBE⊂λ⊂→"$Q⊂-fgUαAI T,(F)]400  @dYπ∃~V
J~YD%@4Bβββ∧∧∧M~λiu∩∧8⊃d$4C"H~LNB*9su∃∧λλε&)BDYad⊃a` FMR LIST DYPE~∀$A∃%'PAπ$h4⊃π$fh∪!%≥∀A(Xb$∩w'↔% Aβ↓ββ$A=!β%βQ∪∨8hP%αN\JB¬α"a"⊃∧hP%↓αDbJiα"a"⊃∧hP&J>"αQ15λh(&R∀r∃αQc9]H∧KZN.&αα&→αb1α∩|r∀4(Jα*JN α≥∪!Q$
∪w!∀l]hY∩∧
EλBHh!→%∃≥D
%≥%ε1⊂K\9yU∧LHXB∧≤xHR∧
::Tl-4	e,L_:2¬≤_hPhPβ"Pj&∞B5
)Q(∃¬F ".i_H∪Q+
λ⊂4Ht∩4sDzλ⊂(	I4uβ!!(⊂	eRh P)+!b)αD]`∀HEHAπ!π-∧zVQα:ε&:≥!αB⊗∀j&NNL∩2&RL*L4(J↓α6>4)αI24~εH4PJ*V6∧qαI2≥⊃T4(M"J:9∧!15DHI`≤Ld	tte∀	dLBλ→d"∧I~5%~λλU∀l~:4L∀HQP@J	*%≥αλ:#(H↔:DDd	D-λ∪R)D⊂Q0i@d¬E NIHλ@Q
β$A≥%_R@@h∧αD≤J λ	@$f∀P∂P ∞IL
∪∃I' Aπ∧Y↓∧$∩w→M
PA¬=≠∧A∨U(~(hRεIUβ!∀821(
%∀4v)XSsβ!∧P%)∀h⊂!i
αλ
∧∪Q%≥
A⊂XZb~(∩A)→9
A)(αbNdQ!∩α∧**5"∧8 aQ@∧e)∀h⊂!`K ∧E@$$∩w2⎇~∃α_d∧`(αdj$⊃i⊂'$S⊂#'iλ)lfa∪βHλ~∀4⊂
∞I3P&∞εLqαI2b&NPhP%α**5"∧8⊃d$4B"'d∧@∪'PA)≥!α>dλ∃∀h∩⊂*4⊂3∀HX1⊗(λh23⊃(Eλ⊂	gH εAIL
∪∃I' ⊃α≥⊃L$↔9∀2∧8~"d≤J λ	@'j⊂⊃∪$i`∀λX@E'e≠¬∨_λXA>⊂↓∀t→D"`HαB"!⊃,¬P*∩ ¬N OK FOR AN@3Q⊃∪≥∞4⊂λ1nh¬∩∧	U∩⊂hJH∪U	λq
(	J⊂⊂qεD⊃P
$⊂b_P'∃$!bλλ'*$!Q→⊂'*∩!b~εBα	∀~(p
mm∧rR!β∞s⊃α~αI∧≤%$¬RεNd¬%∃≤X@λ
≡h≠p∪→α, try to dh∞AMαGS3J4(Q'2αDβP
$λ'⊂#'Sβ) @%∃)+%≥LA)"*α0∃$∧λ4
∩λεuiλαi"P
'*$ 0 FOO) @∪&Qπβ$αα~>≥Mh4)@4↓∩αα∧∧α∧452*@ f"g∃⊂*'P
!`i (NTHCDR N↓
∨=JH4)@4¬∧`*⊂⊂q
$⊂π⊂#∪βH∞@%¬∩⊗@%X∧SJ4∃∩⊃$
Q0	jS*⊂'cλ⊂π@≤Nαα≤%$z0hPβ"C!'*$:	P		5∧A$Y$4⊃≥)⊃
	$`(Lj6@4Y∀¬∩eJ*U$@⊃↔5∩∧α4h∧R,$CAR
	POPJ P,			;THEN RETURNλ
∀~)≥)⊃π⊂`t∪∃U≠!≤AQ(Y≥)!∪≤∩$s∪≥	∃0@D`λ~∀&-Bε!α
b⊂h!→%,M	`¬∩d:	u∧Pα".i*4uλ[⊂5λλitH∪JI⊂q∀AQ@∧e*Sh"P"⊂!`iαDXBE@π⊂≡XTα(p4@DλSt@¬	U∩⊂⊂,∀FB∧e))U⊂!`iβE

NTHCD20∀∪5≠ ~∃∧11"	Hh &N⎇→α_Q!∃¬-9	"¬αβ∪⊂*:⊂rb!↔u⊂2hTλJ⊃E∀H⊂q
*hε⊂)Rdh⊂$Q⊂)`∃CCESCFUL
	 JRST NTHER	↓; ERROR IF AR@∞Z@λα≤%*4∧M~λ~D`9αdaFB∧e*fT'⊂ ∩1_
R"≤!P$!→¬∃∃αH⊃¬E⊃
#!↓4rsjJλ⊃β	Jc"B$	U34	D⊃∪JI⊃0C!↓2∪∀K∧⊂+
λE ∧D]Q'i⊂⊃∪*$⊃εB∧h'h∩⊂(⊗εB∧@
NTHCD4~	HRRZ A,(D)	∩w→_∞I↓∀rR"∞%⊃∩bλ¬⊂)8(⊃R)@ f⊂!Q)
	POPJ P,

λ;PNGL¬⊗A∧r≡*-λ∧¬∧tyi3∩¬8ε0iYβ)P)Vacg2 SYCOL∧bA¬~f∞yj2¬∧βPsi@)P '⊃Y⊂!h⊗* 


SEBTTD	SYH¬∨0Aπ>u~⊗HQ!P@*⊂π#g∩]	ADDI C,PNBUF-1		;MH
→2↓↓2A∪9)β%≤α↓5αBαZ$L4_Z2¬∧h→T*∧α1H
(3⊃5H→Uβ"A~pr4λx(∪∀	Hβ		;IF LPL@A∪LA≥∂¬)∪-
0A)↓
↓!≥β≠∀A∪&A%_	αBt∩V→0hP%αBαZ4DRλ∧
	PssJ1 .`
9h⊃q$λqsTd	5λ∃*∧⊃SuaQ@4ri~⊃(⊂EJKT∃*(#"B$λp23DλK∀4k→0Ss↓Q@∧P⊂∩))j SYCONS	↓;NM PERE COPY FEED@λX↓∃+'(↓β⊂≡~~αVAα≥J6
>`h &B-~")ααbBVJ≤zBd∧KZ⊗ %8T∧<-D
¬-∀Tλ4m¬∀	t2¬	h∀l(β"B)*Tu⊂∀)lagSαS		;AJD USE @UR@
Aπ=→'∧4∀∩*∧r≡*-λπ M≤9~∧<*	J∧d⊂α".h→βc!P∃h⊂ '⊂dbP$Q⊂#"aQii`i⊗FE('⊃g%Q:	 P@+M⊃∀A1!≥π∨9&~∃'eβ↔:≠P$$∧KZε <h∧h
Zλ⊂ ⊂∀lfa'S⊂∩P(∪ fbP∪$ib IS IN A¬
   BAKPRO
	S@↔∪A_	α~5H$%NL1αNfl∩6 "λj$,,I~5"∧YZ¬%JDλt`4⊃∪hλ∀⊃pc!↓(∩TJ:α⊂!lPdπF!
λ	SKIPN B1
¬"d$∩w&2αNf6∀z1α
dz≤Zλj$,,I~5"∧YZ¬%JD	U-≥Dλt_h!∀∧U∃:@λ
;0ssF⊃ B3)zβ"f@⊂T)`→MPNAME(B)	;PUT PNAME IHA≥J6
>bαα2≡≤X4(→Yu (αP F⊗βSY.OL@
XYM+∃¬∨U≥↓:@m∪⊂~&$Jε!α4
2V∃∧~⊗ $βλ∩*4∀p
g⊂'jg"βE⊂⊂⊂⊗!j()∪β
	EXCH A,SYMVA(B)		;P@+PA∪≤AM3∪¬∨0A¬→∨
⊗~∀∪5∨ ~⊗hα¬"~5IH$%\~∩Iαα;∀l∀yD∧∧dx92∧∃(XTdM8APE≥_9t`&L¬∧fSi)dP⊂V⊂λB$∩∩`.Lr&R_→B¬¬)z∧-∃K∀∧dM:@λ	~h∪R)A ¬∧bV!`⊂ K ##,BDYagS)P"hλ)lfa∪d⊂$"Pb"aεB∧b`_CH A,FFY↓
   NOPRO
	POPJ P _~(~∀@@↓'!πA%≡A∪9)'304⊃'3π=_b`(MαVN"RαA2ε<_4(→*%≥α
;∀\h1PP@"Nt
ZQ(∀k→0Ss∧λssThZA"T
;0ssJ7A"PH→t⊂SaQ@∧`gTf⊂!ε∪αPFFY2		;COH
&AU AαAA+%
AM3≠¬∨0A¬→∨
⊗~∃≥=!%≡~(@@A'Aπ!¬<A∪≥	M3"~∀$A!+≤B)αAd:R:B≤84(__D"∧%HU∧∀k⊗ hP_→u~∧hλd5K!Q"αα
:∧,≥λ)r∧LjJ5MQ!∀l]hYR∧
J;∀m∧h→T*D%⊃PPLYzd*∧∃K5≥Jiyd*]9∃e¬-%EE≥,h)u,TKTβ@:v+T
ZH⊂R*D∀p6*4⊃06((αP!"Pb⊗gg∪,BE∧Sek"fH V)lSi!T!
FA! Rh)'FB∧iedT ¬ FFY		;IF SYMBOL FRAELISP EMPTY, GO DO A GC
↓ JRST SYCGNH~∀β!U'⊃∧A@Yβ∂ε4⊂∪∃%M(A'∪
∨⊂→HhQ↓↓αtzBJ<hP4(∀Uα:∞>u→h&B-~!α~E↓2P$KZ∞ <h4∧
¬	h∀l*	I∃≥"	zU"∧xd¬∧t*X`hP→Yu (2(⊂%IR3β!$λλHI1H⊗iYuQ2$λi
⊂e≠,+∀	hU1C!*⊂π#Y∞α	MOVE B,A
∪≠=)αA	PY!≥¬UZbQR~∀∪)' A(1
/π∨9&~∀∪A+'⊃∀↓ Yπ∨9&~∀∪M∨∃∞AY!
∞H~∃π↓a)∀d∪)%'(AA∨!1)(~∀_w1π=→&Aπ=→&Aπ=≥&bA
∨⊂~M~↓∩:∞|rM↓∩D~>*M∧b&NQp∧α-∧IId
αXλDeD4∧U∧⊃⊂h∧[⊂ssJ4	0siJh	0iyβ)X@	acg)LP∩aY∪)P∩!L')P#∩l→⊂#∩l_P#⊗!gg)H#$l_PP#+aSe)P#∪!gg,λ#&'`U→⊂#&∪`j_P⊃&!gg∀P#(!Se)FEβE)ja∃*&∧f∩ij⊂)T abP⊂eg!bT)FEεB≥]]P∃$ iP∀bj⊂'Q⊂!gg∀bi)P∩iP*iQb⊂+dU$$g∃$"P&∩ih⊂)Vij"fK∧E≥]NP#g&⊗P P S ⊂!⊂i"P!S'a!"T"b⊗⊂⊂g"⊂*∩ P i⊃jfbg∃)P&jTj⊂''UεA≥]Nβ BE P@D QUANDITIEC.
~∀lrvA
=$A≥π=→&@1¬~⊗∃αU*NQα∀*~>J*↓αε∞|rMλ∀SZ2∞≡u→`&R∃R¬α	biD$↔5∧t≤yj2∧
∀πRαD9ye~∧∀	dLBα#"KλqsTg!(⊃6λd⊂!ε⊂D@]T⊗!cg)H P!∧H≤¬ (CLπ⊂~M∧⊃α¬$hR∞ <h∧nA→∀Sλλ%⊂#"D∧λ⊂tλXt⊂	'H$g ∀C2X
CMH
&bβP&N.Mα1α¬d2~L$KZN.&ααV:2-~Mα~∀*⊗"~:B∧,Z
EHh!∀∧U∃:@λλec ∪3
∪aβ⊂A∧0QαR∩$p∞BV ∧¬∧|→jD-∃4	∀b∧8YDbbλxU"∧8J"∧|dλe∀YI∃≥ Q$αα¬λ:E¬∀qQ L-λ9α∧∩Hhe_H↔84%∩λj$,,I~5"bλ9u¬J	xb∧≤YIB¬∧βr3JH4H∃	@P!εEλ⊂⊂''T)'DDB]P∀!∃j⊂''H'c"P⊂h¬RREL¬)→2↓)β↔LAβ	-¬≥)β∂∀A∨A%(R4PJB>BRαA04Ph!↓↓¬~Bε∞α
$j∧α3UλY(λ
AH∂
εLp∪⊃→HAαY∧$∩∩`.$yαRαM→αRt
¬∀⎇HX5"¬	y∀e$X*2∧∃)yR∧≤1Q M¬X9∧R¬¬H∀<_⊃↔5∧4QSj)(⊂ λx4PP(x(⊂siI⊃0u	→β`∞
   NOPRO
	JRST CGNS1	↓;GM TRY AGAIL∧⊂∀!Q#@7nh∃		4h∀hZα⊂'cλ!cg)Qi)P$TP*$"H)bb AP
β∪1β¬→
↓)≡A∪9)β%!I ∩⊗ ∧∧9βb"WβE_ 6βYαRλ[∩∧l→8R¬≥X∧Q$
⊂⊂5∧
⊃∪λ
~α`g*∩h 	ES D@≡A9≠ ⊃α<*Qα→jD`4⊂ε$iU⊂)`∀RUCTURE(4Ph!α~≤z2MhLj>@4Y∀∧%∪R3↓⊃,¬`∪U@R  "4⊂∪D~!α¬d⊂4)∩D~0≤@TjB)*tλ∃¬J⊃∪∪IYb".j:0T@⊂∧E∧bV!`⊂ K!αE∧R)h⊂*("&'∪eFE∧R))b @π⊂≡~α1P@HαS∩*:α↔⊂~	AO@∃∞ααQ2I~5"s⊃⊃∪@9α)`∃BR  !X	α→Hh &B⎇↓αAH⊃⊂HKαj⊂i@dεS A B C D)  :α↓"∞≡u→α¬↓D~0≤@Th⊂D¬⊂ssJ4⊂h⊃¬∃*#"A~∃0	dλ#(λ@,R		;THIS RMP)∪9
A6αZ5"¬8~d*¬$λ∃~∧9yU∧LHXB∧≤xHR∧≤zYe%~	yb∧MAQ LlzhR¬∩JA⊂K\β∩4jKh∃i→⊂ε⊂+Pg*⊂!SβP≥(↓∪⊂→αα αj∧→J4j¬8~d*∧βuQ*$∀⊃∪	@&eFEαe)h⊂∃⊗("&∪αMK
	PU@'!∀A
⊃@Y→∪'Q0f∩w1∪')∪→2Aβ→0A¬+(αα2εN ∧∧
∀uAPPM	zα∧5λ¬E⊂h!~∧⎇∧$
α`H⊃↔2¬<~Iα∧d~:B∧
(p∧
~λi∀tDλ4%⊂β"C!'nnh
I⊂4h
85λ∪hd⊂ssJ84Th	~h⊂p)I⊃1λλjSs λ→s4∩)H1λ⊂ix⊃+C!'nnh
I⊃(λH8∀H@	Z4uλ	iuλ⊂HT⊂(∀λIλ∀5(→U∩5↔h∃∩λTλPp*$H∩4d
⊃∪∪IYiqAQA"I*λ⊃∪Pg↓5∀VH∀⊂K&⊃"I4λI⊗⊂nA∀⊃6⊂i∧⊂K⊂!QI0⊃	HnB0h→3λ⊂%IT⊃∪	A".uHZT(⊃H~uλ⊂iλαaeP⊃'i⊂ H("&⊂∪*fa"T∧E∧P⊂`ff"H V'(⊃&$εEαP⊂%)∀j⊂∩aSdεS
	PUCH P,T		;AF PROBA@LY A PDL LUMBER,
	JSP T,PDLNM0		; IT'S SG SLOW THAT THIS PART
		∩∩lA	>-~9=D	T
¬HZ"¬≤βh∪*Xpβ!↓2TTjD⊂ssJ1".hλ&"b!R ¬ROUS AS IPλA∪L~∀4SY`≠ZλI∧M~
8U"∧xd∧@qPq**h∩4dλp3∪λXλ⊃TIyαP!gSh f"Q⊂!gb⊃W
;9; ARGUMENTS MUST NOT BE PDD QUANTITIEC.
3+; THESE ARE SLIGHTLY FASTER, SILCE T IS USED FOR JSP.

;;; FOR %NCONS, SEE JUST BEFORE "ACONS"
0⊗K9π∨≥&hA)%5∧A∧XZD∩∩vQ9π∨≥&↓αR@zQπ∨≥LAαA≥%_R~∀∃1π∨≥Lt∩Aaπ⊂A∧1α∩∩v!1π∨≥LAαA∧$@r@Q
≠⊂~M∧⊃α¬$hQ⊗∞≡u→h&"∀b%α	bB¬$4R↓↓αN∧*∞BJzα&*R≠∩d4	,~> 56∪ M≤9~∧r∧∃Hd5_⊃↔5≤\~∧¬,tHZ5~∧h(T,Dα4u∧λ34∃⊃"B(	*Tu∧XqsTf1"B1+λrλ⊂EE⊂*"!↔t⊂
jλ(#dg∃ i)P∩dε CELL$ GEPλAπ⊃$A∂↓
%1∪'(~(@@A1
)!%≡4⊂∪D~!α	d2~L$KZ∞∩I∧2J,YI∃≥"Dλ4`:⊗(∪hd⊂q3	D∀∪r)j⊃4@
Ih⊂C!$λλ∪Iz∀Sb!⊃,¬P∀⊂*j⊂'∪P ∂NE CUBREJTLY TAKES ADVANTAGE @∨↓∪ B~(∪∃%'P@Q(R4∀~∧@A'!
!%≡A%→)εEd~∀Kπ=→&fT%⊃→$A∧Y∧∩∩$s	≡AQ⊃∪&AQ~A!∀zR⊗∞ αB>&u"⊗JM∧2J>5∧:4(MαVN"RαA2ε<_$%nαλU∀4z)R∧
λx∃∀∀_xR∧≤yID,≥I→tp@"Hλ∧	St∀Iq"B2J*uλ	(9βg!XBDYcgH*),P⊂c`dgβE
;THAS ROUDIL@
A∪LA
∨$↓∞ <X	∀d,Dλ4l$U`α∧MDλD|-4λ∩¬∧IIdlZλ9∧,≤αh∪i@⊂!'j∩⊂ i#TFA∩aL')U∧T*id P,T		8πβ→→=(
αJ-"VJ9¬2&¬αα
U≤D!Q"$≠)j3@LXε⊂i∧⊂+⊂A⊃,pbH!`g USE $XCGNS, BUT IT WIH	1∧
2NtλDj∧→`λλ[⊂rβ!∧e))U⊂∩,!SβH
&~(~∀4Ph $!Q%≥0U∃	A3Q3(λαi⊂!SβH
'I&~∀~(~∃
∪`dt&U~AαQdJ~&@↓⊃∪@8S∪sJY(⊂
'H!$l'∃dP!gS+"a)Re`∞, FXCONS( @OPJ~∃→∪0bt%!∨ A@Y(∩∩$p∞~b≤z0∃~βλ∃	λαg⊂(∪h!εE⊃,!gg∀]				;FIXLUM CMH
&@4A≠β2↓+≥∪#U∪5
~)
∪ @	`&∞J≡∃α%!2bαLrV$⊃↔4L2λ¬r*I⊂∧g THE RAJGE MF @)!
~∧∩↓∞ε6<)αRQeY6bIye,mβ".dλU23
E23@⊂∃ a&"H'c⊂*S$hjbH#$l'∃diVεB∧P⊂%∀)j⊂#∃a`∂NS		3 TH@≤A9	≤α:Qα∩zα¬αJ,
1α∞|rL4(Lj>@4Y∀∧
dα3@_
**∀DB]a*iU⊂(!'UαIDE A POILTEB↓∪⊂~RzαR"∃¬"ε
2(h &*∃~Q↓α H4(Q$αα¬8λT:∀Sh	→β*- V∧A#+PdπF@&h∪'π∪A_AαY→
0∩∩m
+→_↓+⊂≡J ∧∧\h4αj∧→Jt
M4λ4l@Tq4aQ@∧P%∀h⊂ F⊂caRεB∧bd!R⊂**ε
 TFEλ⊂⊂$!U()'FB∧b`_CH TT1
¬0~(@@A≥=!%≡~(∪∃%'P@Q(R4∀⊂∀(hP4*~d~6 5¬!∀|αP ⊂∃⊗#&!SdεS		8π
→π=_
Mα<JR!α≤Z&Aα∀*RVJph  ((iD`85FA→Ttλ
E⊂∧c&∪`j∧DNβFIXNUI @)<A
→∨9+~XA→→π∂≥LXA!∨A∀∩∃
1≠β(bh∪!∨ ↓ Y(∩$∩w
→
≠⊂~MbαR"⊗pαB>BPh!↓↓ CXCONS CMPL1 DUPL1 DXCONS DXCOJS DUPL1

IFL DBFLAG,[
DBL1:	POP P,T
   SPECPRO INTZAX
DBCOLS:	HRRZS FFD		;DOUBLE @!Iπβ'%∨⊂→α≤z:N⊗⊂h(&N\JB9αλb~
⊂hP%α
≥↓α¬2:
P4PJ⊗b∞@αRQ1D	$4	α↓αb∞%αJ<4PJ⊗b∞@αRQ242⊂$$∧α∧tz
$xh!→T⎇∀YP∧"c∃λ∩Hh!→%∃≥D¬¬"HQ+PHK8Yd"∧xd∧L4dλD∧4H_phT_hR∧∧(iD:K1PD∧(9t`*nB4
Zpλ∀¬Jβ"Qλ).B)Yβk"dH V(b∪h¬BLE		0↔I%∨$A%A	∨U¬→&↓→∨(A%≠!	5⊂~R, 4(∀Xd~	jTkX∧c!α@		;EH
λA=A&4)αα
4bε≤4Ph  ()_db∧8ε⊃IH1k⊗aQPp!SβH
 @PJε.(⊂λ
E⊂p!SdεS		8ππ1π=→&A<JR!α≤Z&Aα∀*RVJph $(9U∧c↔!∃∧⎇∧
αe Q$αα¬8∧⊃(h)'P∩dεTZAX	∃πa∞ <h∧nA→∀TVJ4⊃QPa⊃,¬agSh""lλ'*fa⊃i⊂!gSαSEB
λ	SKIPN A1
¬ε~(∩A¬'@AαYβ≥
P4PJ⊗b∞@αRQ⊃D	$4	α↓αb∞αJ¬∀xQ!∀-D9¬%"Hhdλh$∧α∧tz
$hh!→TmQ3 λE*⊂%⊃ ¬∧e∀)j⊂∀∃∀@
]		0↔9λA>2α&~9∧~b
284*&4)α∞b4bε≥∩Xh"∞b≤z0∃≠!~¬-≤αλ∀¬Jβ"PiZ⊃.A→3uQ)∀⊂+∀(dπE@!10∩w∃%%∨$↓∪&Aπ=≠!2-Aα:Vl∩⊗JM∧r6@"	→U∧dYXT`*⊃1β!↓)1P(P ∞@+4c∪&~):∩%\*0∀λ∪qD	1Q(λl#& QFEεEβE$c'λ",#&⊂cR-FB ∧U@!0btβ!= A YP~∀@@↓'!πA%≡A∪9)5β04⊂
αb≤z0∃≠!→¬∃∃*4∧4∃!⊃∪@8∪u0IH+4∀HXp∧idSdε COMPDEX NUMBER COL¬'∧4⊂∪'↔%!≤Aα1
¬4~(∩A*≥↓α¬2:¬P4PJ⊗b∞@∧¬∩bλ⊃⊂hR∧∧¬D≥J
$hh!_UD≤∧
"d∀hεC!$λλ∪IZ∀Sc!!33uHY(⊃Kε∃⊂*#!%`DfShεEMTT$2(A)¬
KA	MOVEH
AλαaM"¬Hh".→9@L$Yzd,@(⊂
*→∀ DCE	JRSP (T)
α]		;END OF IFN DXFLAG
λIFE DXFLAG,[
DXCONS:	PUSH P,T	∃	U!_bt%≠↔-$AαY#⊃+!	`∩∩`.-∩J>I∧J→α∩-α2&∞-→α:> ∧∧L@4∪⊃)X3Q⊃(Aα@
	%FAC NUH
c≠L~∃ 4HI`≤,h@λ	@c⊂$c⊃P",#∪ cFEβ≥Rd*SαK1 %HUNKH@C⊃9⊗f@K!+∃⊗hα↓⊗∞bα α-∃λε⊂⊂βXR CXR2 RPLACX RPLX2 C@1Hf`Aπa$fbA
1$fA
1$f@~α≥E&6@hPβ"TjXU∃∪↓→∃3Rd
∀R3)~α 	VES  ~A
1$XAI!→βπ`XA"αYd[de`∧	∃3ReD⊂⊂
g∩dc →
λλ
(hR&~∃∧B2.IxreXQ$TE,i2∪@! ¬∩d∃g%Y:
%HULK3 44⊂@⊗",r-AhhQ⊗∞bα# hRX∧Tπ@∧f"T)⊂ ≠SIXBIT X@≥≡↓⊃+≥↔LA∪≤AQ⊃∪&A1∪' @4A⊃+≥,X∞∞b⊂¬u∃∧β⊂0k∧7↔#!α@D]QdεD OF @∪
∀A⊃:\b0≤8Q!P@HαR1I@⊂ λNKLOG,[
~∃
1$`(LRNAα ¬D5Dhf⊂HKαp	jPαR  $4⊂∪'↔%!∃α2rJN⊗ h %αU~Aα→d~bILHI`≤≤α⊃0i4⊂4Qj1"B4I@h∧ @)PXZb~(∪β		$A)(X!	$Q!∀U,Xλt*¬J@λl)→εBα	HLRX∧AαX!)(@$HI`≤@q⊃⊗SαUMBER@λA
_∞ -	yd,@U∀h	→β⊂&"Q*⊂$ S+"`∪
λ	POPJ P,
λ∧⊂∀(;¬∪∪αB2
*T¬⊂ K∀**)		0↔Y∀[≥U≠¬∀*⊃α∞|jB>~,rRMαLqαJ&<BQαλ→E (αiFEαh#h%λ(⊂

~∃I!→βπ`pλ&*≥↓αQHk∧e3⊃⊃∪@:u0TDεc"B*9p∧h"H+↔!)QhεE∧H%)`⊂⊃⊗!`_R3	∩w
⊃⊗∞X∧∧
∀z1P@!0p3)D⊂k∪Jλα L
λ∧∪πβ5→∃α~b0∃∧IIhPα(∩J*uλE6β"B$∧λ⊃6λd⊂ @,@ε~∧∩@A¬'@A(@2∧"2:6XH%nNL:!↓∃∧jVNQ¬α∩2iY2¬$α⊃(λH5∃3!Q@∧P⊂λ"hλCH A,C
λ∧∪%∨PA)(X4b~∧∪¬	↓%¬"Q1λ!⊂hPα2U)Z⊃q(
J∀T	KC"A→∀S∪$λi
∃
E εE∧R))j @¬%$P$%Nα(U%-)`¬≤,9yd"∧~(phPβ"TJ	⊗@≥αd))&H!R∀*∃∀@
	JRSD↓
J⊗αI hPβ"C!λv∀LfπB5∪	@'⊂ ∀0I~M]2∧$¬\	α2&≥!α∞⊗daα>I¬2ε"V*αε⊗2bα&Mα|Zεd∀PIα*J≥!α∞b∪→D$↔4∧L2λ¬∩λT⊂∧g"⊃l⊂$iH_⊂'iλ_@
	JUMPL TT,CXR3 &4⊂∪πβ%∞A)(0b~∧∩↓∃%'(Q∧R~)π1$fDp∪⊃
⊂AαYλ~∀β/QαA7∪9-β→∪⊂A∨$A]%∨≥∞↓→≥∂Q⊂A⊃,r-εThP&⊗b≤Aα¬2⊂h*∞b∪→h&6⎇2⊗%α ¬BD∩⊃⊃∪@8p∧"aRdg#@∀'jj$S P#'T⊂!l)βRPLAAX
	LSH T,-SEGLOG
	MOVE T,ST(T)
	TDNN T$HNK		;SECGND ARGMUST@@
A⊃U≥⊗~∀$A∃%'PAπ1$L`~(Lj>J⊗Jα⊃1HhQ↓↓↓∀"&→αβ9E≤BλEBE"≠VαeλYd[Q!∀YHR∧"JJ@HK8i∃∃≥Dλ∃∀~	ZU≥αλ(R¬≤β03	H4H∃	λ3C"A∀⊂U3*λq(∃
E⊂p)Z∧]@∪"g#j∩⊂#c⊂∀bagg⊃⊗⊂$bU⊂#'gdεEGATIVE
λCXB∪3:↓WTA [BAD @@+9⊗A&t"⊗aεhh ⊂L**5"αT∧jλe εEεBαCXBLht&lzP∀(⊃⊗∃*∧D]QhεE@%e)⊃β≥≤A∪&A¬!!β%∃_
R2Jα0≤\≠⊃P@M)zB∧"β _CE	ADDI D(B)
	HRRZ T _Q⊂R∩%\2⊗@$9∧9βb`⊂OL@≥(↓∪⊂→αα~T-≥I→t`@ ¬∧iRdh#bH"εE∧H$&)-λ*⊂(D)
∀∪
β∪≤APXZb∩$p∞⊗J∀zIαε2αε9ααYe-≤X@∧9q0∪iHαg*εB∧P%)∀h⊂!l∀→YFEαe))jλ∀#∀FBβ≥Ral∀⊂∩al∀→⊂∩i∀,⊂∩i∀,→⊂∩R*g%@1 !HNK2A %HUJK2K⊃+≥,f@K⊃9⊗`∩¬α*"V:XεBα	i5∀
∧Y∧`)m∀C!↓α@
;≠8ε∪∪
8A⊃:\b0≤8Q!PC[50∧;∀H∀IZαj$g⊃P#'iλ!cfh∩d"b⊂βKDE.  @ENK AN↓αPA∪9	 !∧J1αR"p4(Q$T
E'!∃∀⎇D
E"bV⊃⊂K]~Y∀ZλYe%∃∀λd`:H⊂siZ⊂3⊃(D⊂p3	Jc"B(_⊃∩(
J	
⊂%⊃ B2JY4⊃q$
∃	(≠∀LC!↓2∪∀K∧⊂+

J
#"A→TTu∧¬∃
#!! I0k
LNB)
TVHλ∃λ⊃∃¬⊃ B2J*uλ

E εEεB≥]]@∀( ACX ROUTINE FOR CMH!∪1λAπ=	∃8hQ`≠[4	¬,t4	∀b∧∃D∧$
JYR∧Ldλ"b∧→hD-B	→b¬%EaPS[70¬$DTλD
¬YP∧M~λzT
∀→jD,,D	d⎇αλIr∧∀Tλ∩¬∧ID¬
03U	~⊗+C!! I4J∞B4Izα⊂**⊗XDDNβHUNK SUBSCRIPT IS PASSED IN TT
α	ADD@∩AQ(XAα$~∀&U*6B≡*αRQ⊃-∩BaHhP&"Jdiα	1E"Q$∀PJ*JN"↓"Q$hP4)⊗∃αaIHLBJJ5∧⊃1"R H4(εU∩NQ↓E!$4(hQmmmα*"V:[	1↓⊗E*:-Ib↓⊗"VtYM!αr⊃↓⊗E*:-Q¬∩>FRLr⊗Mα4zIα∞|jB&2,!α∞>$)84)[YeαRD*N∃αb2>∞
"∃α",r.Mα|1αN&T)↓E1β⊃1↓Mbα6I↓ αNVB-⊃6FVL~.2eph)mmZαεJ≡,j⊗:R~α& 2λ⊃B∧∩Dλ2b∧~&∩b∧zX∃∀jHT,"	iu"¬It∧∀(⊂λ"∪⊂(j`S*$j$QiSεEβE∩d*S%X]∧Tedh'λ+&`eR*g%FB∧P%)∀j⊂∩g⊂eg!FB∧fgk⊃dP!⊗
 TDDNRd*g∩XP$iH∩d*g∩Y⊗⊂+Rh λ ON@
A,rVN⊗ α≤|Z	td3U↓Q@∧fgU dP K⊗XDDNβ BUT UNFORTUNATELY MUST SHUFFLA ARGS
	JRST%HUNK2	

%HNK2A:↓HRRZS FFH		;HUNK4 IS TH@
A∪5!∨%)¬≥(Aπ¬'
~∀%!+'⊃(A Yβ≥ε~∀@A¬β↔A%≡~∀∃⊃+≥⊗Hpλ&N\JB9α4jε.",r,$4PIα*J≥!↓⊗∞|rL4(M~.&B8α~~ hP%α*∃~Q↓⊗Dr-J∧hP&"Jbα	2∧hP&⊗b≤Aα	2∧2~ 4R↓↓αb≥"BJ<hP&⊗b≤Aα	242 4λL*b∞!∧	2λ4R↓↓α:⎇αJ<4PJ*JN ↓"Q$hP4(∀R*"V:[→h&6⎇2⊗%α
⊃E1λ5⊂HK9
Tt[4	∃~∧*Z5"∧λYd["D
tM$αλ∪ihαP"g∃ibb⊂⊂βOEPON@≥(4∀∪≠∨Y∩Aε0Zb∩∩lA¬+(↓+≥
∨I)+≥βQ→2A5+'(AM⊃+

1
Aβ%≥&~∀∪)%'(@∃⊃+≥⊗P~∀
∀4⊂K⊃≥,iαt∪!%%5&↓

⊂VD∩∩w⊃U≥⊗hA%&A)⊃∀A∪≠↓=%)β≥PAπβ'∀~∀∪!U'⊃∧A@Yβ∂ε4∀@@A	β↔!%<~∀K⊃U≥⊗ht%'↔∪!≤A

⊂,b~∀∩↓∃%'(K⊃≥⊗Qα~∀∪!%_AβHbQα~(∪1π Aβ$b1↓

⊂,b~∀@A1π)A%≡~∀%1π⊂↓β$bY→
⊂Vb4∀∪1
⊂AαY¬$b~∀%⊃%%54A∧Xb!αR~∀%⊃%→~↓εXbQ∧R~∀@A≥∨!I≡~∀∪)%'(@!(R~∀4∀vvA→←dAm¬eS←kLA[SgAQCG-fA←L↓%&↓C]HAI/⊗\@↓qGQ¬]OJA!k]VA¬]HAα8~∀fv↓≠]Yr↓[CWKβ→βO↔w≠∃β'pβ[↔KJβOSK∞s∨∃βF;⊃7≤¬v&*aQ$L4d
U≤,HZ5~e1Q hRY	d]∀↔!∀E∃+*2∧∀i↓3λHα(λ∧πpY(∞><Y(∞≥9{@-=λ⊂∀\β ofF
∪!U'⊃∧A@Yβ∂ε4∀@@A	β↔!%<~∀K⊃9⊗a$t%'↔∪!≤A¬
⊂,b~∧∩A∃%'P@K⊃≥-%α
∀%1π⊂↓αY↓
→⊂Vb∩$@@@WASGVAU`Agi%GWf~(@@A⊃
)!%≡4∀∪⊃
⊂AαY→
⊂FB$∩@@@mα@J\↓⊃`↔≠X∧π>OMε}fDλλm⎇]→;NNh≠qDλ!"H∧∧∪St
)c"B)*Tu¬

#"KQ @↓Gr∪Rj;Lλ∩
YRtr+(αP$'∩im_P∩'%imP  ∃NKP MHUNKE MAKHULK MHUNK7MHUNK4 MHULK5 HUNK

3 6l∪∪
≤↓⊃≥↔→=∞~∀~)⊃≥↔'h`t∪/QαA7≥=(AαA!+≥⊗@4A⊃+≥-'∪ **
t4λLRJNQ∧B2.NSλ4*",r.N&T)`$∧KZNV
⊂↓E↓T	dIH∀∀dQQ M¬X9α¬αH8dMC⊃Q$Dt:;#Pα33j@ ¬I T,(A)
λ	LSH T$-SEGDOG
↓SKIPD T,ST(T)
α	 JRST↓⊃≥↔'h`∩(Lj>@4Y∀¬%"F!P@MIId*¬EI∧dXQ!∩∧U*:Bαr6AP@J∧∧¬≤\~	b¬4X→4E,i1P@J∧∧α¬∧z	"¬αβα"'i g"∪d¬ COL¬'&↓β%
A=A'∪i
@d~(∩@@A)%'(A!_
.NS4(→Yu$E
α	JRST TRUE

~∀4⊃≠⊃9↔
t∪])αA\jVNQ∧∩∃αI~5"∧z$∧4Mα∪U)TλεP&Pe` ∃NK!P~~)≠β↔⊃U_
-hM~. =J@λλ∃⊃Rα!↔tp
a∀⊂_FEαP!))U⊂"d*SαK5
	S@↔∪A_A)(αa"¬$hP%α
∃~Qα~bN∀4PJ6 =hT¬"eJAP@Mλ¬4i	H⊂λ⊗⊂d λ@+9⊗∩αw%_
&RL
2&@(XB¬$βh∪I→β"S)
3R`≠Nα	LSH@εA(X4b∩%\b⊗εZ-→αRλTα)q⊃∀∧⊂!$jλ$g⊂)Rc`∞ OF TT
λ∧∪⊃∀b0≤Jλ¬⊗XT ∀			0↔≤*∃αλ→4l,Tλd`:H⊂
$∩iP"hUαI HAK
	EQP
∩APXQαR4⊂λ&Rdr0∩¬EESλhαB(	*Tq⊂∪d*g%Mαλ
(M~⊗Bjh∧αE"α#"A_3pRI@⊂*⊗↔X@
MHUNKXpλ&N\JB<T
E @ ¬∧P∩& ZS (T)
λ∧∪!∨A∀A X4⊂λ (αC"AQS2∃)@%ZP~	JUM@GE TT1≠⊃+≥-
∩]≤*∃αJ1P@L*:α¬%EH∃β⊂α".j:α aeH& 	ST O@≤AA	_@1αjε =YjB∧Ld
@hTλ¬3I7@∧fgUαN @)PY(∩∩m→'+¬H~∀&z*:λ@λh3∀q!⊃,¬ai⊃`j"P∩*g%@ @¬∪∞A∃≥∨+∂ A)<hP&&>4*%α⊃e
"V:XH%mαDz2↓αb1α≡M2⊗ 2λ~$=XYe%~ββ"A_p23λT∃∃⊗,πHNKLOG
	 SOJA T,WLALOSE
α	PUS@J FXP,ALHFKL	; AND ANSTALL THEM
λ	POPJ P,
λ;ALHNK@_A¬→⊃≥→∧Aβ→⊃9→λAβ1⊃≥→2↓β→↓≥10Aβ→!+≥⊗A¬→⊃≥↔⊂Aβ→⊃9↔~∀4∀vvv%∪
≤A!≥↔2|84(Q'3[Z	
TtZλ→Dd|8~DL|βH∀Izαj$g⊃iFEεBεEεE∞]]P&PebP H$*g%H⊗P∀*∃∀P$ TP' ∃MBAR OF ITEMS WANTED.
3+≠  THEL∧Aβ≥M)β→_↓)⊃'∀A∪)5&A
%=~A!	0A¬ %¬α6BBLr≥α≡404*εdB:.⊃PJBVN@α~bAe"P4!~¬-≤	$¬αd→I¬,t1⊃∪L≥(X∃$*λ⊂∧5∀X9α∧EYi2b∧→hB∧Lj:Ddβλ⊂*(th⊃J)s(∀λIβ"B)YuQ2$λK
⊂%⊃ .th~Q0hλ∀λεP S)cP*Tbb⊂!⊗P# iS'`bεB∧h'hλ(⊗ DBDW)bQP""&∩'%PεB∧e)hλ*⊗("∪'&eDB]a`g	j⊂(*U⊂("&λ(j`g∃$j,P∩dεTO A H@+9⊗~∀∪!%%∨~↓αXQ∧$∩∩w→¬'(A1⊂⊗⊗u!α≡≡-→α&9¬α>N&$J6)↓h(&N⎇~9αR"a"~BαH4(¬∧RJNQ∧
2"~eH4(→J4D~
JBbk⊃⊃∪@93H⊃¬D∀r1id⊂R5∧	sH∂'WH⊃5HYH∪U)XQ0	∪c⊂"f⊃d¬ENTS
	MOREI T,(B)
↓ADDI T0Q)(R4∀∪⊃
⊂AλYP∩∩`.tzP~∧α3@⊂⊃⊂⊗P&⊂ij⊂+SβRD ILTO WHICHTO POP	α	JUMPGE T$ALHNLD
ALHNLA:	PMP P,A			;LOGP TO INSTALL ARGS IN HUNK
	JSP T,PDLLMK
	HRLM A,(D)
ALHNLD:	SOJL TT,ALHNLX
	POP P,A
↓JSP T,PDLNMK
	HRRM A,(D!
	SOJA D,ALHNLA

ALHNLY: SKIPN VMAKHUNK
↓ HRLZS (B)
AL@NLX:	POPI FXP,1
	EXCH A,B
	POPJ FXP,


;+; ALLOCATE A H@+9⊗A∨↓'∪5
↓∪∃	∪
β)λ↓∪≤@QQ(R~∀lvv@A¬≥λA∪9∪)&b&j∃¬"=αRD)↓
Vu*N⊗⊃⊂αB>&u"⊗I↓B→]]];9U$4T
2"VtYh&*,jB2∃¬"Q2εdB:.∀KZBJ⊗≤*JZ⊗~αεIEd
IJ¬αiαN⊗*αNV
≥ 4(ε≤
&"∃¬"Q1J|B:.IxpK\X¬4jD∀⊂Q*84UQ$
β"B$	TTu∧λ3∩∪I8#"B*:0R(
J#!!2QQIT∃∃βλ→∩∪RhA".thY⊃0u∧λssThZH⊃Sj$⊂stJ(0u
96Q(	
3Rc!!(∩TJ:λ⊂3		RqC!(3∩∪I8∞B2J*uλ⊂)I∪RqEVm+JλE".q	~t⊂5λ→λ∃∪d	3Q∩*@$b*`S⊂$*g∩P!gg∀bi)P⊂ f'kCE⊂⊂)⊂b$l⊂X↔εEαi"h"Pj⊂$'∩f'cFλ%))jλ!gg!H f$'∩V.≡$∪%`OG-*RPCLT>
  RADIX 8
λALHNKF:	SKIPE VMAKHUNK		91 OR 2 @)!∪⊂~≡~↓5αR-~Qα~⎇⊃αVN*α>→α≤z2L4PIα*J≥!αε2Dr-@4PJ*J¬∧	2ε∞|rL4(hQemm∧BV:-dK;∪↔Cqα&M¬""¬α≤z:N⊗⊂α~>I∧BV:.~α>→α≤Jj¬↓∃qs'≠&+a`2λyu∀%5aPS[70εNvL[αεvuc"αβ∧∧β
αε αβ~∧∧β"α∧εRααεdαααεpαααπαααπ∀hS532εvu`λ∞⎇|Y≤g∧λ ∧εHλ
∧∧∞λλ∧ε-Hλε6Hλ
FDλλ&'λλFVHλ
&⊗A"Ng]P77Kα items:  2  4@p@@Dh	↓↓≠⊃↓↓Y ∧αβ'αβ∪Vdαβ+⊗$αβε 
↓QA"Ng↔h⊂`T'$g#HP⊂"$⊃ibP!SdεSERS E@+M(A!¬∃'%-∀A(@~(Y'
↓≠⊃+≥,n~∀~)%!¬(A⊃≥-→∨∞VDY6~∀@A'↓∃β!%≡↓∪⊂~RT
`$
∀
∩&@∧ε∪αpQ(4l@Ph⊃i	Rk↔¬@)(!g∃⊗≥εEαP λ@%I0
Mα42!-~α*∧≤UA↔44eX∧r∧
p∧cgλ!$j⊂P ∞EED A HUJK NMP∞~∀$A'.Mα0∩∧∃Hd4BαkTJλsP
∧NβINITIATE GC DUE TO HUNKS
∩@↓∃' A∧Yβ∂εP~∃π∨9
αεdB2-KEe∃∧9jBcPα".j@ i$gUiP$*SαK COL¬'∃→a↓αE*0∀[¬D∧E,i0%Dλπ↔.
∪'-∪!∞A∧Y~~@¬2`*T⊂sJAα@
	 JRS@(αα≤@pπ!P⊃d ∞K18]%!
_
P4PJ"JJRαRQEλ∩Hh*(∀$Mαλ∞↓QHλλλu∀∀I@FA∧fSβP
~ααRQHhdBZβP	(⊂dεT
	SE@)=~@@"λ¬∩H↔9U-≥DλdL@⊂ε⊂$Sα COMPO@≥9)&A<JR!ααI∧*α*Ye-≤X@λD
⊂πdg∃ ¬R
IFLE ,¬%!π9(ZdX↓%β!¬(@xc|X
JB≤rQi5λ¬B¬≤X¬∪iT	P	(⊂βH
(Vβ	"¬$hR&~≥αrJB∞u!5I2Xh ⊂LYzd,JλAC
D∃⊃P@!2∀S	∀⊃
λ∃ εE∧PαLT D,8λc>9%!π≥P|ZbQ∧R~¬:4⊂@A≥=!%≡~(∪!∨!(A @0hRt$¬\*0∀λ∪qD
Q0λ"Ph⊂$'∩d#cFB∧¬α]		;END OF IFN HNKH	∂∞4⊂λ1nε$z5αH~D`9αP ∪PAP@∨~ααNBε ε∩¬¬*	E≤*λ∧∪	~uλ∀
*⊂π$fλ)(&$V⊂)bj∀& ijλ)(!g∩d⊂ ∪TEH
(AYβ⊃2≤)αZεdb0≤~λ¬P)I⊂h 
@&!g$S∧@

SP¬)Q_∪β)=~PA∧b&NQbαN⊗R∧b&NQbαεNN|→αε: ∧∧5∀_Yd%_Q!P@HαP5	@d¬2	LSH A0['∂1_∞≤$KZ≤dλD`4⊂ε)dλ$"`∩E BECAUSE DMHO(αα0∀11⊂⊂i#FEαiadh⊃bP ∪T(A)		8π
β→M
A>tbeα~⎇⊃α:>p¬T
∧βs2(FA∧P∃ - @ A(	α∩$p
α~α(T*@4p
'T cbP∀'`	NTERS
	  MOT¬⊗%∧	2RJ-"  (αB4	Z⊂¬⊂(∧@


LATLπ⊂∃@!⊃⊂HK8∧ri~λ∩1Dλ4(∃λZuλ∩*4∀p
c⊃$adbSαT FOR E@#Uβ⊂∩~K⊂hU8∧⊂*IpεU∧R*f`"H V_T∃∀@		;SK@∪ ↓∪A≥%_@A<B&∞∧	∃~¬8ε3(	q
#!)h j]	SKMP	(A∧Y'2∩$p∞ $X~d-~λ¬⊗*λαP!$U)P$gλ**εEαP!))U⊂⊂ ∀$~∀&U∩NA↓묬"HQ!P@@ ¬()∀&)b]αe*fh⊃P V(∀(#$fβE	JRST FALSE
PLAST8∧∪'↔=)(Aα1'2W→L∩∩w≥*αI↓λ∧αj∧hZDBλ
$`:⊃0U∀⊂ε$iU∧A∧P∩))j PRPLSE
∀∪!%%$A∧XQαR4∀∪!∨A∀A X4⊂⊂∀
¬∩B:&cP&"J∃Qα¬2tJ2BJ⎇αL$%]~B,9_∀b∧λ_4Z∧iz"∧t→AP@M	z∧R¬¬APPH!Q%∃∧β∩6G↓2U3*λ(⊂#
*∀sR)A ¬∧RUh∧A NASEB
λ¬'%α2&N π hPα4rizα*⊂ K)lUf∀DX@'U
I↓α λ¬T∀q5∧
∀StλZU⊗(	I4qβ!↓(∩TJ:α⊂!(∪$iεEαd))&H!⊗∀ JF@
	MMRE A,B¬
	POPJ P,

λRPCNIH:	HRRM B,NILPROPC		;S@!∃∞&εbα"ε∞Xα~>I∧r&04PJB>BRαA04Ph($
≥"⊗ 5G!∀l]hY∩¬%EE∧
H⊃↔4<-D
5"∧YjE∃Jλiu∩∧∀	∀r¬JAPPLJ9α¬%EEU≤,yIt8H↔8d`:H⊃4hT∃r⊃*((⊂	h⊂abP&Si"P$Sh'i*⊂g*⊂*∩ g⊂*∩d¬E
	MOVE TT,ST(TT	
∪∃I'(@QPR~∧~))β→→
tβ/QαA7≥=_	6NLj
>1αiαZεe*∃&∞,b162|~εRε|qεt∀PJ*JN αRε2d→D4*4
22≡≠P&BV≤AαA∩≤2&aDhRRε2d→Eh→*Tm∧Tλ∩e4H9dL`Q!∀U≥∧
Be≥λ~D`9#"B$	TTu∧
P3∪λ8#"B)	∀VH
J
⊂%⊃ B2
*T¬⊂*∃⊗⊂**
FE∧aPdg⊂*∃⊗)`∃NBOUND
∩AM)4AQ(X~∀%!∨!∀↓ X~∀4⊃-→π9∪_t∪5∨ ~⊗JαRQ24r&04PJB>BRαA04Ph 1nN
~NEαα8∃≥≤βphλ~tspdλ4p	hH εALSE @∪βM'⊂≡
∧JεNNα⊂λ	_4p	aL⊂ 	ASSC3 IASSC7 IASS@π0A∪¬''εHαα&εNdzMα_~5≥∧	∀
≥8∧1D	04ui→β⊂"$Th 0 DIS@!1βπ
A⊃∪'!_HA∩~:∧cλβ"C!∧¬
SASSQ:	SKAPA T →βM'"$KZ`≤L~:5
hβ"Th~tspg∧fgk⊃dP ∀1∪β'≤z_h!~¬-≤α∩H
¬λ∧")
∪π¬→→@@XQεR4⊂λ&B⎇α)αA`h ⊂@ ¬ iTdπC 4%'↔β!∧A(@2≤
NNx1⊂K]9_∃≥≤βpw!QP4tj↔@∧fgUα@∩APY∪β'M"~∧∪A+'"RαA1
@
!⊃,¬W)QbP ∪SGCP "α↓5αX¬4jD∀⊂	"Tbi+"HTAILS OF LIST
IASSC7:	SKOTT TT,LS
	 JRST IASSC4
	MOVS T,@(P)
	SKOTT T,LS
	 JRST IASSC3		;    "NIL" ENTRIES GET BYPASSED HERE
	HLRZ B,(T)
	AAMN @,-1(P)↓	;-1(P) HGLDS ITEM BEIN@∞A'=+∂⊃(4∀∩A∃I'(A∪¬''π04∀∪'↔%!≤@ZHQ @$HIe +%
αJ∧iH∀:βT¬αJ∧iz"∧
::∩b∧iybjB∀λdm∩λ~5≤|1Q J∧**5"∧_~5≤≠1Q LlzhR∧
EV∩Eα⊃Q M¬Z9∧R¬¬HU
→APPLYze~¬EHαEα⊃Q LUYZ∧*∧∃I∀
≥860hT_~5≤≥π!∃∧⎇∧
αd⊂Q!∃∧⎇	∀¬αc1Q LU*:B∧L~:tLpQ!PTL~:4≠#!~4\M	dαEα⊃Q LU*:B∧L~9D⎇_Q!∀U≥∧
BdlYZ∀-⊂Q!∀U∃:D∧L
:83_h)_∃≤dz7 M∧z	∩¬αFAPPM	z∧R¬¬APPh!Q$L
::∪βP→	E∃Rλ%E h)_∃≥≥_g LUYZ∧*∧%H5∧⎇	!⊂K\h~5"¬hZ%≤Lyd∧|2λ~5≥
λy∃$B	ir∧≤λX4\LhqPPLYze~¬EE∧∩Hα".d∧λ∪5*:λ∀∀HZq0UHT⊂4DH∀	(∀hX(⊃P*9⊂4β!!2∪∀K∧∃∃¬

""'P⊂⊂'∪j"P⊗H&jijλ''j⊂∃ibP'U$"i∃$ g⊂V⊂!ελ*∩⊂*∃ε@
	CAIE A,(TT			;   BECAUSE OF ASSQ'S FMR BEAD CHAR MACROS
	 JRST IASSQ0
	TRNN T,-1	↓;SPURIOUS MATCH OF "()  WITH NULL SLOT
α	 JRSTIASSQ0		; E*G. ( A , 1) () (() & 5))
IASWIN:	POP P,T	
↓HLRZ A,(B)		8π¬+(↓1∪(↓
eα≤Z&BBLr≥αε2αV&9bα2⊗ε4J::λi∀tAQ LU*:Bβ

E⊂HK4∧¬$→D∧L@H
⊂E∀λ ∧¬Tq1$
tqpjε!"B!Q@εEεB∧AεEβEαEεB≥T""Q*g⊂"∩ih& PbP∀,λ,TFE∞P⊂⊂⊂λ⊂⊂∀ S ∧ (ATO@~A`R@@"-∩J>Iα;r:> α¬α∩M~Q↓∃∧"&NBd
ε↔q¬A%$∀SY↓↓↓α↓↓↓α≤z2"¬↓∧
$βs ⊂⊗T@
;	       (RPLACA X 'PROGN$~∀`,J↓↓↓↓α↓↓"J∧bε∞⊃¬A↓"h9t`*h⊗*%∃!"Na∀λλλ∧¬	u⊂
)(& P`P _Qπβ$ααe%$hQd$∀¬¬∃∧β⊂0hD⊗λ
λ8∀H⊗%∃***!QQ∩4j	λ
∧UβP	αAm→∨(A∧A→β'P@ZA	%'!	β
C 4hR∩&N∧bε∞∃Ph &6⎇2⊗%ααJBbD∃⊃⊂K\α3TjZQ(⊃I~Tq⊂⊂i#P$TP P&∩ijεEαd)d TT$-SEG@→∨≤~∀&≤Z&B⊃¬~Q"R ¬⊂HKαr4d	5∂c!↓(∩TJ:λ⊃∩*:⊃β!↓33uHY(⊂
*∀!∀DB]ad"PβK @/!!"-⊃αN⊗≤z:"λ~$:∧α4h	I4p
 Lπ$A≥=(∩(LbN!α%!16N,:2>≤hP&N∞Mα1αN ¬¬%"α""'d∧AST?
	 JRSD↓	∪'∧aD$↔9d`:⊃+λ
:⊃0r(→α⊂ ∀REATMEL¬(~∃⊃∪'!_Hpλ&"e∩`∩∧~ %E⊂J"!↔pp4D εE∧R)&&@ AR1,(A)∩∩m%!2~¬α`hP&"J∃QαεIλ¬BD∩⊃⊃∪@8q∀@⊂⊗F@
	HRRM AR1,(A)	∩wI!→βπ⊂A0~∀%!∨!∀↓ X∩∩$p∞J⊗αJU∀rλεβ! ∧ISPL10∀∪5_∞@4Y∀∧5α(h)∪βG@≤~(∪⊃%→4Aε@1D	$$↔0

*⊂ε aPP≡_iU⊗`i#O⊂∪h)∪βGF)
λ∧∪!-~!αAdλ$%@9iu 4λ∧'!SβH
&@pe≥λA¬%≥yHh ⊂LYzd,Jλ⊂¬λJ#"A~∃0	d∩⊂(⊗∩∪αC@∨≥L~∀&E∩J5αλ¬DαE¬⊃⊂KZα⊂	(∪ ab <1S@(αjεJ≥p∧αDt9ye~βF)d"l~(srJ⊃Q M∧βtλ
¬⊂""!↔tQ5
ZSH⊃I~Tp
0i#FEαh ∂PJ P _~(~∀_vI∂∃(A∂PfA∂P`A∂PbA'βI∂(A¬%≡⊗α@λλ~Qq5ε∀∀∪QhZα⊂ ⊂NGPλbAA_
=F↓P@!α@
SU@¬))_%∂(X↓∂)_0A!+%αJ>AbαJε6α
$`:λ⊃U)@!j$gSαS

λ∧@∩≡-!`⊂M99u%$βH⊂%I∀jtk⊃ ¬∧P∩))`∀GET1
λ¬≡⊗α@g∧e*fT'⊂ @,FALSE
∪≠=(
,∀λ∩dt→J¬∀⎇λ∧c!∧e))U⊂#bjF@

GET0:	HRRZ A,(TT)∩wU'&A=≥→2A∧Y∧Y)P~∀&U*6B∃∧	2∞B⎇α( ((xU#αB2
*T¬⊂*∃⊗⊂λA$∩w6αZ5"¬λ∧Q*84UQ$λKλ⊂eD⊂4@_K⊂*⊗⊂⊃∧¬∀∪)+∪!
↓)(@24
2N∀KY"N⊗*α⊗@4→D∧
λ⊃5F5α⊂&eSαAM &0A'$1F	1αrJ,~*$
JDλ∀`(α⊂ i∀,XTFBα	HLRX∧AαX!)(@$KZε %9t¬¬∀X∧q**Q(∀ED∀q1$
53rε⊃ ¬∧aPdbP K∀!∀DNβALSO AR2A AND↓XA≤*∃α~
~2>ε h ⊂L**5"∧xZC@ ¬∧d∀)(
 TT, ⊃	PR~∧∪!→% )∧	1"R ¬⊂hPα4∪j	H⊂λ⊗βE
SARGET8∧∪≠∨Y∩A%!1"¬Hh ⊂LJ9α¬%EEU≤,yIt8h!→TmQ(∃
E∀p
(TT ∩~(∪ ∩IhR¬%EJ4λhαB4	@h 
 P,	∃βI∂(t%∃' APY'!βQ_∞ (↔8t-λ⊂4J(4∧P(∀'h"i∃,P#)∪βH
AβQ_∞ (β"B)*tλ∃¬J⊂π#bLF@
ARGET1h∪∪∨-∃∩A∧YEβ%%βd~∀&U∩NAα<*QDQ!PE∧βQq*G@2Tj∧∃∀jλ5∪s!↔p3UλZSP3∧
u0TIZαj$g⊃P⊂
GET PNAME @RLπ A
I∨⊂∃α
"0≤@!"T	hβj_Mαe)h⊂∃⊗('#QFE('⊃h_⊂~	SKIPN A↓	;SAVES B¬
	 SCIPA TTXεHHI9∪→:~(∩@A⊃1%4A	PXQαR$s⊂⊗V≥!α∩≥∧JQα&u"0~¬JD¬≤zλ~2¬$βh∩λ~Q#"A→∀TVDλ+*
Jλ".dλqsU	→β*gjTP#aP∀)'j"PβPION
↓POPJ @,
↓.SEE CRSR40
;GETL GETLA GETL5 GET@_b↓∂)_@A∂)0cαA∂∃)_h~(~∃∂Q_t∪'-∪!≤AXY%'P~∀αA)%'(A≥)1(h &N\zRQα⊂b2L4PIα*Vmα1α	d:⊗RHQPTq1∪λ↔@∧fgUα@∩AQ(XAα$~∀&e~!αR ¬Bm≤XyD`8c"B)Yβk"P∃*∩)j
**∀FB∧j&'⊃P**,LS ↔≥H4(∀	%∃≥Dλt-⊂ε_FB∧e*fT'⊂ @,FALSE		0↔
¬→_A∪9)≡A∂∃)_j@4A/>p∧u"∧λZ% hαQq*I
(
∧R*f`'λ V#bU&_FEαdgk"RP V'∩d∧P@%=!&~∃≥!1P&*Vmα∃α	d2ε"N(H%n~e*N!α$*≡⊗:-∩εB∃∧~εN∃∧z→α~zαBJ>¬_4(→*%≥αλxU$c_⊃P@(βb`∀L0:↓HRRZ A(A)		8π ⊗N-→α¬2⊂¬D
@∃∃
A ¬∧e∃dh"P⊂T!`'T%
GEP	1	`&"∃∩`∩∧∃E∧
H⊃↔4<-D	d-ED	t4∩λ∧∀IZ⊃0	*⊗P IST	∀∪)+∪!
↓αQπ↓=!∀4PJ"2JRαQ1αλH4(→Yu (αP!V⊂∧¬∃∂∃)_ht%⊃→%4↓)(HQR∩%\j⊗&E∧JQα∩⎇:0∩∧β∩4jD⊃qH

St∀aQ@∧a`Re⊂",(TT)
λ	 @!=!∀Aα`4(→
%∃Rλ5BD~α#"A→U34	@⊂!V#Qh∧@_h4⊂∪∃%M(A∂Q_`~∀_w!-"BJ>αα≥≤X¬_⊂β C@'∃(a"A
'(`↓∞N⊗ ε∧
∧*(U$Rλ∧t
)ql@⊂⊂βSED\Aπ'PdAπ≤*QJ¬α"≤J λ∧Hp4@⊂⊂β$CAR CSET4 C@'∃(iαAI⊂⊗Bα)uα¬(YUβαλ∧Q)Z(∀HYαh⊂∩@A%≠@h
α∞α8U#$4
$,@4λ	P∀ f`→PF@

8εvvA¬%≡Vl*0∃%4λ∃∀(⊂ ⊂∀lfa'S⊗⊂ @∃αALUE, AND AN IL¬∩_8∃$⎇%aPC[50¬$DT	∀`(α a`U'i⊂&Uij⊂'∪h∧ BE A @!⊃_A#+¬→)∪)d@Q%
β⊂∩D
DD
D
DD εE≥Nβ; EQL¬⊗N~α0≤2λ∧u(d⊂ ⊃UAH
)∪Q∪&A%&A+≥⊃
∪≥∃λA&p∧¬$DT	D@Qu0(x(⊂3K~β`lTKαλ
)Xπ3@4∃∩⊃$
P3∃(T⊂∧iP∀ ∧@→≥5⊗OλA%A:,~⊗NN
∩e 2∧
DD(⊂	lSa'f⊂∪`h	 BE A LIST
8εvv@!↔∃∨/8Aβ&A∧@E	∪M⊂⊗
|"&⊗⊃¬αJ>B-∩ReαdJN@"'0λ
I⊃(⊂hJH∩4d
⊂∧"P∀& 	ST)(4SY`≠Z	_b¬$α⊃(

St⊃**⊗(⊂)JQ01∀⊃0$Th∧S, THE NEP∞A4
2V∃∧JMα→j5$IHT"¬IλU∀+C"G]]P'U$"`∩WISE A NEG↓!%∨!∃%)2A%&A&u~Rε2d*⊃αε ∧¬$DTλe∀|h¬⊂∪βF @)!
~∧vβY`~¬λ∧Sjλαi*,H& 	ST,∧@A∪_A)"*αBJ>∧*JRe∧
2J⊗"eα⊗DJN@%4	∀`$⊂(∀	@i*$gS∧¬α;≠8εA>2αR"∃¬αJ>B-∩ReαdJN@"λI∧
α	~2¬¬X∧Q%D⊃3SjXp∧⊂'Q⊂*$"H(*`∩E PART
0⊗@YYα&M∧~0≥∧α11∧λ4h∩)Z∃0	"H& ijλ)j)*Ph∧U@%∀A)=¬α⊗J6M!αRα*αBVR¬∩0≥αβC"G]]P$Q⊂*$"H+ f*QP ∂F *PU@%∀A∪&A9_∞ 2Yi∀bbλ¬∩λYβ⊂ ∀HE VALUE IS PU@%
_∞Be< 4)@4εfdλ3Q⊂∃$"P'⊃hπ @!I_∞B⊗∃"eαI~5"∧8YDe~βλ∩(d⊂3V%D⊂4Q$
∃0	"Ka`∂NSED ≤~(~∃!Q!%∨ h~∀&≤Z>@%Dλ∩de5:5HH↔9DM≥J4∧TD
5LL)yE~∧~(R∧|8≠⊂hPα(∩J*uλ⊂j85
c!λtq5ελnB0h→3λ⊂EIT⊃∪	A".s(→q(⊂$
520i4∃⊃4jD∪s@⊂∃$"P)Qa`∂ND ARGUMENT
	 CAML B,L¬!	→ ∩∩w≤B&A6|16Rα*j∩⊗N-∩QαR-~Q↓"%:5α∞j1≡MHh(%↓∧RJNQ∧~N⊗Q¬λ4(&-Bε!α∩b∧$%\b6N∃αiα6V≥!αB∩dr6-α$B∃αZbV∀4PJ*NA¬!2B∩dr6,4PJ⊗b∞Bα↓2∧hR∞N⊗#αEhεlzR⊗%¬!1"¬Hh*∞N-!Ah&E∩Jiα a"Q$HIf&V≥!αNε4)αεIλbI2→∧2>Iα4
N2>!↓5α≤*∃α∩$*:P4PJ*V6∧)αQ∩≥~⊗QHHIfN⊗
∩≤Bλiu∩∧→`∧-D~:DLTt
¬∀⎇λZ%%HQ!∀De+$¬%"E
BHh!→¬∃∃$
BbEE⊃PPL8→∀*¬JABD~⊃Q J∧**5"∧:8U#Q(5≤-Fλ∪PH⊃⊃∪@91H∀
)t⊃4JK(⊃SjYQλλ→∪pPHZH∩3AQT∃4JJP4λλ~q5~*∩$)∪&P!ε
*⊂FE⊂)"`∀J8λ
¬'A%∨∞dh∪≠∨-∃∩AαX!R$KZJ⊗R-∩9αZbV∀∀PJB>BRαA04Ph*∞N-!]hεU*6B9∧	2BJ⎇α⊗H4PJ6>Z,Iα¬2tJ2BJ⎇αL4(LRJNQ∧~N⊗Q∧_4(4Ph*∞N-!Ih&¬*N!ααb∧$%\">⊗Nr:Qα"
2∃αN,~!ᬬαJ>B-∩Re1¬~=α∞|rMα>t)αV@hP&N.Mα∃αYuαVJ∀hP%α*∃~Qα∞≤*RADHIf&εL∩∃α↑rQαRzαBVJ*j∞>~_h*∞N-!J¬hLBJJi∧	1"¬HH%nBd
&9α4
:&2d	α∞>u~⊗L4PJBVNDQαA2D~0≤U1Q LE*+"∧∩H1P@L*:α¬"DZ∧$eλ1⊂K\α3@⊂⊂βASE SO@≠=→∃ααJ$L-4
Dz¬X∧q$λ(⊂λ"∪'*fFB∧h'hλ(∩!FB∧d))∪P V∀⊂T@D]Tbj(&∩ij⊂*∪P ∞EW T@⊃∪9∞~∀I
β	$t%⊃%%4↓αX@"λ¬⊂HKαp	"U*i'∃αALUE (@∩]∀X	α≡-!α&Q∧∩ε∞5⊃PB⊂p4G∧d&)⊗α A,(A)~∃Iπβ$βP&B>∧QαADH4
⊂Q!P@@ PthZα~≥∧T*id∀⊗ DDNβFOOL PROPERTY IS IN A PURA @!¬∂
~∀%!+'⊂↓ Y∧~(∪≠∨-∃∩A(X!αR
∃
'(i∧t∪⊃¬I0A)(0Q(B∩$p∞∞≡¬Iα⊗:⎇*≡!α|1αR"*αBJ>∧*JRe∧b&NPhP&BV≤B)αAd~N⊗Q$_$%m¬"=αB-∩6&Q¬""*λ∧∃*J∀St↓Q@∧d&∀-⊂ F
**∀FB∧a`dQP V∀⊂G THE ATOM
P@+I)%β ↓%⊗6αε2dλε∧d∀)&P*∃⊗⊂λD$~∀&lzP∀2(⊂%E∃
#!∧h'h∩⊂(⊗εBαλ
∃%∃≠ nt%∃+≠∧qα¬2∀jB-&↓P@!33uHY(⊂ ⊗∪αILPRLπ!&~(∪∃%'PA%≠@`⊂∀!Q hT8∧q*F⊂h
∧T*id%λ(⊂.,b∩`.D
&J@∀
t
Jλ¬∪dλα ∂ A @	>,∩2*λ9u¬J⊃Q LE*+"∧
E
BHhαB3)@hεE B,(A)
λ∧∪!-~")αα¬D9β`∞@&D~∀&E∩J5αλ¬BE"α#"A→αgk"RP*⊗∀⊂T@
	POPJ P,

λ∧⊂∀*∀*6AMβ!∃¬-9λ
¬⊂""'a`∂ME HE@%∀A∨9¬αVJ∃¬αε≡∃¬"Jε@hP&BVα9α¬αβ⊂B!↔p(∪i@⊂("&λ πC PROTECTS ATLπ⊂∀Q!∀l@uQ2$
λε∀ JF@
REMP3Ah∪!+≤B)αAd~N⊗Q$_$%@89u¬JλYd`:αcd LπA¬∩0≥∧X∧U∀⊂ε$iU∧¬∀∪!%% )¬"Q1λ@
!⊃,¬P*∪β DO RAM@RLπ ~∀%⊃→%4↓αP⊃λ¬∃¬⊃ ¬∧aPd¬E A,(P)
λ∧∩A∃I' ⊃αα(Tmβ8⊃P@!2⊂	)⊗α A,(TT!
	HRRZ TT,(A)~∀%⊃%%~ααRQE
BHhαB2J*uλ∀	ZRC!∧¬α;@≥∨Q→∨(A9_∞@"∧Ie,Dβλ∃
*1(⊂iIuλ∪λ~uλ∪λ~u
(	H4q~λ& ASTC@⊗A1β')π,A→β'PbA2
~QIα∀zV 4J∧α%∃YjDL@1(∀I@*"P⊃
λλ
*≥*αRR`J0∀⎇ED∧`*3∪∧	⊂4u¬D⊂Su)Hα(⊗⊂∀*g"$Sb@

λ∧⊂∀)iu$tzC LUYZ∧*∧∃H5∧⎇	!⊂K](Z∧d8Z2∧
	it`%3R3∧
P3∃(T⊂V(
Aα@
	JRST TRUE

~∃9_∞@#!Q"$uYIC@!2U3*	H⊂ ⊗⊃ f)bCE*)*Q]	MOT¬⊗%∧	2RJ-"  (αPsI@h∧:	PMP@∀A@Y≥∨(4⊂λ$!Q$d
8@∞A~∃0	d∩⊂(⊗&∪ i`∀CK	↓;SUBR 1 - GET @→βM(Aπ∨9&A>2α¬αI~5 HαB(	*Tq⊂∪ ib4
LAST52	MMP
A∧Y~∀%!∨!∀↓ X~∀$~∃→βM(ht∪
β∪
A_XZb~(∩A*∃~QαH~5#(α".d∧λ∧ @ @∧Aε@8X	9↓αq↓αiJ↓α∞ε≤(4(~94m∃∪@⊂⊂T∧@→&$∩w'≡↓(∞∃ααIt`9h∪Sdλq∀Td⊃ ¬∧P∩))`∀↓→β' εPHKαhλ¬λ(@⊂⊗α)  CASE
	HRRZ TT,C2	↓;FLπ⊂≥¬∧
22zpλ
(3Q∪iT∀⊂
)H* ∂ PDL _A→_∞Iαα8∀\(Q!∀823⊃$λ+
∃
E ∧D]H⊂ ∂F THAT↓↔⊂∩V$:⊗eα≤z∩*	zU%¬X¬⊂⊂αY @)!
~(L~ε&2*α¬ "α⊂λ∀BDX  @π⊂≡⊗α	E∩∧iz"∧l~λ4@H⊃5λTε~∀%∃%'λαα2εNαHU∩Q!∃≤\~	b¬%EE∧
Hβ"B*	t∩H
¬β"B)YuQ2$λ+
∃
E εE∧R))b LASD
λ∧∩*dbεNR≤Y`&6⎇2⊗%α2a5D¬Z∩2>~8⊃α2ε≥!α∞α,~,4(HH$%M¬∩⊗@%X∧SJ4∂MF&-kEW⊂π'Wλ'c⊂!Q))P*⊂ebg>> AN↓∩∧v↓≠#'λααBJ⊗α8U∃4T
Be∩d∧¬≤,Tλ∃¬∧YhBb¬(Zd-∃8UB∧uIλ4%⊂β"Sλ~u⊂rg↓ 4ri~⊃H⊃¬H .ti94λ∀HZα*`∩N O@≤A9_∞J6a6~>∀iα2ε≥ 4(→*%≥λ⊂λ'T%_DDNβ  LEAP
~αBRI¬"0~∧β⊂4jD⊂π'b⊃P 	N↓λX@~(∪'.⎇"Qα⊃dbL$↔0
¬∀⊂∧iP∪βK _A¬_
"	~2∧MJ4∧`:β`∞ "LAS@)9≠	
D4⊂∩A∧zB)αα¬@HKαhλλ
5λ∪jI⊃0@⊂⊂h∧@∨≠LA→>≤(4(→*Tm∧β⊃(λe∀∪t	& ∧D]H& 	MIT@λAQ_
↓λe∩∧≤J*0hTH~5#αB2
*T¬⊂*∃⊗⊂λD$~∀&≤Z6@%D
E"dβ∀c!↓(∩TJ:λ∪⊂*:α→εEαd))-λ ⊂(D)
∀∪M_∞*≥∧122ε≥!D4!→%∃≥D
∧m∧&⊃P@! ¬& Th∧2:	HRRZ TT _Q⊂R~(LRV -λT¬%"J	u∧S⊃Q M∧z	"¬αβα"!↔q3QλXλ⊂dU$⊂''Sα-NELL ATOM
α

~∃	≠ ⊗:%↓`&*,jB¬αλ¬E%∃XQ⊂K]8¬0J$#"A→Ttλ
E∀pλ U'`
		8π ∩J,)α&~2αR"∃¬~f ,)yB∧
(zTl,j@∧M~λ)u,@Qβ"A∀⊂¬)hλ*∩('⊃bXDDNβERROR FOR NON5'3≠¬=→&~∀%⊃→%4↓(X@"λ¬⊂HKαqq*D∃P3
X(⊂q)Iβ"B)
TVHλ∃α⊂λ@(αH$%@8Ir∧MD	∀`*⊂πP*λ* ∂ PROTECT F@%=~A∂ε4⊂λ&"α*%@$∃
λ∃ εE∧PβAIN↓(Y#+9
>Vt 4(∀
D%T∀λ∩dλβ"B$∧⊂εgk⊃dP @,TRU@) ~∀&∧zB)αα¬@hPβ"Ng]P ∩ETURNRUN@)%≠
AβLAαA
%1≥+~αα& 2	Y∀:Stq(dπ@≥λ4⊂	mmX∧¬,@R5∀d¬⊂π'jλ'"abTi`i$S,P ∀HAPλAβ
∞@-(~D*¬I	u,<α
+AQ@εE∩∀*g"$SbX

	PU@' A @2≤2&aDKZNF
⊂∧βα∧h8∀dd_)D(hαR5∧A+P	jTbj⊂-KαRRUNT,$TT]	0↔∃*:R&l)α&9β!6&&≥∩0≥≤X9tdλ⊃3I~α)FEX∩∧iQj-⊂*∃⊗εE_L⊂∧	RUNTAM↓)(H∩$p∞JVu"& ,T	∀b∧Y→DdM8X4|@Q∀c!	1S@λFL⊗aQ@∧f'Pe`DDB]f`∃ST DOCKI OVER ALL JSYS'S
	MOVEI 1,.FHSLF		0↔∂∃(A%+9)∪≠
↓
∨$AM⊃~(∪%+≥Q~~∧∪5∨ ~∃¬"Q1DHI`≥∃YjDL@1(∩)d⊃23	I4q0iYβ")FB∧ibj⊗!⊂_@,3	↓;1 ANDfA↓βY
A	β9∂%∨U&Aπ¬Uλ~(M*:2>≤Z$4*hH%n⊗t!α>→∧J~9α!⊃@ (*)e$k↔!⊂HK89tu4X*B∧uYX$-∩λj$l@(∩3JH4SP)D∃3R*Jh⊃∪d
4q0j1"R5∧A3∀r∧
∃AQR5	!→353	∀∃∃ε⊗AQ@4∪j	H∀↓⊃".p)juq4D	3H∪)_tSthXpπg"∀FEβ≥R*$SbP*$SbYP*∩db\⊂⊗--⊂-⊗-εEεB)ja*∃&∧j$SbP#*S!j$gSεEεE∞]]P)⊃j*i'λ P*$SbP)j⊂g" i⊃⊂ iP⊂P#&'S*fP$S⊂)baSe")WβE≥]]H+bP"S ∧EAVOR TO MAKE THIS INCREASE MONOTONICALLY AND TO MEASURE
;;; THA @ASSAGE OF REAL TIIE.  IN PRACTICE, WE MAY NOT MEASURE
;;; REAL TIME GHIHE THA @)%≠
['!β%∪≥≤A'3'Q⊂∃αM→αR⊗mα>Jε∀J2eα≥"6BB,!04	YY`~∧→hB¬<T
∧-∀Y~B∧
λyDM⊂r¬
Q0	bU⊂*'P∀P jλ&db'∩c`* MF EACH DE@π≠¬∃$@fbαp4(Q$E$LXW M¬Z9α¬αH8dd|~F⊂HK8∧u(*Hλλ	Hp3∪λ_S⊃#!)1SH	~α)V-CEW)⊃*$fbH**⊗∧B]cbjλ fgjS*⊂'cλ*$fbH)lij⊃d¬ HAS BEEN U@
;	CAMGE TT,[30,*3600.*24,*28.]	0↔
=+$A/∃↔&A=@b↑L`A'A)βπL~∀`,LRJNQαq-L4SX&NV∩αRQ2[→A9)≠1AAe&#"r&'α`+#"Na→TTu∧¬K,c!!2Tt∧
∩1IIp5β!!1Q∃J)(⊂
*∀→P↔∀BE.BD]bg⊃⊂'c⊂∩c'⊂$U)FE$Q'⊂"_L⊗-FE∩c"P)Pdf⊗-CEfgU P*ε⊗Rag"∃&nDDNβINTERNAL DATE/TIME STANDARD,
	GETTAB T,		; AS DATE,,FRACDIOJ OF DAY
	 JRST TIME3		8ε@b[=%∪∂∪9λA∨8A≥∨-∃≠¬$α↓EaDε∪C+↓Q LH@λ
E⊗lJF6M+Jf∃αZ→W⊗.D]Pd*"iλ*#P_ei$cRe⊂'gλ% g*Pi,P_K_X∩[βEdb∩k⊂*ε⊗β365.*4+1,]	;GEP THIS MOD A FOQR-YEAR INTERVAL
	JSP T,IFLOAT
	FMPR T,[.OP <FSC %22>,86400.0,0Y	;CONVERT TO SECONDS
	POPJ P,

TIME3:	MSTIME TT,		9PHIS PRODUCES GLITCHAS AT MIDNIGHT
↓JSP T,IFLOAT
↓FDVRI TT,(1⊂00& )
U		9END OF IFE SAIL
αIFN SAIL,[
	ACCTII @)PX~∧∪!→%4A⊂Y)(~(∪∪	∪Y∩AλXDd\TfD\∩∩weβ$ZDrlhA%_Aλ~(∪∪	∪Y∩A$XLb\$KZ6>~$A5EαLqαI1∧"εe5λα& 2λaP@L_HB∧∩JI∀l+¬
"HH↔8∀$λ∩3D	U30HZH∪qDλ⊂64d
∀Q0hX⊂∧g#H!ja)⊃dεT MOH
)⊂4∀∪)→9_AλXL∩∩g≤Z&AαL1α:> α2εεααf⊗ε⊂h(%α≤
&!α⊂aH$%]~.&A∧J→α
rVεJJα>Iα4*∃∃X~%Hh!∀α¬≥X)∩∧2F⊃⊂K\_I%-≥Dλd⎇∩λ:$-$→iu-~	HT
α_T
∃1Q LLZYDJ∧eF#"r&6cβαβB.h→sUQ**λ∃∪d
q0sihα)P#∀'fP&⊂ij⊂&Rb'$cR*⊂*'H&db'∩cd* LAST DAC 31
	TLZ DT,-1
	ADDTT,F		;ADD IN SECGNDS SINCE MIDNIGHT LAST
	JSP T,IFLOAT
]		;END OF IFN SAIL
]		;END OF IFN D10
IFN D20,[
	LGCKI	∩∩m≠+'(↓→∨π↔$Aβ%∨U≥A)!
A*≥JL4(M"& ,Q⊃⊂K\xZB¬$→XR¬≤→h4*¬9~5$,T	D
≥D
$-≥H~%$,D	∀b∧X8T
_Q!∀l⎇hT¬%"F⊃P@M8ZEBβ∃A⊂HK8εQ*)h⊂tJXβ"B*YS∪pi9#"B)*tλ∃¬I1S∪h~β"B(h∃PR$
∃
ε⊗λF¬".piyUQ4JD∃∪h
80ssHJc"W!⊃.q3HD∪qH	_SH⊃ε&β"B*	t∩H
¬β"C!)1SH
823⊃"U∩)X.∞C!+VVO'V"""!↔ur3	D∀u0JJP0u∧
∩∩4dε(⊂P(9h⊃6λ84∃λλitH⊂(j⊃4Hλh0HG∀tc"I~Tλ⊗¬E⊗ll%eNEFl+Cε6Kf∃Kl¬el#EFl+Kε6Kf∃Kl¬el#KQ"B6K+C"VK+O/6K+Jvβ!*⊃4S)→A"R(iH⊗VK%,mMEeλ∃p*)H⊗uλ_S⊃(	xH⊂u)Z3⊂5	~β"P"⊂liP$S⊂&gg∃$)P&∪ibinCE"d(∃e#bP⊗--εE↔D@]bS ⊂'cλ$c'∀`dfεBβ≥bhjPf⊂"hU`f_⊂⊃hj`fP"hf`P"hS_a⊂"Td")jλ"hf*⊂&⊂"hS'&Z⊂⊃hf'&L⊂"hf∪*fP"Td∧GSE EQLBIG EQLHFKEQLHN3 EALHN1 EQH@⊃≤HAβ#→!≤hAE→⊂iααα⊗F2A"aα⊗b"9U¬*NJN⊃αVN∀
↓αVα:$E¬∧
D4J8R¬-8)∧eQ!PE≥X*E$`_Z∃,Dλe,T8¬∩)@eαEεB ¬QUAL:↓CAIN A(B)		9EQ THINGS ARE EQUAL
∩A)%'(AQ%+
∩$p
↓↓u~⊗∃α
~N.
αi↓α6-~QαB∀*N⊗J4)α_Q!∀l⎇QH	>≤(4*&4qα"i9D`8k⊗c!↓4rr*λαP ⊗HUJK@
λ∧∩A∃I' AE_cα~(∪!2tqαRQdbL$↔9∀2¬i
T`)tλ⊂iyβ* dSαS NIL, @)!⊂→ααx∀u"λIphPα(λ	*Tu⊂⊃hf'iQD@	; TREAT ALL HUNKS AS IF THEY WERE @→∪M(Aπ1→&~∀%'↔∨)PAαY→L~∀%∧RJNQ∧*F $βtq!Q@∧e)∀j⊂"hS&)`∀
λAQL1A:↓SKIPN USRHNK		0↔∪LA)↓
↓+'%⊃U→⊗@>≤*2$∀λd,
JZ$*∧Yh∀∀dXCphPα(λ	*Tu⊂⊃hf'iQFA∧j∪'"P*∃⊗ '%BDYdcλ+$*g∩h⊂!gS* dg∀P*⊗⊂∃$"g∃βANDTO CEL¬⊂4PIα*J≥!αεFc
⊂H↔4¬$DT∧$-
X→B$⊃14j81q(	_H⊃2*I⊃4@⊂⊂i#P$TP λ@+9⊗~∀∪M↔⊂≡R ∧∧
dα∪RaQ@∧P%∀)j⊂"Td∧@∨'∀~∀β'-∪!α~)#_cλp∪D~!α¬d⊂$%@9ZU≥αλ→E 84∧iP∀bg" TO FIRST ARC
	JRSD↓#→⊂β"∧4!Q%hH↔8T`(α⊂'cλ$c'∩'%f'QFE"hS&)`∀h∪!+≤AαA⊃D	$4λMαVN∧
αbD%⊃P@L	J%B∧∃E∧
HQ!∀De+$∧αbλ 
!Q@∧h*Td 
 P,AQUAL0		;CH∂≠∧
J¬α≤
JL4PJ"JJRα¬1T⊂

¬ εE∧R))-⊂⊂⊗_∀(
FA∧iUa⊂ ⊂,R70+∩
∪∃I'(AE+β_`$∩wπ∨5!β%
↓β	%&4⊂∩¬E→)¬_h∪#→1'(∩∩m→∪'(4∀∪β1_
V4HIf~&DrV4∀PJ⊗F2u*4$%\22>~,h4*∩⊂∧@L-→Idk⊂⊃↔4$⎇X)D(h(;α LX→D`),B"'a`∂MPLEP⊂~)	0H∪∃#⊂∩iR@HK8JU∧dY↓PD∀tA∀-H)∀8H↔8$L<βU3!Q@∧bhS'ibDB]h' SbP j∪βH&A5+'(A	
A"ααR=α∀)αεF,
04
Dq⊃αJ-α⊗εQ∧B0∀\β∪qe6+λ⊃*→α λNK	;@@+9↔&A∀*F@,~(R¬∀X:U∃≤α3sD	⊂∧ebH& 	STS
	EQH	>≤($%Nα(∀d∧yZ2∧h@λ	@$f⊂&Uij⊂!⊃P"h@ TO BE AQUAL
α	EQH	∂'∀∩∩`.
∩JεE¬α>&:$*JMαm*NQα∀)α⊗E¬"=α
*α⊗FV`4*&4q↓96-
2R
bj:Rf∧*M1α<
J9α]:J>::α2⊗:="!αR∩2⊗ThP4*&4qα∩b4bε≥2Xh*⊗Fdr5QhhR.∧εlzR*λAC∩D∃⊃PT\⊃→T⎇4T
E"c5λ∩Hh)9∀\`_IT⎇∀T
Bc∩λ⊃⊂hPα0p)YH⊂
⊗∀!∀FB∧P!`SbP**→P!∧CE	  JRSTEQLOSE
]		;END OF IFN DXFLAG
IFN DBFLAG+CHFLAG,[
E@#1_
5IPJ6.Z*αQ1ED	$4λJα≤XT¬"c∃λ"Hh!∀α∧U*:B∧-→Iu≤(Q+PHKαq3HD⊃qH	_SH⊃λ(S⊂1e8v⊃Sλ_c"Q*→⊂π*fN∧fgk⊃P*⊗∀⊂TBE∧PβAMNT,(B			3COMPARE VALUES OF NUMBERS
	 POPJ P,
AQLOSE:	MORE P,EQLP		;@)!
A+→Q∪⊂⊗ε$)α
εe~&Reαiα⊗N≤
B∃α∀
∞,4PJ*JN α~ε2≤($%M¬"=αR⎇↓α2⊗4*1α>2α⊗ 5J+∩¬$tλU
→D¬<MI∧∧4J8PhPQ)∀4rλ)∀<uYUEHh(Z∀d∀_w LDJ+"¬"Eλ∩Hh!→∧e∃$
E"bλ%⊂hP_8∀L*λABE%E⊃⊂K\Z~Tbλ)∀<UYZ2∧D~hR∧-∀
4L<j1PPJ	*%≥"λZ∀d⎇8Q⊂KZλ→d"∧8J%~∧~(R∧-~X∀b∧I~5%~	xb∧4≠	e,M1Q LE*+"∧
Eλ∩HH↔84D0r`	Yβ&,P⊃hj`fλ!b))CE	HRRZ B(B)
	JRST AQUAL0
]		0↔9λA>2α&~9∧∩&≡~,h4(Q)∀4r		d\@∪q`⊗⊗β
EQLHFKh∪'π∪A_	αZE*2.@hP%α
∃~Qα⊗α→De≥AQ M≤9~∧*¬X∧tI	Rc"A∀⊂TTjD⊃0λf∩'~εE⊃hf$']h*Td⊂ ⊗⊂F@
	PUS@ P,B~∀%≠⊂≡ZtIαQ⊃λh!↓↓β∩∩&→¬Z2N∧
BbEJA∃kαJ→¬,t6↓∪@:Q03	K(⊂	d∪hf"⊂ ¬ ASH, BUT LSH IS FASTER OF KL10
	HRLI B,(T)
α	PUS@ P,A¬
	PUSHP,B
EQLHN1:∪⊃1%4Aα1ZbQ@R~∧∪!%% )∧⊃1"AHh &"e∩aα	bB↓$Q!∃¬-9	"¬αHZ∃,F↓P@Lλ*%@$⊂+⊂¬V*∀
!Q@∧d)∀-⊂!ε
(⊂	
	HRRZ B,(B)
α	PUS@J P,E@#Uβ⊂`~(∪⊂⊗>4)αQE
αHhαB0)@a%(⊂∃⊗"`⊃LHN2
	H∨-∃~A(X! R4PJε =4¬S
E¬⊃P@!2TTjD⊃0λf∩'_FEβE"`⊃LHN2:	SP∧A@Y$n`,h∩(Mα0≥∧αH∀¬Aα@

EQLHN4:↓SKIP@≤AU'%⊃≥,∩∩@@p∞'M∧εFF*λ¬4j)∃3Re@ibg"∩P32`!tpeJ↓K]CE1KH}~(∩@A∃I' ⊃α-
2"d∧b!∀λλ∞d∧≠[k∧z→0⊃Zβ the pa`%Q`4
-
2!Rλπ M¬X∧r∧λβ(λ@ 1#→ $∩@@@m∂←iI∧ACgVαβS#∃¬+G/$λ∞9~0⊃Xz2FEαh*`∪H @
!αbRP4PJBVNDQα
@λ∧
85H
FB∧h ∃SHJ @ 1+'%⊃9 ∩%α↓↓n∂F+∂-β4¬w$≥<p∩\α-`uNines@L~∀&U*6B∃¬!2εFdB1T$J↓↓↓nL∧bε@Xπp∀0AO↑AαCπ∂-∧¬↔"εmxM\9≠⊗!Q@∧h*Td⊂ ⊗⊗βEQLH4X]
	PU@' A @2λh &B-~!αAeZF⊗F,
2dQ!∃¬-9λ
¬⊂C"A→αgk'∩P*⊗→CE	XCT SENDI∩∩@@w≤+;⊃β&C∃β?⊗S↔∂Q∧∧∩ε@9<p→Xpπe
EQLHQ0t&¬*N"$λeEαβ∀TjF3(λFBα	POP @
 "α¬E% Q!∃∧⎇∧λeEαβ⊃4)Jβ"B)*30λ"H V"hS'ibFBα	JRST POP@¬∀4Ph ∀43∩	@~Y∧h∃i`λJ FXP,RSPλj~(∪!>αα~bAe"P (αB4	@h⊂#,∀⊗"`⊃LPλ
(LRJNQ∧*F $α∪@→CE
;8εA'Kαs⊃β¬∧¬V/∨<≤v*πMtε
ε∞XMP;t`4h object @%\AαAα;⊃βn+@∨≡≤|RεNβH⊂AQU0	i∀`a≥∧T*id%λ εP⊃αbNεYαYS⊂J∧∧β@:x8 % AC's
∪!U'⊂Aαb`≥∃8¬~SY(
USRAB8∧∪!-~!αAdλ$%↓α↓`≤&⎇`	nD≤x=LT⊂0inP4s⊂_ppl@∃HAQKβ∪∀4!~¬-≤αλ∀¬H@εE∧V!j⊂)QdεDI
λ∧∩4SY`~∧=V≡Zλ⊂λ@4πr @	KS@;8∧ε
∧α⊂
g∩P0w2λ0P ∃SRHUNK, re@Qke@9∧;O←,ε"εNβH∃↓Q@εE*Ti$ (∞α	MOVEI @(αa"¬$hP& %9λ
EλεabQd ∂G
λ∧∪≠∨Y
A(YM(Q(R$p∞∨↔ ∧π<αsvr[8∧ tabh	JAα+;@',ε#!∧j&'⊃P*⊗$∪αK	;IpεAS@ ∧ε
ε∞XMP0p∀↓CYX}4⊂λ%↓∧RJNQ¬*NJ"u%m↓¬K↔MDλλl≥≠λ⊂~\β`dOLAQ←←αY0⊂@ ¬*#⊂d∧SE:	SE@)hA(@0HI`≤@Xπp⊂@∀X	99ph ⊂M	z∧R¬¬AP@!α@
;lA∪LAβ;∃βπα,Rπ<z0↔→β the US@%!_
-Dλλ.yzvt[3P;rH0p`%∃C@∪@∀λ
mmβ{P )t ∂fAα	β#WvY0⊂HαC"JZtR∪Jπ@4ri~⊃(∃*:R∪Ra⊃(λλπd¬us@PAQC@4∧Rε⊗βx
4λ0P ∃SRHUNK a`≥Hαβ¬αN,r∩$Q!∩α¬99∃∧rλ∧q)@ ∧A		   +AS@9∧¬w,→<@⊂≥4π mai`
AkMJA←L↓KSiQ∃`λ (αB(∧∧λ∩TJ:α⊂ ∀FAH	'
4⊂λ&BαZ4DRλk¬αe8~c(hαB4
Zp∧⊂#⊗(⊂R
λ∧∪ "≥!αVNα)∧`)b"(∧∧∞pp∀→quP )t o`+β 4(~	uα∧hε∀¬J@εE∧SdπVE T,A		    7IKike8A`≠πdεV*ε≥`λ
Eλ≠[nD⊂#"A~∃0	d∩⊂# _P,RS@(β(4(~	u∧Rλ∧↓Q@εE.BDXEND @∨↓∪
≤A!_
.IxphPc\βPsi@!P h∀ ¬ND↓β! @⊂∧∧
¬∧4α`)PssHP⊂∞NCL¬εb@9_
∞h6"αth9d6hP*
⊃3Q∧λ4⊂λ_H i_i⊃h∧@∀AM+¬&@ ∧¬∀5Q4J8(⊂	"Uα1 APRVCK↓%⊗Y ∧∧`*Q0"T)bP'∀ ¬CON@εA:α(U &(⊃q)@)lf@ GENCY0 GENSY2 GEH
'K→α<Yj5K
λxT`*v-`⊂⊃bg ∪Y4∧A∂9'2j~(~∃',∩RRA→d9βg!Vλ∃'!gSαC _A¬!!≥⊂X@@*
αB,h@∧
Q0"T)bV⊂∪αRE@-∃%'
X↓_
J⊗≤z0∀_Q!P@)PssH]	TDX¬αA⊂¬E⊂Hα.s
:αa) - DESTRUCTIP
→dAπβ)∃_
εR*α2&NαJ0hT~
∧,@Q∞B)Yβk"dH)⊗↔ T("g"U'!gSαC	;LSP¬$α↓5α∞
"⊗ 4~HR∧∃α(⊂i@h,dg⊃FA∧e∃dh"P∃⊗# f∀bBE∧T'h⊂(!
APP2:	AK@∃
↓(Y¬%∃)∀4PJB>A¬↓2∧Q!∀U,XλR∧
H~¬β⊂β"B*9p4⊃$
KPThZβ"B$
∃0	d∩⊂(⊗ T)+!eBDBE T(→P~	PUSHJ P _]9β⊂≡h53
E%⊃∪@8R4TjD⊂∧g)U⊂ ∂F ,NCON@εA&~↓∀UYZ∧*∧∃H%∀5∩HAQ@∧fgUα@
A∧αb∧4λLRJNQ∧
BAHhP4(Q%dd≤βsPg∧e*fT ¬ A@¬%$P$%:α8T*∧~
β_h%id@Phλ@:	IOVEI TT0QαR∩$p∞NV∃⊃↓I↓@¬$`(pπg!JF@
.NAH
ε@⊂π LE*+"∧αβ
∃
E εE∧R*f`⊂E @ _]9∞ 44∧c!∧d ∩RX∧A)(αa""α#"A→U34	D∃∃⊗αNCNC2λ
∧∪!%%~AλXQλR4⊂λ&B⎇α)αA`h ⊂@ ¬↔'⊂dεC &h∪⊃%%4A∧XQQ(R4PJB>BRαA04Ph ⊂@ ¬↔ T("g"∞α	JUMP@
Aααb∃∀X¬∩A↔tp
a∀⊂→⊂∀
 h "Sα@λB~(∪≠∨-∃∩AεY¬$bα∩m
∪%'PA∪≥πPA≠+≥!α
∃∧RV&B*α¬"
∀*R(Q!∀l@uQ(λ~LP ⊗⊂D@]fUij⊂)PhεE T,@ -↓'
A5β↔∂¬1∪'(~)β! BβP&"2∃Qα¬1D
IJ¬Hh &BαZ4DRλ¬D≤@sP	FB∧d!)⊗α B,(A)¬
	HRRM↓αPAε$~∀&lzR*λ5Dλh!→¬∃∃$λ∃∪∀∃E∧
∪(⊃⊂hPα2U)Z∪H⊂*&P+⊂*
#"H~L4Q*ILC"J:αa)Z∞∧fgk⊃dP F
 i_DCE	POPJ @,
~∀4⊃%4*JN∃PJN.&∧)αY:∃~⊗@%]~V
Iβ	↓5ααZ4-~λ⊃D%⊂k∃¬H@εE∧H(*`∪HJ P,APRVCK
∪≠=(
ε%∧→1"¬Hh &6⎇2⊗%αλb0∀LA⊃∪@:Q0"T)biP⊂P IST BY CH∂≥≤J2:λZα∧
λ9u¬Hβ"THZβ_]∧R*fh"H!PCPMPJ		8εA>2αR"∃¬"6Aαd*Z,D	∀b¬(Zd-∃8T∧m∀HZ hP→	E∃Rλ%BD~⊃Q M¬X9∧R¬¬K∧≤@sP	FB∧d))⊗⊂!V∀⊂TFE∧R))j∀"k_FBεA h∀+!e]αh*id∩⊂(⊗)Pk(→DB]`h(⊃g"↔i⊃i"a)QP i#Ufbg*λ!d"aRdg#FB)"k~∞∧h*iR%⊂(⊗∪& ij⊂eDD]Sjij⊂∀`k"P∃*⊗"ε∀⊂#'iλ&`g,H(" aQiP+d∩a`λ
	 JRST REVER		; CALL REFERSE/NREVERSE
	JRSTRSTX3
¬
NREVERSE:	MOVEI @,NIL	;S@+	$@b@4A%4*JN∃∧	α2&≥!αVNLr≥αJ∧bε∞⊃=_4*:∀*ε <h7 LUYZ∧*∧∃H%∀-I!∪M≥X*"β∩¬TαDu(X4|@Ph⊗∧*/*	hqsPd¬∪P	"U ¬RSE X) Y)
	 SKIPE V.RSET		;   -USES A,B,C,T$F
λ	  PUS@J P,APRVC@⊗~)→%3	`⊂Lλ*%@$⊂k
λ∃"".iYβ&,PP 	NSTRUCTIK@≥&↓!⊗I∧~⊗"D⊂λ'gf@!
∪⊃I%~A∧0QαR~(∪∃+≠A
AεY
!∨!∀4⊂∪⊃%I0	α	bB
$4PJ"JJhα¬1α~H4(εU*6B∃∧⊃2∞J-"(4(LBJJi∧	1"	Hh(&"∃∩5α
bB	$Q!∀U,Z	b∧
Ij$-L#"A→TTu∧λTQ5	!"C"AQC"C!!"C"J:0U∃	A1q3J;3(⊃JYPq∩)YC"C!(q3Tk→,B2JY4∪H
E⊃q3J;,#"Hx3Tv&πB33jh(⊃∃¬Kl$εvλyU37!↔tp
 S" i"λ#bg)Vfb`∩
	MOVEI B, ∧`∩∩m/∪→_↓∪⊂~∞α(Tl,jD∧e,XZ$L≤,0]
	CAMGE T,[310000,,]
λ	JRST GENSY6
	JRST GENSY3

CENSY52	TLNN TT,S@24∀∪∃+5!≤Aα1∂≥'dp~(LRNAα"bε"~3
⊂$λL"B	ααJBe[4Vβ;β¬ED<uY[PhPα2TJ:λ⊃q)@)lXεBβ≥fbfP i⊂)Sbfa"T⊂)fbShP&bShY⊂&QdhYP∪bfhJλ&bfa∀⊂"bfP→⊂&bSa→P T→ i"U%⊂&bSa~⊂)Ua)j SP¬&AαA',∩MEα≥*αNR@∧¬≥*9βα¬8¬0J:∞λ∀jXTu~H)ja)U≠⊂!i⊃h!⊂)T)'cICE
SUBTTL	IEMBER, MEIQ, SQBST, DELQ(λA	∃→)
0@U	1"P⊃↓T"⊗2⊗$(4(∀Tj⊗&
-⊃`⊂H⊃⊃∪M4q4dλ+⊂Cλ~L+⊂*&P+∃¬J∃β"J9130HZNNB)YuQ2$λ4L ⊗
 TDDNβ FOR BENEFIT OF DELEP	
@4⊂∪≠∨Y∩AβHeαXQλR~∧∪)' A(αb2εR|h4(∀	%∃≥D	T,L*!PE≤β13*↔@∧ibU-&P&Qdk∧DNh¬SES A,B1(Y6-~QαBα(U≤-*hR∧
&⊂λ~LP ≥TbbP#U)h!YCE	PUSH @,@∧⊂∀)XTm'!∃≤\zJB∧∩IJ0hPα(∩J*uλ∪(YαhZεB∧d&)⊗α T,(@∧R4PJ≤Y`λλ∃α*εEαP 
RST EEMQ3
	HRRM↓	26,jP (αB2
*T¬⊂!∀!∀FB∧e))U⊂"bfTY
MEH"fh∪!∨!$A @1λh ⊂L**5"¬8∧∀IXlC"IX34%π∧e*fT P!,MEMQ∪
∪∃M A(Y5⊂⊗F-⊂4(→*%≥α	XTm!Q hTXYT*L¬∧iQh-&@ MEMV
λ	PESH P,B
MEM@20∀∪M↔⊂≡R αεIJλb2L4PIα*J≥!α6⊗l⊃P$λLj>@4Tλ∩d
&⊃PPL	J%B∧%E∧
∪(⊃⊂hPα4∃*9⊂¬⊂("hj`S∧@
	JUIPN↓αQ6,j∪_Q!∀E∃)Pλλ~LP ⊗∪bfcεBα	HBRX∧Aβ$β∩¬ "α⊂4F(*#"A→TTu∧	130F!αA&bSa→P~	POPI P,1
AR2AREP	)Ph ⊂LYzd,Jλ⊂¬λ4LP%⊃ ¬∧h∪βP@∀A@X⊂∀)XTl∪G!∀U,X∧⊃$λ4LP%I130F1 B2J:λ⊃⊗∪bf`⊃ERλ
(Lj0≥Q(⊂*&P+⊂AQ@∧e)∀h∧ MEMB2

~∀lp
mαα:T*u∩5
Zα"P H εOR↓#+β0A∨ππU%%≥
&A∨_A∧A∪8Aε@8hP4*NαX%≥∞B2J:λ⊂
,P@	2tj,$¬]~V
Iβ_4(_[∧9λ⊂ ⊗⊂β
α	JSP D1!∩IiTXh!_UD≤αλ⊂%Hc"B*9p4⊂$λ4L ⊗⊂F@
SU@¬&aαh∩A'↔%!αAααbεIDhP%↓α≤Z&B¬∧
IJ¬d⊂4(∀∧α∧lzhR∧∩H~#∀λβ"B*
4r⊂∀⊗!FEαdgk"H V!FBα	P@+M⊃∀Aαb⊗FV`4(~	uᬬH0hPα2U)Z⊂π⊂ K i_i⊃h∧@∀~)' ⊗
≠	`⊂M99u%"λ5De_⊃↔44|βkλ
I⊂∧iP∩dεCLUD@&A!+⊂~.~λ4(∀	%∃≥D
5¬∀xpaQ@∧h*Td⊂ ⊂,@ε~*L20∩∧α∪RiIqk⊗aQ@∧j&∪α@
A%!2"i1P@!(∩TJ:α⊂ ∪U@¬')⊂4⊂
`+αh⊃)@ ∧ o@_A∪
≤αα":.dz≥  Q!∀De+$∧5α⊂λC)		0↔αα↓∃∧→~"$⊂q3	Aα@
	PUS@⊃∀↓ Y',∩MB∧hP&⊗@λ9α∧
E
αHhαB2
*T¬⊂!K∀ TFBα	P@+M⊃∀AαbN@,*6∧λhαB4	@h⊂ ⊗⊂αλ
(LRJNQ¬B≤@qP	FB∧¬∃∪→_	α	i4d|uK0hPβ"TjXTp
$∞∧fgk⊃dP F
!P	
	PUCHJ P,USRHNP		   8ππQKα≠ ~εmxDY:0↔→β a USER Exp	K]⊃K@AQU]V~∀%∃+≠!∀A(Y'U¬'(p4∀∪!∨@A Iα4∀∪'βY
Aβ$DAβ$e∧~∀β!U'⊂A 10∞NV∃~!BthP&BV≤AαA2λh(&B-~!αAeZFNV∃~Rt∀PJBVNBαA2ε∪λ4(~
U≤B
¬D
∪(⊃PPLYzddJ
@εA ¬∧l⊂h∧ CEL¬↓∩∩$@@@WMK]HAQQJAMβ∪?	βλ∧¬≥0Tu∧
9<|l≤βrFE∀ha)d≥∧i)U)⊂ i P iFA∧h∪h 
 P,	∀~)' ⊗
≥!ah→Yu (αdP)_@		;R GETS @≠β`A'∪5∀A∪≤A]≠%	&4⊂@@@I	∪Am→'!¬⊃1"R ¬∃kαJ→¬,t6↓P@Mλ¬4i∧⊃R∀¬J@".h9β*)∃βH@∪→∀Aπ∨!e∪∃∞~(∪!+≤AαA2∪9@$%]"⊗ -∧
¬%∩λ¬r	→⊃(⊂iz⊗23Hq"B3)zQ(∃
E∀C"A→∀r
J#!↓4∃4i	H⊂λ→⊂⊃3I1 .th~Q0	P⊂i_V T→ FEαh*adλ(∩ FB)ja)U~]∧iSicbP∀⊗∀#,∀∀BE∧H%))jλ)ja)U≠αE∧Pb"⊂)⊗Y∀(
FE∧fSi"P)∀)∀DB]cbjλ+gi"λ'c⊂'T$cdg⊂f⊂$*S%FE∧R))-&H)⊗⊗HJ(⊂			8εAβ≥⊂A%≠∃≠¬⊂∧¬∀B	xb∧MAQ LDJ+"∧~J!PPL8→∀`$⊂k&⊃"B(

4r∩D
∀u(*l⊂"!↔pst∀⊃∩β!!10!R⊂!V⊗LT(∀FB∧a`dSα C,-1
	 PUSHJ P,SUBS0A		;COPY RH
	MOVE R,(FXP)
λ	ADD R,(P)		;POINTER TO N@.A
≠!2~(∪⊃%%4AεXQHR∩αw%_
NRb1αJ@h(&6⎇2∃α	biE"AHh(&"∀b5α	bBI$$KZ& 5:H∀db	IhPα2TJ:λ∀u(*u
#!!"C"J:0TuεgB4∪j∧∀⊂aQB4∪j	(⊂ε!"B4	z∩(⊃K
#!+,h⊃-lλ≠yD	1SH		Rs∪huβ"C!(tQ5	'C"Tj
Sqlg!33uHT⊂+⊂aQB4∪j	H⊂↓QC"@↓Gq⊃3
∀⊃⊃3λZ⊃(⊃	Jh⊃	JH⊃	J(HH3∀(¬h⊃3⊃*H(∪1)Z(∪1)Z,#"AQQ⊃3
↔B4ri~⊂(⊂EKts1)Z7".jZq4hλ∃⊂K⊂eJ∃∃¬D∪54jD∀p5HT⊂4LH∀(∀j900tIQ"Q⊃)H5⊃.A→3uQ)∀⊂K∀iX30Q*!.u4hZh⊂+λ¬⊂k⊂*&+⊂4F(+∃
Jβ"B)YuQ2$
∃&⊃,s5*:λ∀p*h(∀C∧
q1(λxt	Rε⊃"B0h→3H∃¬K⊂k,AQ@(∩J*uλ⊃	Jc"A_p31$
⊗⊂eVc"B$	TTu∧λ∪∃⊃*!"B4	zλ∀λ⊃"B2J:λ∃λi∃∀rj↓ B(	*TuλλI∃c!!2Tt∧
∩1I≠β"Q	JnB)YuQ3$
∃⊃	J⊂c"A→3uQ)∀∃∃¬

#"A→3uQ$λ	⊂C!!4rr*λ(⊂K¬
λ#"HI∃NA→∀TS$λK
∃
E#"B)YuQ3$
∃∃λ_S∃,!QB33jh(⊂+¬V*∀
!QB4sj8q(⊃	J⊂c"A→TTu∧λ⊃∃!Q@4∃*9∩H∀¬E⊃
"'9αbfa⊃i⊂'iλ&bfhCEe*Sh"P K"&*_CEd)∀-⊂!⊗
 TFEαiedh∪⊂**⊗∪bfkεB∧fgk⊃P**ε∃ a&*LFE∧e∀)j⊂"∪*→εEβE"&*]∧h'T⊂(⊗ CEe)∀j⊂('T_eεEβE↔""S(]∧iRdh P⊃⊗-ifQfhnFB↔""f⊃h"]εB∧P&gU"dP"&bfa⊃iεE∧T*id⊂∀⊗ FEαh*adλ(⊗!εB∧fgk⊃dP"*⊗XFEαfgk"H!⊗"εB∧e))U⊂"&*FEεE∪bfh]αiedh⊃P+↔)∀bjεEαP%))U⊂)fbShFE&QdhX]αe*fh⊃P!⊗#⊂f)bPλ⊂⊂⊂↔∀bbP*∩)!`aα]i"hUdi"iH&bfhLP(!"Tbi+"TP**εB∧d&)⊗⊂*⊗∀⊂∀@
	AAINT,(A)
∩A)%'(A	%)∀4∀∪⊃%I0	α	bB	$Q!∀U∃:@∧l,Z⊗⊂hPQ!P@c\h¬3*∧∃⊗4λZλ⊂
,T'$f⊂	ilfa∪d∧P NMCC  ↓_
V6≤B-αB$b0∀\αH∀λI⊃S2d
⊃∪∪IVλ∪S)6(⊂λ'∪eY⊂!T ∧@→≥-∀⊂∀(hRN@,*JD`LiIt
∀λλi4∧ ⊗λ'*fa⊃i(⊗⊂∃,h"h⊂ g"λ("&'∪eP!'Uj 	NE
~∃%% A≥U≠ @1eZ~&Bα¬D4dx~EαdβQ3(λ4T↔(	5∀k¬KqRαh	K⊃S¬HT∧∃c∪∃a'.CE' ∃MP:	SKOP	(A∧Y¬∪)L~∀&U∩NQα4
2N∀KZJ⊗R-∩1α~Laα&→∧r>Aα|1αα⊗≤JJε⊃¬"fB∀hP&&>4)αRQbB¬$%]∩⊗@%X∧SD
λ∩1D
p⊂5∧
q(∃h→U@⊂⊂d∧SO, TT GEP	&AQ⊃∃αu*6
⊗α AQ@∧e)∀h∧ DRUE	;IF NEM@ARP GETS A BIGLUM, TT GETS DHE CORRAC@(ααN&≡p¬B∧i~t
Hβ"UλZS23AQ@εE*⊗h"h≥αe*fh⊃P V*⊗h'$fαDY`∪U@R 1ZA+≤*Mα≡tbeα∧hP&J>"α¬1⊗≤*≡2>8h &"∃∩`∩∧∃J5"D∃⊃PPM	z∧R¬¬APU%~	dLC!→T⎇∀Y∀∧
@∀4v)XSsβ!∧h'h∩⊂(⊗εB∧¬∀KM3⊂⊗
|bAh∧HI`≥≥X*"βλβ"B)*tλ∃¬Jt⊂5	@d¬¬
	 JRST BALSE
∀∪)%'(AQ%+
~(~∀4Ph ⊂@ ¬εE∪αMCK⊂8∧∪!∨@A @2λh":Vl~"-hHH%n∞D*≤Zλ¬∪d
q1(
I⊂5⊂∃βE HAT@
Aααα0∃,X(U∩bλ¬∩λYβ⊂"l∩h∧
IF@
A≥¬%∪)⊂αb`_h((r(L*:α¬"β⊃S
Jp¬`⊂
묬∞H%∃' APY≥-≤Z&@4T∩≥⊂%¬α6B$
α`hαB(	(Psα!⊃,¬c S&)P$SαTO PDLFKJ
P~∩$p∞⊗: α0≤2	_d*∧βP4I~⊂∧εE∩c'⊂'⊂i$j$⊂+`i∪α [NUMC@K∨ PDLNMK?]
λPDLNKJ2	CAML A,NPDLL		;PDLNKJ 9 @!⊃→≥≠⊗0A)↓8A!∨!(A @0hP%α∞j2¬αλb0∃∧IIhPα(λ
	t∩H
¬β"B)YuQ2$
	⊂t	z⊂C"Jλ⊃∪S)7@0p)Yλ⊂#	@("&&αDXFIRST A QUICK AND @IRTY CHE@π⊗~∀$Aπβ≠1
AαY9!	2@h %↓∧RJNQαBQ$∀Uα∩2~k↓`&J⎇!α¬1m~⊗≡∩|8$%NtzP~¬It∧DX92¬$λT¬≥"λYe%∃⊃Q"ααλ:∧,≥λ∧Sd	3Q∀I@h∧
	HL@_APY'(Q∧R~∧∪I≠ ⊃αλ¬E≤,yIt8h$∧α∧tz
$hh!~Ddtd
Bb¬λIDdh⊃↔5≤\~∧∧L4d
∧$b	jTl∀X∧C!↓(∩TJ:λ
∃¬⊃ B4
Zrλ∀¬Jβ"SIYl.B)Yβk"fH**⊗(∪&eXDB]bd(⊃aj)P∃,h"P⊂$j)P∩e⊂ ∀
	MOVE TT(A)
	HRRI T,PNMK2		;IUST SAVE TT
	TDNN T,FL		;FIGURE OUT WHICH KIND OF CONS TO DO
	 JRST FXCONS		; % FIXN@+4~∀β∃I'(A
1π⊂≡:_H%m↓jα~2>u*44(hRB:6[⊃`⊂LYzd*¬JEE∧tY6⊂HK8(U≥$z(R¬%Dλd⎇∩
λDdtY1PT≥λID`)rNB*	t∩H
¬∀⊃∪	IpC"@;GCPRO %G@π!%≡↓∂π!⊂ε∩∧ppλ)⊂⊂∞GCPRO .GCP@$β)α<8∧∀F4⊃pt
&λ⊃pj)(⊃hi"f⊂⊃a`OOK S@1!β'!∧
R6"≤Aα
:E~!αεE~!EαBN!I∧r& $α⊂	dλ)l$)R_⊂ ∪XHS@→&4⊂λ (αTu(**&∧Qah ∩O AND↓'1"
~  (αC"Hxt⊂	'Nα	JUMP@
A∧αb≡∞J,`4(_8∀L@H⊂@⊗∀d¬∩∩m'π∨9λAβ%≤@p∃↓βt∧l,→j2∧|βS⊗$λβaf'SβK
	JRS@(αα≡∞IytXhαI1hh)']αd¬OVEI ARDXb$KZ6@-8¬⊂∀`k"P∀⊗#⊂⊗H εOR↓
β'→=βλ~∃≥∞BIλπ L≤→→B∧
I→cαmα∪∪i@*fFEαP!`dS ¬ A1∪⊂→A]B"&:αYRkλβ"B$∧∀rr*λ εE∧H⊂⊂ ⊂OPJ @ 0~∀&≤Z0≥∃λ⊂%Jv#"A∀⊂¬))U⊂#ah∀→
	JUM@!1
Aβ$β	2∞B⎇α( (!→∧e∃αH∃¬E⊂*#!∧fgk∀dP ∀T,SY.C@π⊂~@J;∩d⎇H1∪@8pπfh∩d∧ED↓∞ <HT∧`(αbb)H&bP!∩hεE∧SdπV@'$A⊃J;∩`*∃0	∧B]h ∃RE S@35↓∨λA	→∨π⊗αα∀MAQ M⊃∪SDλλε∀*
F@
	 IH∂%~ααRQE
BHhαB4	@h 
 P,λ
*<~BIIPJ6 =hT∧
∪(⊂λ⊃ ∧]iPhεE AR@∞~∀%!+'⊃(A @2≥B"N∧∧α!↔pε"`Uα@&A!β'"\*eα→`λλAα@
	MLπ ~∃∧	2εI∀λ4(→Yu (αP ∀1β$b∩$p∞@#T∧λπWH⊂	"S ¬ASE, ELSE P@%=)⊗∞αAPBtx:¬∀{!→%,@4⊃(λ∃α!`⊂OPJ~∀%→∨π↔$~∀&¬*N!ααb∧%@8∧∪λ_q0h	@i$c@ ARG OL∧A!	0~∀&¬*N"$
αe≤~kβ(Kαp	`Uα@&A9+⊂∃α~L4(M~.&B*α↓2≡≥αNεHhP%α**5"αhx5¬∪QQ LLzhTJ∧∃IdL@Q!∀l@uQ(
Jλε&'TbcεEα`b"$H**⊗_CE	LSH TT-1¬
	PUSHJ P →≠-→'β$4⊂∪≠∨Y
AλX4dQ
⊃@R∩αwI')∨I
A⊃βM⊃↔2↓∪⊂→α h(&6⎇2⊗%α⊂b≡∞Bα8∃⊂H%ht
¬&W LlzhR¬"HA⊂K\~(r∧|d
αb∧→hB¬≤~hU~∧h¬3$λ0th	yβ⊂#,∀∧@
	LSH T-1¬
	IDAV T,DOSEF~∀%!+'⊂αα~bAe"P4!→T⎇∀Y∀∧
bλk¬αHβ"B*
4r∩D
	⊂⊂*84J⊂E⊃"B4jXH⊃V
¬∀Ml¬6 εE∧SdπVEM R,-LQ¬ "αH4(→Yu (αP!,A
α	MOP
A∧XQ R$∩w∂%%∞Aβ%≤A∨≤A@~∀&¬*N!ααb⊂H↔:4
Q(∀
)s∩4jD⊂U0i85β"A~pr4	D	)∀⊃,(∀FB∧P%)∀h⊂#aT&_DDNcgP)⊃d∧EASE @∪↓
→β∞↓'≡A'∃(\~∀%!+'⊃(A I≠∃≠¬⊂h(&*,jB9αλb≡∞B⊃_$%NM"⊗ *λ→E∀_K∩∧Ld
¬∀⎇HX5$MhT∧∃,98U h!∀¬≤\~λrαkEλeEα⊃Q LU*:B∧<:
# h!→T⎇4Tλ∩bk∃
αHH↔9u∀Ly→dbλ~$8h!→T⎇∀Tλ"bE¬⊃⊂K\9ye≤,D	tu$t
¬∀|I~5"∧*Y4- Q!∃¬-9	"¬αH9t`*c"B)YuQ(
%(jλk∀
#!↓2∀TK∧⊃⊃h:∀p4AQ@∧e)T⊂*⊗↔∀j'i_βE#ah∀→]∧d∪))⊂ K∀ TFB!ah)
≥∧h*Td!⊂())j,
FE∧iUa⊂ ⊗∀≠X∃YβEjg∪%h'h∩∧EεEβE

λ	¬
GARL1:	CALLF 2,QDALETE	↓;GARELEASE
	IOVE R,-LQ¬ "αH4(→
%∃RλAD<≥λ∧p*!"B2J:λ⊃⊗αSTOR0λ
(LRJNQ∧:εBI h ⊂hαQpj(3∞B*H⊗P ⊂⊂i_V T_@
GAH@∨∨,t∪≠∨Y_
%α
⊃E #⊃Q M≤9~∧b∧x:¬≤
!Q LU*:B∧∀→J4(h!→%∃≥Dλt
¬&⊃P@HαC"AQ@εEεB)l$ Td≥∧h∃i`⊂(!c$lDY`∪U@¬$@Bα↓5αh8∀dd_)D(h!~¬-≤∧
αdB.th~Q(⊃D¬(⊂	bQP""c∃e
	PUSHJ P$SXHS@  4⊂∪≠∨Y
A)(αb⊂ (αB4	Zλ⊂λa ¬∧h∪h 
 P,	∀~)β!6E~!h∧HI`≤D~9α∧
λ
$L@Uλ∪H→αbFE⊂αNHCH8	SETX∧A(X$∩w"
~!α¬∧∩&≡hYRαE8→T*∧→Htm∀~I∧jHβ"B*9p4⊂$λK⊂#!λ2⊂rε↔@∧P$∀)(
 B,(B)
λ∧∪∃+5!∃α⊂¬DE9AQ@∧d&∀-⊂!V
!∀FEαl ∂RT, ⊃ε$~∀&U∩N@"λ→¬≤C⊃Q$E9G∧f)dλ*⊂-D∩w
∨HAβ)∨5&P⊃ααI∧M~	→e≥4Q4d
⊂∧ jλ* λE HASHKEY IS P@∨'%)∪-
4⊂λ&*∃~Q↓ααJBHhαC"I@$f$)R≥	MOT¬∃α ¬E@7⊂4pi→(⊂∞'∩d∧\>←-1P~∩m⊃β'⊂αα0∀LDλd
≥IK⊂hPα4∪j	H⊂λ⊗βE
SXHSH@pλ&*,jB*λ⊂	@$f$)R∧@]i⊃h∧U@%9&A&[∃1!$OLA⊃β'!↔"A%_	α⊂hP&"J∃QαRQdλ4(→J4B¬J@¬Zq1s	@cFE∧SdπVE TT,ST(TT)
λ∧e	∪_A∃%'PAA%!% %8ε∩
9∞+∀)I4qα%@)bbP∀h"$iT∧¬∃'a⊃'2≠P&"J∃Qα	1D	$4!~¬-≤αλ∀¬H@εE∧R&)-⊂⊂T⊂λA$~∀&¬*N"$
αe≥	
4CQ!∃∀⎇DλBbk⊃Q M¬X∧r∧λT∧ ⊂,Dλ
(Mα0≥αλ¬DλhαB4
Zp∧%⊂∀⊗)`_HSH0
	PGP FXP,T
∪β⊃λAλYP~∀&∧zB)αα¬@hPβ"@↓Gtp$∀d≤⊂)V$)d7 SXHSH4 @'e≠⊃'⊂ααNbλ∧rεT∀p$∀d≠⊂)V$)d9 SXHSD1 @'a⊃'λdααNbλ∧pf∀∀p$∀m_P)V$)P⊃A SXHHS0 @'a⊃&bAM1⊃&@⊃αNbE→F_Q!P@*v∩∀iπ∞B3)@hεM D,(A)	8π
→∨9+∩4PJB>BRαA04Ph ∃≥	
4C;!→T⎇Q(⊃¬E⊂*"'c$l'∃d@
	POPJ P,

λ¬∪
≤αα∀LyjTjE1Q%≥Dα⊂	d
≥	HRRZ A0QαR∩m
&≡u*44!→%≥αλ¬∃¬HSR∀i↓α@
	MMP
A⊂Y(~∀%!∨!∀↓ X~∃t∩∩`.,r⊃αxd∧L4dλ$L<h¬3!Q@εEεBαSYMHSH:
SX@⊃≤AUh→	E∃Rλ@¬λ*".j;30SiAα@
	HRRP∀A∧XbQλ$~∀&U~AαR ¬D
∧β2∀i↓α@
	SKIPA↓λY(~)'1"α9β#Pα33j@ ¬I D,(A)
λ∧∪!∨A∀A X$∩w%β9	∨5bαεJJ
H4(Q!P@*v∩∀iπ,B4k	∀s∀a⊃,¬f$ThεE∧Tl λ@' h$↔8dMDβP
fCE	SXHS@⊂@@H%n~dz0∃,QQ$$∩A~5DE8@!⊃,¬b'Ua&"FBαCX$	SX@⊃≤→D$↔84`9αh&"V∧@
DX$	S@1!'4b∩$p∞∩Vα	D-@Q($: ~;∧E≤∧¬α!↔pR1iJ3#"A~v∩∀iε ".j;30SiA ¬$'	⊂⊂!"T ¬ATHNKLOG+1, SX@⊃≠
∧%@9
Td]1Q M≥	
4C0α".j(3Q∪iQ B4k	∀r
A⊃,p4J(4#"I_SHEZv∩∀iπ+3U~⊃4k∧
p4SDutSi@ π LEL@∂)⊂ααRε
d*t4λhP4*&4qαα
4bε≥∩Xh"NbE~⊃E@!→T⎇Q(⊃¬F*⊂ ∀CE%`DPi`⊂"_XεE↔D@	;EL¬⊃α|1α&~p∧∧$∀iH∀8h)_db∧H(ddu85D4H_reXQ*5DE8B#@!01⊃∧λλε∀ JF@
	PMP@∀A@X⊂∀+Q⊂K\YhB∧|d	∀4rλH$4d_q4;⊃S⊂(q"C"I_SH⊂kλS⊂1eKc"Tk	∀pl'∧fgk∀P"⊗_J TFEαe))jλ)l$)Q→
]		0↔9λA∂↓∪
≤A
1
→β≤~∀4TJ~9α%B~2ε8bl4*≥B"NiP&6>4)α⊃F5∧
HQ)4λL~9α∧"F⊗hP~:T∩∧EF"D
⊃Q$\λ→Yu$

AC
D∃⊃PT\⊃_∃≤B
ECQ)4λM	z"∧"JAPT\α2s↓≠∪tHλE*⊂%⊃"B2J*uλ∀k	∀qAQTεDDNbg"⊂∪c⊂$c∪⊂",#∪ cFEβE$c'λ$'%f∪cV-FB)l$)L`X
	PUSH P,A
	PUSHJ P,USRHP@		   ;Is this aUSEBHUNK?
	JUMPE DSXHC1
↓PUSH P,YSXHHS0]
	PUCH P$A
	PUSH P,[QSXHASH]
	MOVNI T,2
↓XCT SENDI~∃M1⊃↓≠↓h&6⎇2∃α⊃bB¬$∀PJ*JN ∧¬∧⎇λ→ hPβ"Tk	∀hλ@:	IOVSI T,-1
α   2DIF [LSH T$(TT)U  1#⊃+≥,`∩(LBJJ%¬!1"¬Hh &B-~!αAe 4(ε¬*N!α5BA2I;4*NDBMF	PJ"2JRα¬1α ¬⊂hPα4∃*9⊂H∀¬Jv∩∀iεβ"B*)uλ⊃¬F!"B(_⊃∪ λE
⊃V
¬ εE∧Sek"P∃⊗⊂(∀CE	HRRZ A(T)
	PUCHJ P,SXHSH⊂
∪β⊃λAλX!
1 R4⊂∪%∨PA@1⊂h &6⎇2⊗%α"a"5λ¬⊂hPα33jHαP",(P ∩~(∪β∨¬) A(YM1⊃&@04(→Yu$3(∃¬E∀
#!!2TTjD∀r∩
60C"AQTr∩
61JB*:0H∀¬JMl
f!"B2J*uλ∀	Z⊗⊃∩AQTεDDNβENDLπA∪→_A"tZ2>≤hP4(1nX~∧
∧βs4d	04⊂*F(∪0*λ5@⊂∪`h j∞F@

SP¬)Q_∪≠βA!∪≥∞αα~V:≥"& <βPc!↓α@
;;8εA6
αεByZ2∧U3PjI3sC!πnj`¬	04⊂*Iq4hλiJ(⊂h→⊂ε)P⊃'⊂ ∩EP@β)∃	→2X↓
β	%_
:	~B¬≥X84-≥9~d(hαN`≥Nβ ATOMS FROH
A$B∃α∞-∩Jε: α0≤∀~*$
Jd∧∧`:∃∩3i@ f⊂)Qa`∂ND ARG
λ;;+↓'!π%
∪~α0≤∀~*$
J¬	U-≥Dλ$*∧∀
4
∩∃∃bα¬(ZE-∀h∧h	@$f↔εBα	∃≠¬!β)∨5&t4PJ6 =hY∩∧λε(fPh j'SiFE∧Pdπ@∃∞ααQ2Mα~t`(3∪thQ B0)@e&⊂*)Y+g⊂d ∂SE
∪'-∪!
AP∩∩%]~⊗∞yhB∧
(pλλHαc jS*)P*∪β
α	 PUSH↓ Y-∨	β%%βd∩vAπU%%≥PA∨¬βI%β $hP&&>4*%αR ¬BD≤→IBβ
E⊃P@!2⊂S	T∃∃⊗XT ∀CE	PUSH @,R70
	PU@' A¬ "α¬E@9βa*)Rm(
	;L¬+≠¬∃$A>2ααV∞\*RL4TjεBε ε∪@!4sthx(⊂
*∀# _P)	∩wQ(A∂Q&A¬+
↔(A9+⊂⊗
-⊂4(∀	%∃≥D	T
∧~@∞!Q@∧d)∀-⊂ iT∧ ~BαBA$Q!∃∀⎇D
E"bV⊃P@L	J%B∧∃H¬%%8~"D
&⊂
!↔qQ5λ→λ⊂U(9q1β!↓4rr*λβbP*∃∧@
	 HRRZ A,@DTSAR(AR1)
	IOVEM A,(P)∩∩m'β-
↓¬+π↔∃(~*l
BεQ⊃P&N.Mα1α	bBA$⊃↔4l
λ8∃∩∧Izt`$⊂U0i85β"A∀⊂TTjD⊃04λ~#"A→∪∀VDλ+
⊂E⊃ ¬∧d∀)(
 B,(B)
λ	MOVEH
A∧αa"A⊃Q MD8@λ¬VJ⊂
!⊃,¬a`S&⊂ ∪UPP@→∪∃λA
,r≥⊂∧ggβE	JRSPλA≠¬!β(d4⊂λ$)X∃∧
G↔ M≥X λλk∀∀F@X⊂!		;E@1%(XA∀*RVJtJ0∀h∪R)A ¬∧iUa⊂ ⊂,R70+L~∀&U∩NAα4
2N∀hP1nX~∧dM8@λ	X4⊂p*$	∪0*∧⊂ε`h⊂β @≠βA∞ <βH		X4⊂p)@⊂ 
APL0 MAPL1 MAPD1B
~∀lp
mααλDb¬8¬∀JXu∃4HT⊃StD	04λ
84R1*1"NfgDV⊗)⊃h∧U@%8∩∩`.d*~QαD
22LOBBER THIS WITH A JRST
9;;			;AF L@-HA∂>Lr≥αRzαα*λε⊂jDq1β∧	Pp3	D∪Q1(D⊃Su∧λQ(∃	λαi"FB∧A&`T& ij∞α	JSP TT,MAPL0	8ππ>$)↓@4TjεB∞
⊃`⊂L*:α¬%EIT
∧F↓⊂K\9xD*β⊃Q"$l~π LU8∧¬%"β∪0*	α"'a`∂DE 2~∃5β!ε@PJ*NA¬"Q2⊗
α1@$KZε <HTβ_h)X∃∧≤y`∞A→Ttλ
Jλε&`T&_∧DNβC@∨	∀@h~∀⊃≠β!π¬_	h→*5α¬J@	X4∪↓⊃,¬agQ ¬  *4⊃≠β!0`t&z*<T
Bdl~
t`( ∧D]S'ibP∩c⊂'g∪,P'g⊃P i#CE	MOT¬∃α ¬E @ ¬∧`Q  	 D,1(@ $∩∩`. ∧∧D
4λ∀$∀Q4j4⊂πc⊂∪$i`∀DA∨9¬~Rε∞Xh ⊂Lλ∧S	∀⊃

E εE∧T*id P,D
    %⊃∪A\j0≥Tr(
Jλε∀*∃∀h
-DY≠β!1∪'(~(∪!+≤AαAJJ@HKαp	`Uα@
Aπ=	∃↓h∧∧4LzZ$*∧βu5∧	3q⊃$	⊂5⊃*!α@
	TLNE TT,2		8π'.M↓α&→¬:∃≡ID∧(αP ∪AT¬∪≥∞ααVAαα(U≥3∃∀aQ@∧P)Rdh @ A(λ@" ¬⊂HKαq3
8(⊂bId  JUST REP	+∀qα4~*5"∧β∩4jD⊂4h
@ f*bCE	  MH∂-≤Iα¬1hε∩Dλ∧FEαbhλCH A,-DQ⊃⊃⊃∪@93R5∧λαk"g∃*`f⊂∃αALUE S@→∨P@ZAααα0∀⎇t	∧
~λi∃∃≥Dλ∃∀h
⊃I@∀@
	JSP T,SPATLπ⊂∀Q!∩∧U*:B∧l~	C(Hα.qI@dπE@20A∪(OLA≥∨(αα¬αNβ→T)qβ"A→∀TVDλhε∀ JF@
MAPL1:	JUM@!∀Aε@2l
B1THI`≤4yxUJ@λ∩5∧zh⊂ ⊂∀lfa'S⊂+dj∩⊂ ∞O FUNCTIH∂9¬αJ>B-∩RdQ!∀De+$∧%λ∧!TCE	HRRZ C,(C ∩~(∪⊃%%hAε@1D→$4!_4LDλ"e~*$
Hα".j(αfbfPα@$X↓'3≠¬=→&A	∃_
>RLr≥α~αYd:α 	ON PROPS
∀∩↓∞ε&d)α	22⊗bBα!⊂KZλ~$*∧9ye≤,8¬5	~β"P$Sα S@35
>D
5∧8QP@!(λ∩J*uλ∪(~⊂ε_FBα	CAIE B,QARRAY
∩A
β∪≤AλY#',∩H (αB(∧	TTu∧	04∪εX ∧D]Qdπ FIGP%
↓_∞@-D	$83∪λλitH⊂$
u0TD	tH⊂**P6#!∧a`dQP!⊗(S)ja)βE	 JRST MAPD5		;FOOEY, IT ∂&AM≠⊂⊗⊗αI∧L@Qh∃hT⊂p3Dzλ∪∩)@%P ∀O WELL
∪!U'⊂A1∞ ,~	C_h!→¬∀d∀λ∩bD(8∀db∧∧%EE εE∧SdπVEI B,MAPL23
λMAPL1B0∀∪!%%~AλXZbQ@R∩%\⊃α"ε~α6.∩*↓5αN
2∃α~AP@Mλ¬4i∧∀⊂!⊃,p	`U ¬ FN (EAY@@
A<JR!αT~ε"D	2b∧α3@⊂∪ ¬F@(αα"ε22H4(→*%≥λ∪0*	C"@↓Gs04	Fh⊂s(~∪
H	X4∪h∀∪04	FH∪0*	
P(	X4∪
d	04∪εX(∪0*	H∪(~∪L$	04∪εFλ∪0*	
λ⊂iX4∪d	04∪ε&H∪0*	Lh	X4∪FA C"IX4∪g!33uHT⊃

¬ ∧D]Qbj⊂#∃e!`∀IMHAπ¬→_A
I∨⊂∃αα:D≤αc"A~⊂ε'"H ⊂7⊂000  $∩w'↔% A&2α&@"λI∀$rz@λλx5λ⊂iIpPQ*(αbεEαP 
RST EAPL3A
	IOVEI D,MAPD2∀		0↔∨ XA/1_BA≠%∂⊃(A¬&A/1_A+π∀A≠∨	∀~∀&E∩J5α ¬Bk∩λ¬⊂HKαh⊃IZH⊃3H→⊂πa!⊃i a&⊃P#')CE!f`T&≠⊂~
MAPL3A0∀∪5≠ ~⊗Jα⊃2⊗
α1XQ!∀l@uQ3$λλε⊗@1(P ∩∩$p∞@<T	tde∀	d,,D
D`4⊃∪hλ∀⊂ε`h∪→P!d⊃a` OL¬π
~)≠β!_Xp∪≠∨Y
AλX4fQ R$∩wλAA≠∪≥	LA)=∧b&NQλ∧∧l@H⊂	j⊂a`
	HLRZ C$-DQλ@$HI`≤~λxU%~λ	tL@U⊃4D
⊃h∪λ~uλ∪hd∃P3
X!"B)*34⊃$λi∪0*	
b"'h∧@⊃∪LA∪&AIβ→→dAαA≠¬ A∨$↓≠β!ε4⊂∪⊃→10A∧X4dQ R$∩w∂PAπ∂	∀A∪≤A1
(A!β→A=A∧~(∪!2t)α	1 h %αU∩NAαl
B1`HIf ,~λ4@H∪tD	04⊂i@dε~∀%!+'⊃(A @2≤z0∃_⊃↔4l
λ8∃∩∧βt@	X4∪∩*:α⊂⊗@ L¬∨)
↓)⊃β(αα∩∧α4h	@$fεEαd))&H V∀!JD@	;CLOBBER @∪≥Q_
α⊗t!α>→∧b&NPhR6εBc2¬h→
$djλ⊂¬V*⊃∀BDY`∪AT@
A≥∃(
αH~5"¬	y∀e$X!PTl~	C 7@∧fgUα@
A%!1"⊃Hh*6ε∧aP≤αB2
*T¬⊂ K∀**)		3@)¬↔
Aπ⊃$A∂↓β→1∧b&NR_h &6⎇2⊗%αλa""α#"A~pr4	D∃∃βε∃⊃
#!!(⊂3i((⊃β	X4∪
h⊃"B3)zβ"P"**∧DNβH
∨.↓λA!∨%≥)&AQ~A2M~QEα|qαNR~-αε<
&(Q)T
∧F' LLzhR∧∩ER"Eαα#"A→3uQ$λk∀α!↔tp5HT⊂h⊃IZH⊂ 
~αdaeH!bb UβAP∩~(∪!+≤AαAEP%
λ∧DDNβP∂"-∩∃α∞b1αRzα~9αα9∧`:αf" R@)+I_λ ()X∃∧c&∪ M≤αr4λt⊂+
λE ∧D]Q⊂('dSαTS TLεA-
)∨$A=A2M~RL4PIα*J≥!α6ε∧aIH⊃↔5∀XYT(αi⊗⊂∂⊗g⊗⊗⊗,,⊂≡IS JUSPλAβ→)⊗Iβb2&NαIcp@ ¬∧fSβP
∩↓)(@1D	$4!→E≤Bλ¬∃¬E4q1iIqc"A~p¬dh∪⊂)`∀!)(@$HI`≤,h@)@c⊗f$Th∧ @)∃' ~∀$A∃%'PA≠β!0h`~∀%)→:*α∩c⊃⊃∪@:p¬dhλ*g&"TiP ∀HIS IS A "CAR" KIH
λA=A6
4(∀	∧e∃αH⊂%E⊂*#!∧h ∃SH P,A		3@!U'⊂AβI∞~∧∪¬_∞*¬∧!26ε∧aID⊃↔4L2	iu"∧YhBb∧yt∧9⊃0rd	u1⊂∪α@ "α@λ	I4qβ!↓ ¬&`T&~_≥αe*fh⊃P V&Ph"~εB∧f"iP-idV!$j⊂↔''g-LULL TARMIL¬β)∪=_	αxd∧dM8@λ¬T⊂ε`hλn.FE∪`h&~∞∧fgk⊃P(⊗!BDY`∀HIS @OPS OFF FASTLY ALY @+9≥⊗⊗$*⊃αNαJT4⊂Q!∀De+$¬"bV5¬αHα".hx5λ)D⊂∧g Tλ
(M~V
%¬!1P4PJ"J2JαQ1V⊂

E εE∧Pb"⊂(*∧DDNβFASTLY @!= A>41α
9bα6.∩*aαε2bα2&NαJ2b∧X¬⊂e@∧¬∀∪A_∞Aααb∧$⊃↔44Lh→B¬4→JT*∧yxU~∧α3@⊂⊂FA∧j∪-⊂ @,-1∩∩m0
-)t∧Uα(∪λXUλ∩λ→α#⊂#Pi! cQF@
CMAPD3:	PGPJ P →≠¬!_f∩$p∞"yz$
J⊃Q hPβ"S(~⊃LG∧e*fT ¬ A1≠β!_P∩∩`.tJ1α&~α2>Jl
1α⊗t!6.→lb&NPhP&N⊗αK$α∧∃H HKαs0+∀⊂⊂5HT⊃p4H cbP∩dε LEFT HALVE@&4⊂∪⊃→I
A(X!λR$KZQα≡-"M↓Y`∧L@H⊂p*8(∪qD	∀p
a∀⊂!`f∪∧A∧fShεE TT,1(D)	↓;GEPλA≠=	∃↓D!αBy→e%~λIrβBβ3@⊗,,,∨λ'g⊂)U aeDCE	JSP R,(TT)		8π
∨$↓'#¬%LXA∂∨∃&A)≡↓!∩H⊂EY@εE&Ph"→→N∧h!jλ→PλD$∩∩`.<yα"⊗α(R∧∀z λ	Ju0TJ1"C"IX4∪FG@∧fgUα@~APY++%~P⊂H↔8t`4⊂∧"i⊃P#'iλ*g!f∪βBBERABLE @πβ→_4⊂λ&6⎇2∃αQc→""α""'i`k"H)`∂ME OF TH@
A-*0≤Bλ¬∀I@h¬BLE BP∩~(∪⊃%→$A(@1DR≤IHbβeE⊂KZλYe$4R3Ht∃∩⊃$
53h	X4p	P∪dπRE DIRECTLY
	H∨-∃~A(XP`⊂∀!~DeRλ¬⊗X@
	MH∂-$A$Xb$∩w$zβ	α6⊗rMα∩≥*∃∩λ8∀d`Q!∃≤-K)R¬-YyhPα2TJ:λ⊃5)Y⊂#!β≥b`h∪~P&`T&~`@ MAPL8 MAPL8B MAPL8C MAPL8A  ≥≠¬ @@:l
AEαα8U"¬8ZD9c"C!	04∪εW@∧h*Td⊂ ⊗⊂βHβ!0hλ$¬]~⊗AααZα∧∀z λ
Yβ!f'PαBE@%¬↓→
A→_	α∞b0$!→T⎇Q2(λ⊗&`h∪→~εEαe))jλ&`h&a

MAPL5A0∀∪!→%
APXZbQ@R~∀∪
β∪∂
↓(Y1ε4j∩∩w
⊃βπ⊗↓_
V6∀*Iα≡2αεJ≡~α~>I∧20 (!∀∧U∃:@∧l
	FPHK8it|-∃D¬$|t	Tu∀λ∃∀≥4λd⎇∩λ:T¬∩λ8∀d`Q!∃¬-9¬αd9X∃∧c1Q LlziR¬%EJ@hPα3∀i∧∃∃⊗
FA∧j∪'P F
%!`f∪∀T"*
DYf`RbP"hλ%!`f∪⊂#c⊂∀$cd*λ⊃P'cλ i#iCE	MOT¬β∩AλY!	→∧dQ(R$p∞ ,xHRβ@(⊂λ"∪ Y⊗@< εA>2αεJ≡≠p4(→*%≥α	X∃∧c_!P@@ ¬&`T&≤≥∧R*f`"H V&`T&≠DDNβH
π∨9αO∪≥≤A≥∪_↓	∨ε↓(
-+∀∧dMJID(hαB2
*S(⊂%E⊂j"!↔ps∪h!"i IH
)≡↓→β'λαα0≤2λ∧∀HZβ$gjTP*$$Sα@∞~∀%'↔β!∀A,]%M(~∀%∃%'(αα6εBcB∧4λLj>@4T
Bdλβ"S(~⊃∞⊂G↓2⊂TK⊂**ε
*⊂DDNβAN OP@≤[
_∞∩&t9α>→¬""*λ∧u*λαi⊗c⊂ij⊂⊃∪ ib↓βE	JUMPE TT,EAPL8C
	HRRZ T$(TT)~∀%∃+≠!8A(@2l
B1b⊂h &N\JB¬αλbRP4TjεB1D→`⊂J	Yu (2(⊂%E∃
#!↓2TTjD⊃04	FP#"AQS04	G⊂.B)Yβk"P∃⊗"εEαh*`∪HJ P,LAST		8π
∪≥⊂A→β'PA∨AQ⊃∪&A9&A
I≠∧4PJ6 =hT∧"eAQ LU*:B∧l~	C (!"C!%S04π!2Tt∧
∃IX4λ"'→α`h!Pe
	JSP TT,&MAP1↓;MAPCON
∪∃M A)(0X
6εβλ%nX~∧λh!→%≥αλ¬∃¬ES04ε⊃,¬f`T∧¬∀∪)' A%!1:6
↓D%@9X∃∧≤~!P@!2Tt∧
∃IX4λ"'d¬APLIST
,MAP18∧∪∃+5!∃αλ¬D:⊃t∩AQ@∧j&∪α@
Aααa5D%]∩&∩_:Td⎇X4∧9⊃0rdλSt@		tTR(&"FEαP∪ ⊗ALUE		8εAπ∨5!∪→HA→∨'M&~∀%!+'⊂↓ Y∧∩m→∪'λαα& 2λ⊃B∧∃Yh5$Ly`λ	→β⊂!,
∪!U'⊂A1α∩g≥U≠¬⊂∧∧L@H⊂
*λ$iP$S ∧EH
λ	MOVL¬∩A ¬C⊂@ L$∧A4p
a∩P**,,¬≠β -α∩`.dzN&:8∧∧#∧⊂∩λh&∩α LYzd`*h⊂
*α]`∞O L@∂βQ∪ ~∃¬∩⊗ $βphλ→⊂ε'kQb⊂FEα@→'∀∪∪∨-9∩A)(αa5:6
↓6¬"αJBHhαB2J*uλ		X4⊂p)@∀**∧CE

λ¬' π LU8∧∧"e8ZD9b".j:αa) 2λ
∧∪∃1π!∧⊃2∧⊃↔44⎇*JT`(5⊃3∃α⊂''U⊂*`∪ED BY AH∂∧J2,Dλ4l$QQ LU8∧¬"eλID`)2c"A_4∧!dλ!⊗ FB;$BREAK $@¬%⊗`↓∞	α≤q2
	¬*∩4$
T∃4$
u$$
T=⊂H∃i@ a⊂#Pd!⊂(⊃&!⊂#Pea⊂$Sd∧B FACB BKCGM@¬↔π∨4`A¬↔
≠⊂∃I∧∩.∞≡hεB∧≤)84kαλ)4≤@s( λ%agfLFEεE∀h¬BTTL	VARIH∂+ε↓
J⊗YαJ>-"& 4X∧c!! I⊂J(02`≥αe*fh⊃P V!T'h%∧B]U!)⊃`eP⊗H)ja)λ→αE∩⊂)%X≥αfgk"RP V∀⊂∀@		;A = BRAAKP, B = BREAKID
	HRRZ B,V.
∪⊃I%4AβHbP∩ZMα2VLhP&"J∃QαεI∀	2Z&$J~_4PJ*NA¬!2NB,~∀LhA⊂K\ItαTtzA"∧∀→hB¬U!Q HMH~¬∀1α"'o(FEαDj*,Sc#∧DNβ↑W
		VEVAH@⊃∨=⊗∩`.-2ε"	ytXh!∀ααα∧∧∧αeea⊂KZαC"A∀λλλε∧⊂4@_K+$h&∃iD]UCE	    0 AR2A,VIDAFF	; ~~(∪∪∨-∃∩A∧X⊃	⊗ZL~∀4λLj>@4Y∀∧~@∃3U→!"B)YuQ2$λ4LP%J∀U5	↓ ¬∧e∀h⊂*,SPECBIH
λ~(∩@@@@A∧Y)e∪∪β≤4⊂∩@@`AεYU≥)3∪5β≤
∀$@@@`↓β$eα1(C)I!%∩~(∪')%P@bnYm'∪1¬%(A9=4s¬↔!P@C9:4∀∪⊃%I0Aβ$DY-≠'≥
∪→L~∀β)1_
αε∪	1IAβ↓A@4PJBVNDQαA1%αJ&:_h(&N%∩Q↓E:bNBJ$~H4(Lj>Z∃∧	2Z&$J~~⊗∀*0∀≤QQ LlzhTj∧∃JdM∧JZ0hP→Yu$,∀λBd∃)JK\jYd≥$→yb¬$tλUD,8ZD(h!~¬-≤	$¬αd*(t,p↔84
$9∧∧tDλU∃∃8ZB∧
)zTtαλ∀¬∀,_AT-∀→EU¬∀→jB∧dyzαh!→%≥αλeDdLiXEHαB(

4r∩D
	∩5λZT⊂R!QB4∃*9⊂H∀¬J3PR)@ εE∧R))j UJBIND
∀~)β∧`(M~.&BpαP∩u*8U K88∀dbλ*$,4¬RαU*8U"∧X∧TIZA"B*	t∩H
¬β"B*9p4⊂$λK⊗t%@)↔*(↔F@
CN.BB:	MKVEI B,QCL∧]∧∩mβ⊂≡:αJ$`9α∩a⊂αREAK
∪!U'⊃)¬↓2&><∩24PJ*JN ∧∧)pss&!"C"JX⊃PFA→3uQ)∀⊂K∀*X⊃B.jYQ⊃1I→β"b⊃*g!j∩e`∞ BRAAK
	JRST BKCMH
~∀4∃+¬-λt∪≠∨Y∩A∧1# ⊗
0I`≥h)u,tD
d
∀__$d
λ*$,1Q LU*:B∧∀89thh!Q%=⊂0FA→3uQ)∀⊂K∀*zα D]Ui'g#H*,h"H'c⊂ T!jfbS*⊂!)⊃`eFEαe))jλ!%agSFAεE∃cj!:	MOVEI B,QUGT	;UNSEEL GO TAG BRAAK
	JRST BKCMI

WNAB:	MOVEI BQS@≥α$w ≡J|r≥↓
∧
J∞M∧∩J,→1P@L**5"∧)84l@#"C!(βaf!∞∧fgk⊃dP!⊗∀caf∧NβFAILED DO GARBAGE-CLπ→	
(A≥=+∂AM!βπ
↓↓%β,~∀&U∩NQα∀Zε <QQ hUλID'@∧fgUα@∩AλY#!	0∩w!	0A∨-I
→∨.↓
J⊗X4(→*%≥αλ)4@q#"AQQpshπ@33j@ dP!(cagB]caP∪βP
∀22>]∧∩JεεXh(&*∃~Qα
\~6 (Q!PDLyH#@LYzd,Jλ!ELyA∪@9+sh	Itp	`QbP!)⊃`eFEαe))jλ!%agSFEεE⊃ aa≥αdgk"RP!⊗(Q aD]Q df"Q⊂ aj∩e`∞ REQUEST BREAK
BKCGMh~∀&¬*N"	¬↓2&><∩:4PJNεZ*α¬αλhP&BVα9α¬αH8$\≤T∧β!!4⊃4i∧∀∀Fvβ"B*
4r
¬∃S4hxR3⊃*1"B3)ZSR(
EC"A→TTu∧λ4TT
)3Uβ!(RpsiV∞C"A→Ttλ
%∀Tu
&@εE!∩acf@28∧A∨Y
Aβ$IαP∩Z*r	:∀HI`≤-*)u∩l*(TZXYe$M)ydl,jAP@M99u%"λ~#∀
IJ0hPα(∩J*uλ⊂I8pπf@3
∪⊃I%4AβHbP⊃λ~#∀
⊃⊃⊂KZα∪pH~TP6$¬H⊂Q(_∃⊂0IH*#"A→∪∀VDλ4LP%E⊂4@→⊂T@FEαi`OTT AR⊃,SA
	 BRST BKCMH
f~(∪'π∨Q(Aβ$IαP∩Nλh %αU∩NAα∀Zε <T∧c!(RpsiV∞B2J:λ∃⊗∀h"aa∩e"εEαX⊂ F∃αARGS		;@'Aπ&aαZεe*∃α∞,b1α≡2αεJ≡_h %A∧
IE25∩⊗ε∩$

2∀hP%Aα
⊃J¬24zαεJ∀
d4
≤∩.∞∃απ M≤X¬⊗Dλ+⊂Rh→pεP⊂
λ	PESHJ @ 1→∨∪≥Q%%+A(∩∧∪5≠%∩↓αP∩R∃*R 4PJBVNDQαADH%∀02c!λRpsiV,B4
Zp∧%⊂∀⊗*g!∩dεD
	JRST UNBIL¬⊂4Ph ∀∀89tk≠!~¬-≤αλ∀¬KpRpi@d¬2]
λ∧∪!-~!αAdλ4(~
U≤Bλ¬D:⊂πh R∧¬α	MLπ ~⊗Jα¬ $α1th+αE∧Ql!d A(	-
9	:∀hP&~ε~α`≤@⊂πidSα@∞A4
2V∃∧20≥∩λZ%∀⎇%X%∀02`⊗QdεVIRLπ⊂~6,rQε@QQ hPc\→jD-∀d	∀e%)`d	3P
)∪α1 INTRN IL¬)%≤β!α6ε\1α6ε\1EαX→3∩∧β02fD⊂ε`eLFAεE∀h¬BTTL	INTERN FUH
π$J0≤@H⊂3HD∀Q3λ~α"b ROU@)%_
-1Q hT→jD-∀dεB*
4r⊂∀⊗ DDNβH∂:eIα&:M!αε:$*JMαLrR-)`λλ~α⊂$g∃)'⊂⊂
λ¬∪≥%∩0∪≠!~¬-≤α∩H
¬∀∪QhZα∧D]Sh¬S@(ααNεZ*α→↓T
4,*λh∃≤@∪p1↓Q@∧ibU'`
 LPNF
IH
)%8bt&≤*Rj5¬∩& 4aQ LU8∧λ
Jλε j∪d)d∧B]`EAT¬⊗M∧
R>Tz2∧D~9∧\-α(∩)@⊂*εEαd¬OVEI ARIαP⊃λ⊂
!Q@∧d&∀-⊂!V
 TFE∩dεTRN8∧∪)→hA(@1 εβββ∧∧β!∧db$UαI @(αb0≤∃J9∃@!α@
	HRLE TT, ⊃$~∃∪≥Q%≤ht%→∨π↔$∩∩αwM_
αRD
Qα~zα& 5HZ%∃-λ@λ
9β"`eTP)gfQh λING @∨≤ααR"∀hP&N9~∧`$⊃∃I@a i)⊂l@	;Lπ¬→∪M(A¬+M(Aβ
Q$A<)α$X9∀$(∩5∧	4sU∧
⊂∧"i⊃PεE∧H%))jλ$g ∀N@π⊂≤4PJ6 =hY∩∧~β
⊃¬⊃ ¬∧f∀d⊂!Vibcf∪βG
	MH∂-
↓
 %8¬∀⊂β)~∀%)→:p∧∧5α)`FBα	 JRSPλA∪9)≥π≡4⊂λ&6⎇2∃αQd
NεID!$4!~Ddtd
Bd
4π∪h X∞
	 @∃%M(A&u"0∀≤βc"A~Su⊂∃*⊂-D∩∩`.<*Qα
,~.⊗PhP&*Vmα1αR ¬B`%lc"A→⊂ε)-λ V *∃)`i(D)~∀%'↔&∧λ4(∀	¬∃∃αH⊂%H∃∃∀h~J⊃∀CE	PUSH FXP,TT
λ∧∪∃+5!∃αλ¬Dl8⊂↓Q@∧fgUα@∩AYα4Tjε.→β!∀l@uQ(λ~L+⊂aQ@∧d)∀-⊂!V
!P	
	JUMPE C,MAKA
	HDRZ AR10Qε@$hP&N9~∧`$⊂4@_CE	 TROA AR1,$⊂I≥∪_$∩w¬]β%
AQ⊃∃αα94Mα⊃Q$l8f∪@!(λ∩	JT¬⊂ T_V∀ T_TFEαd))-λ i_@,1(ARDR~∧∪M↔∪!≤ααQ2JLr_$¬]∩& 4d	∧
~λεQ*)h⊂d⊃dε IN REGULAR IL¬)∀p4(∀	TmQ2(
Eλ⊂4F(*#"IX2h	
αe*fh⊃P i1,MAKD~∀&U*6B∃¬!26ε\04(→	E∃Rλ ¬λ4L ∀CE	MOT¬∃α⊂¬BD∩⊃Q M≤9~∧`$∀R3HaαA∧P∩))b MAK (4⊂λ&∞j∃α	dαJ:Rpε K[HYd"∧βqH
	P31'e∃
#!∧P%)∀h∧ MAKF↓;CLπ⊂⊗B
∩∃α~⎇⊃αJ&u"⊗J8hP&ε>T	αQIX∀[_Q)T[G!∀De+$∧"bα⊃∀B]agfT i"P⊃'i⊂)⊃cjf T⊂ 	NTERN
	CAME B,(D)
∀∩↓∃%' ∧∧l8aP@!2⊂	)⊗α T,(T)~∃5β⊗f@PJ"JJRαεIEbBεIEHh ⊂L**5"∧β02f!αAβ≥b`ePYP&`R`Ya MAKAMαA6Z¬Aαl
.¬αl
.¬I∧jε.¬*α6ε.λεB∧l→0!Q@εEεB&`e`L]	HRRZ A0Q @$J↓↓↓↓β9T\T	d-h⊃3JJT∧P$SαTG O@¬β%%¬2A
∀z5α∞b1αRzα& 5HZ$`!α@
	MLπ ~⊗Jα↓2E,JN (α(λ∧∧∞h⊂*4⊂πh(∪βSED↓)≡A∀J0∃$X∧SAQ@∧h*Td 
 P,@∂ ε⊂hPα2U)Z⊃(⊂%I02p&8@εE∧R))-⊂⊂T∧ ⊃αH4(→Yu (αdP!'$fεBα	P@+M⊃∀Aαb≤@t⊂iVd¬BOL
∪⊃I%~Aααa"A⊃Q$l8⊂h≥⊂$)∀-⊂ @,(P ∩~(∪'.Mα≡∃αeα20β"B$	TTu∧	02p&! ¬∧iRdh"P⊂⊗+↔(∃i"DPλ⊂⊂⊂≠IL¬)∀qα6ε\*MαBαZ$*¬8ε,D	1H
J
4Q/*D⊂3Q∧	Su⊂∀lfa'S∧@
	 @πβ∪≤αα∩e~;∀l∀yAP@J∧	%∃≥D	T\⊗8⊂hPα4∃*9⊂¬⊂(()`→CLπ⊂~LhP&*J≥!α6ε\	H ()X∀\8∪ M¬X∧r	$∀∀k_pπg)CE	JRSP MAKA2

MAKA0:	TDZA D,@	;D=0 -xA¬+π- A<
Mα⊗mαReα∀*~>J*αR"~4∧83∪β!	02p'∧P&gUα@∩A⊂Xb4PJ6 =i`λλT∧RINF	0↔≠¬↔
[-↓α:⊗8∧∧
∧βs#!∧e*fT ¬ C,MAKAL~∀&¬*N"$
αe∧hydXh)X∀\'!∃¬-9	"¬αβ∪Pi@dεS
	IOVE TT,(FXP)
λ∧∪∃+5!∃α ¬Dl8⊂
!Q@∧d)∀&P F
 i_@)	;@≥π=_

α|rR=α,r⊃α≡2ααV∞\*P$!→%∃≥D	T\⊗APTl→8∪+Pα2∀J+H⊃β
@'a i∀ hFEαe*fh∪⊂**,,∧Vf~(∪⊃%→4AαY↓Q)'β$!λR4PJN.&∧λ4(∀	¬∃∀Tλ∩d¬JJ4
∩λA⊂hTX→4#!~4\Mλ⊂∧5⊂#"IX2h.A∀∩U3*	H⊃β	X2qB'`j'fH#'jg⊃⊂'g∪a&$iUε@
	HLRR A,(C)
	POP BP@,TT	;SHOULD EPIT WITH OBTBL BUCKET # IN TT
α	SUB @,R70+1
↓UNLKPOPJ

;RINTERN↓%∪≥)8`Aβ≥Q%≤dAI∪⊂~Rpε⊂hPβ"Ng]P!gSbP$"T ¬ @)<A∪≥	∃%≤Aβ8Aβ)∨4A/"⎇~∃αBα)∀`*λ∪P)X(∩4d	3H∀	hU1KAQ@εE)∩dεTERL:~∀%∞ε6p∧∧5⊗lm&εlλ¬J⊂π!*Q,D]iPi"`∪ F	α	 JRSDRINTN1
RIL¬)≤@h∪!+π A
!1(~(
∪β⊃	∩A	PXy∂¬Q'∪4Vβ	y=HKY¬

∧z
RNMQα6V≥!α
∃∧z∩4PJ6.Z*α⊃2Z|∩εJJ
H4(→*Tm∧D
E"be20hPα2∪
+H⊂#λε*⊃α!Q@4ri~⊂#"A∀⊂⊂	)⊗α A,@1(D)
	JUMPN A@π!∨!(~∀β!U'⊂A
a Y)(4∀∪!+M⊃∀A1%∪≥)8`∩(Mα6Aα5BA2R h &6⎇2∃α⊃e2>
ε∃∩εd∀PJ*V6∧aαRQbq-L4PJ"J2h∧∧
D∧⊃∧"Hβ"B*	t∩H
¬β"B)
TS λ∃⊂"λE εE∧T'h%⊂∀⊗εEεBβ≥`fh∪'b"P∪`eg SP!a$SαTEBN MKNM1 @≠↔9~dA¬⊃_bdA5↔∃~h↓β⊃
,E0Aπ⊃9,bAπ!≥,cλ↓∞"~3
¬α∞DrP∪$λ4Dud_0hPβ"C!	34∪	x⊃*C!↓4rr*λ(∃⊗⊂βRINTERN	;SQBR1
αMAKJAM~	MOVEI T,PN@∂
⊗D∩∩w≥*αI↓α⊃PPL*YU∧
λ⊃Dl\iR@hPα4∃*9λ∀
A B4
Zrλ∀¬JQ∪⊂*(c"B)
TVS$λ+∀Q	H4Qc!!33uHY(⊃⊗∪eg&HCE	PUSHB FXP →≠-→$mε4∀∪!∨@A Y%⊃→β%∞4∃π%∪9)%≤h~∀&∧zB)ααbJ&:$*J84Ph*6.tiEhε≤Z&B9∧	2J∩d
J4PJB>BRαA04PJ"JJRα	1"λH4(→Yu (αfP!)"& T!FE∧R&)-⊂⊂V⊂λA	
MKNM22	JSP TAHFV1
∪∃I' A↓=!∀b~(~∀4U∩∩1E∪P&6>4*%αQe∩& 5HZ$`@"S2ii-∞B*85⊗S$
⊃PU(a B2J:λ⊃∃¬I4Q⊂!Q@∧e)∀h⊂∀*
DY`⊂NGNK1Lπ$A∀J0∃$X)bb¬IλT`$∀∪t	$∀β!↓ C"AQLjfdλq5λd i Ph"i LUMERIC VALUE

CHNT1P⊂T%)→∞APXb4T~":YP&N.⎇"Qα¬e~e.~@h(%αU∩NQα≤B:YF_h(&Rdr9αR"bNd∀PIα*J≥!α∞"u1F∧Q(4Dud_CPL	J%R¬JEBD
⊃Q LE*+"¬%EF∩E%E⊃PPL	J%B¬JEBE%E⊃PPLHH"¬%EK3≠+εrβαbE
E"MQQ LU*:B∧≤	jc⊂β"C!(r∪UF_,¬∧fSk"P*∃⊗∀ TCEj&∪'⊂*,1
αCHNV1B~
SA%	TDNN TT,[-200]
SA$	TDNN TT,[-1000]
α	 JRST(T!
AHFF1A:↓WTA [NOT ASCII CHARACTER!]
λ	JRST CHNT1~∀4⊂_w	→!%∨ ↓	⊗→λα∩,d∧0Dλ⊃1N$λ⊃P∀F$⊃⊃T
&!"C!
u0U
Iα1⊃(j∀St∧λ3Q⊂⊃ ¬F@+8~∀4SY`≠Zλ¬∩λT⊂P4i_h∩1λX(∪qDλ⊃1T
)tλ∩*7@εE≥Nβ;	(DEFUND@
¬∩0≥αλhUE¬$¬¬BHβ"Ng]DP⊂λ⊂⊂⊂⊂
 ∧@≡@ R@@!DrV"D¬¬∀X
$`:λ
⊂h~H⊗∀H∀!`b⊃)⊂ _$RRRR4⊂vvV$@@@@@@Q¬*RBJ⎇↓↓"∞
⊃αa¬αBεε∩⊂∧¬BJ¬λ4$J ¬BJ∃⊃PC[70¬$D~@λ	~hε⊂)⊃d¬OVE *ALL* GCCURRENCES OF THE PROPERTY B@
∨I
~)YY`~¬λ¬5
I3Q`⊂∪βHA$B∃αhZr¬4→JT*Pβ"C!λα"c(∀'h∃∧BDYc"V()εE∀ h"`U⊂→⊗∧T*id∀⊗ FEαe)h⊂∃⊗"#(∀→
	 JS@ T,DFPR1~∀$@A∃%M(A	
A$4PJ"JJRαRQEλ2HhαB2JY4∪@⊂∃*⊂DFP@$~(∪⊃	%hAαXQ∧R~(LB2J@$λ∃∪
Eλ"HhαB2	JT¬⊂!∀!TFBα	MOVEI C,(B)
8π'3≠	_∞ "	→b∧αh∀
)t⊃4JK(∪P)X(∩3DλH
P)@ ∧ ∀Ap
αBα)u∧4U⊗$
P3∃(T⊂∧g AR1.
λ@	Dpλ&6⎇2⊗%α
⊃J¬1D	$$↔8D,5Y`λλdπ@≠LA∪≤A!%
~)	⊗→α_#@!4⊂
iR%⊂ ⊂,RAM@RLπ ∩∩m%β≠!I_∞Aα≤
R-4λ2b∧~ %D⊂4@→⊂F@
	MOP
∩↓XQβHbR
∀%∃+≠!8AαY	∃c∧∩$p∞J⊗lzR*λ→Db∧x85-∃(Yd≤-4	t2¬IλR¬¬)z∧-∃K⊃PPLYzd,Jλ∃BD
&(∩Hh!~¬-≤	$¬αeλZE¬∀z↓PT⊃1N'↓4∪t∧
	⊂"!⊃,pλ*U⊂#"kH+ f*QP#'iλ()'h⊃i*,FB∧h'h∩P(⊗_CE	JRSPλ@I
β$
∀4⊃∩~¬⊃Ih→	E∃Rλ ¬λ*""'i`∂ME HAIRY CHE@π↔&A→_∞Iα$*~BJ⎇↓αε: ∧∧$1P
gβE	SKMP	(AλY'2∩$p∞N9~¬~∧βs@⊂
 εAILURE* TO GET A VAH@∪λααNf6∀z0 (αB2JY4∪@⊂⊂α,1(T)
∀∪)%'(@!(R4Ph ∀⊃Pλ)]	JUMPE A,(T)		;@≠∨I
A"JJeα≤B⊗∞8∧hλitH⊃λXT⊂	'T⊂ g"λ "c*S∧@
	HRRP∀AλXQαR$∩w'↔%!&A∨8@U'+
β'&(~∀&U*6B∃∧⊃1"QHH%nHX∃4
4
5%,hd¬≥¬(X∀"∧zZB∧Ldλ∩b∧%D∧_h!→¬∃∃$λ2bD%⊃PPL*YU∧*λ5BE"⊃Q LU*:Bβ

E⊂hPc\HXe,rλHT3:λHT3~λHT3≤$λD,3;∧∧$d∧s∧λ⊃1Lh∀⊃⊃1FD⊃⊃1FT⊃⊃1FA ¬εE∞]]P∀⊃"c"gλ≡)`⊂EA> ,FLAG> <ARGS> & <BODY>) DEFIH
ε↓αA
+9β)β∨8\∩)[Y`~α∧πD4d_sb∧l≠∀∧∀(∪s)~α*"b⊂'i⊂∪`hP!⊃P⊃"l∀)⊃⊗⊂λ εE@1A$DXA=$@E≠¬π%≡D8~∀`-YY↓↓↓e~Bε
pα6ε@∀λ$*∧∀
5Ll)yBαEIλR∧t→XR∧|d
DD(⊃U)hu∩3iE+λ∪j$⊂(∪	~uλ∪ha"NngP∧j+Sβ TO FOURSYMBOLS (IL WHI@π⊂Aπ¬'
A)!
A
→¬∞@E≠¬π%≡D↓∪&A∪1→∂β0R\
∀lrv@@yβ%∂L|A∪&↓αA
∨8[≥∪_↓'3≠¬=_A∨$↓αA→∪M(A∨↓'3≠¬=→&vAQ⊃∃α4zJ6⊗⊂α&*∩L~εR⊗~4)m[X&ε9∧b⊗bB⊂↓"&:≤z6Bε$Jα2∃¬:&B↓¬""¬↓∀jε∞Jz⊃αε:"↓α~⊗EαI	α4bε≡MJp4)M[X&>RD*Iα~⎇∩6εR~α~>IβbεJ≡≠q1α&t~2V∩Lr≥αε¬α⊗εJr∞∃α|1↓→α\*f↑>∀"M04SYml&≤
VN⊗~αR"∃∧jε∞Jz↓
∩⊗5*9→	¬"=α
*αJV9∧J:NR,
⊃8∀SYml4SYemαL1αR"*αZε2,)α>→¬""¬α≥:&R∞Bα∩⊗~,qα&M¬!1αRD*9αRD)α⊗b¬⊃6"ε≤Aα"ε≤X4)m[Yα&M∧*:ε
d*⊃9↓∧J9αRDJMα∞
~∃1α$*~V9∧
Z>&%→α6ε\J:≥α$B∃α&u"⊗JB∀*R&Z(h)mmZα∩ε~Lr&Rε|qα&→∧BεN"Lr≥αRD)α∩⊗4J:&RLz9α&t"&∞ε$*MαRD
Qα&"α&L4SYmmα$B∃αNj∃αε~αR"∃∧~VJJ,rQ1α¬∩⊗NVl

2e∧~>6BLb⊗⊃1∧"⊗~&tJR&>rp4)m[YαR"*αZεJLzVMα≤
N⊗M∧
J∃hhQmmm∧2>J5∧z→↓r≥α⊗
yPh)mmXJ~><HI"~>zα
εIHI"~>zα
εI∧∩εi$JB~>=∧∩εIα∀
iαF-*a$4SYmmα-BBI6D
N!α¬∩>B⊗∃"eα&~α>9α$B∃αε$z5h4SYml&4z<$%D:⊗Q↓<2>=↓<∩εI$J↓↓5αtz:∃↓hJ~><hQmmlHH&n&2αR"&~α&Mα
αNf6∀z2t4SYmmα-BBI6D
N!α¬∩>B⊗∃"eα&t"&∞ε$zIα&≠P4)m[X&⊗b¬⊃6"ε≤@&⊗b¬⊃6"ε≤@%↓↓jα:>:*↓4&F-*`4)[Ymα∩,2V9α¬*RMα$B∃α~,r∞R&|qα∩⊗4J:&RLz9α>rα~>=¬*:∩⊗∩αR"∃¬αJ>B-∩RehhQmmlL*bBI|2⊗bB∩z6ε∞∀y↓↓α∀
H$&∀
H$&∀
H4)[Ymα∞|jB&2-⊃αBV%→αR"*α~V:≥"&>9∧"⊗~&tJR&>rα>9α4z=αVt"⊗Iα$B∃αB∀zB⊗J%Ih4)[Yl&N,∩I>~≥*
I>e~V
Iα↓α
ε∩↓(&

P$&

P4)m[Y↓)α$B∃αB∀zB⊗J%Iα↑&daα
∃∧	αNfl∩>1βd2>=α∀
Kqα<B&∞!∧J9αR-∩84)[Ymα↑Lb1α"
2∃αRD)αεB¬∩>BJL
R∃α≥*
I>5~V
I|bNV
∩αBJ>∧*JReph(4*$*~V9Ph*J⊗∧*εQ↓∩aαBV≤AαA2λh*∩⊗39h&"∃∩iα¬bB¬$4PJ"2JRαεIEbB¬$4PJεε&rαεIEe
⊗bB⊂h(%αU∩NQα$*→L4PJ∞ε&*αεIEe
~⊗b¬⊂4(%∧~ε&9∧
IE2jε∞Jxh(%↓∧RJNQ∧"⊗→LHIe"∩,2V9↓e~B⊗
r↓r~29y↓9rq$4(Lj>Z⊗JαεIEe
⊗bB⊂H%m"$*~V9βbNB⊗≠q↓99rIm↓r4bε≥y∧"⊗~ε,bRMα$yα⊗b¬⊂4(&lzZ∃α
a"A$hQmr~d
≥yαM→α&9∧
IEm¬""∃α≤"Iα>2α¬α&~↓!rε∀:My↓rq9%m¬""∃α≤
Iα>2↓"A%∧JM↓r≥α⊗
yph*∩⊗3→h&*≥↓αQ2$2BIDHIn6ε\)αNV∀)α↑∃∧BεZ∃∧
Qα2,
NQα%:=αRDJ:≡LhP%α*∃~Qα∩,2:⊗HhP&"2∃QαRQbB	$4PJN.>%!αRQdbL4(Jα*JN"α∩⊗→≤`4(εDbJiα
⊃J¬1D⊃$$%\jεf
*α"εMα1α.⊗Jα↑.J%→|4*$*→N	PJ"2JRαQ1"
⊃J¬$hP&*Vmα∃αQd"⊗→N@H%n:Laβ∪?/≠9∨Q¬∪↔GWM∪∃α∩,2V9→α	∧4(M~..R"αQ2NHh(%αU∩NQα$*→P$KZBεR$*J9αl
R∞"Lr≡Mα∀*FF&∀)α∩⊗5*9_4PJεε&bαQ2E,zBRε|rε0%\Z⊗f↑⎇∩∩Mα∀*FF&∀)α∩⊗5*9_4PI↓α∞J2∃α"bE⊗J≥"X%m4zBR&|rε11α2J⊗N"a↓~ε-A1↓~∀*NRYb↓~J⊗≥"04(J↓↓↓α≤
&∧4PI↓↓↓α↓α*J≥!α∩⊗3 4*∩,1NahLBJJi∧
IJ¬bBεIJ
H4(εU*6B9∧
IJ¬d"⊗→N⊂h*∩⊗3~1h&lzZ⊗%∧	2F2j
∩∧HIf∞J,
R∃αqαεB¬∩>BJL
R∃αd
6
∩
j⊗bB∀*NN&|p4(ε¬*N")¬↓2∞>u_4(εlzR⊗%∧→1"¬Hh(&"∃∩aα¬bBA$∧KZR"∃∧~εIα|1αR"M→α&MβbNB⊗≠p4(εlzRε%∧
IJ¬e
bBJE~ 4!→%≥α
ED$∃
" HK89∧,≤αh∃	T∀q1$	1H⊂*Is(

9r4∀d
3S⊃*:h∀v)XSs
!Q@∧P%∀)j⊂"⊃c→`FB∧fgk⊃fP!⊗
(⊂DDNβSAVE THIS FUNNY DIST
α	CAIN AR1,QMACRO
	 JRST DEFNER		;FUNNY FORMAT AND MACRO FLAG DON'T MIX
	HRRZ B,(B)↓	;PECELIAR FORMAT8 (NAME EXPRNAME ...)
	HLRZ AR1,(B)
	JUMPE AR1,DEFNER
	HRRZ B,(B)
	SETO AR2A,		;FMR A 2-LIST, USE "EXPR-HASH" FMR EXPR-HASH PRMPERTY,
	JUMPE B,DEF3A		9 BUT MUST ALSO LGOK IN A DAFFERENT PDACE
	HRRR B,(B)
	JUMPE BDAF *$∩vf[1∪')&↓	∨OPA+'
↓1!∧αj"εNBα~⊗ε%*J∀4PJ"2JRαεIJλa"	$HI`≠αYI∃≥%4
U≤*
I∧*∧izU∃$∧	∃$,QQ#L-

"lD~9ᬬ)zα∧t→XR∧LZ A,@(P)
	JUMPGE AR2A,DEF6	;JUMP UNLESS 2-LIST FORMAT
	MOVEI B,(AR1)		;MUST GET VALUE OF EXISTING PROPERTY
	PUSHJ P,GET1		; AND SEARAH IT FOR THE EXPR-HASH PROPERTY
	JUMPE A,DEF5		;IF NONE, LOSE
	JSP T,STENT
	TLNN TT,SY		;NO EXPR-HASH IF NOT A SYMBOL
	 JRST DEF5
	MOVEI AR2A,QXPRHSH
;A HAS THA ATOM CONTAINING THA EXPR-HASH PRMPERTY, IF ANY.
3AR2A HAS AN ACTUAL EXPR-HASH PROPERTY NAME,
DEF6:	MOVEI B,(AR2A)
	MOVEI AR2A,(A)		;CAVE ATOI INVOLVED	α	PUSHJ P,GET1		;GET EXPR-HASH PROPERTY
	JUMPE A,DEF5		;DO DEFUN IF NONE
	MOVE F,(A)		;EXPR-HASH PROPERTY VALUE BETTER BE FIXNUM!
	PUSHJ FXP,SAV5M1
	MOVEI A,(C)		;CANONICAL LAMBDA FORM
	PUSHJ P,SXHASH+1	;JCALL 1,.FUNCTIKF SXHASH
↓PUSHJ FXP,RST5M1
	CAMN TT,F	
	 JRSTDAF 2$∩wβ⊃∧BA⊃βM⊃⊗M∧jεR∞B	α~>∀:⊗@"	~Bp@ B3)zQ2(λ∃λ⊂4F(*""'d id⊃iP&`U!d⊗⊂∀gP#&∃id⊂*∩ ¬ EXPR-HASH @RLπ!¬Q2~∀∪A+'↓∀↓ Y%5!%∨ $∩vAβ9λA)⊃∃_A!I
∨%~ααR"∃∧"⊗~&tJR&>ph)nRD)α∞ε⊂α0≤2¬
αJ∧α4h
I⊃(⊂*Is(∃	T∀⊃5

Stλ	yU∪ndλ4L(	~h∃∩λT∀⊂Sjλ4U⊗$	P31'P!P$TP*$"H+ f*QW
DEF5*	HLRZ A,@(P)
α	EXC@ C,AR1
λ	MOVEI B,(C)
	JRST DEF1		0↔∂<A	∞AQ⊃∃αα
U%¬)zhPβ"QλXM∞B*	t∩(
¬#"A~∪tλ
¬⊂C"A→3uQ)∀⊂+∀$X⊃1U)a".hHH1P
g	⊃αE∧T*id%λ(∩!gSαS		;TRP∩A¬∂β∪≤ααP≤MIλ¬λα"c*S⊂#'gH↔↔↔) RE@!1βπλ↓
d∀PJ*JN ∧∧-Lα"'P⊂∀"⊃c*g& FOO ,∧\\R4⊂λ ( c]K→∃∧12`∧Dα("bRP*,h∩XP",T%XaP∃,h%XQ⊂*,h∩Xd⊂*⊗h%YP∃,h%YPP*,h∩Z⊂*,T%ZP*⊗h%[⊂∃,h%\H*,h%N`FEεB)ja*∃&∧j,Rh"beH#*g!U$ggεBεEεE∃,dh"Qe]∧DB]f)jP)⊂∀_λ↔⊂→TH'!`f∪ a&"CE∧ieRh P#!c$lFA∧P∪ek"dH#⊗!h∪h%εEαfgk"RP"⊗(U,dh"QeFE∧P`fcbH*⊗,!KYFE∧H%))jλ+g f∪ibFEαiedh⊃P*∧DB]c'P⊂i#iP∂≤X∞ ON@
AβI∞A∂↓→∪_~(∩Aβ∨MαA(∩$∩w→M
A	
%≠9(Aβ%≤Aπ∨+9(A
∨HA∪≥π¬→_~∀$@A!M⊂A YHj`~∀%≠↔-$AλHQ@R~∀∪¬		%∧!1"QHh(&6⎇2⊗%α
⊃J¬2≥α>B(hP&⊗b≤AαεI∀	1"⊃Hh(&*≥↓α⊃2DJ2∞εd`$%nα
$l≤Z:2∧
(z2β∩λ→d"β1Q%≤4∀Q∩αα
~ELMλXTXH↔4αDJ9r¬¬X9∧-~λd∧|uIt¬αHQ*44
A≠5≤zh¬∩*¬↔+¬J5⊗2*λ12c!!33uHY(⊂+
∀5⊗2!QB2∀IKS(⊂%HQT∀HJβ"B)YuQ2$λ+
⊂*&P*"!↔qq5∧λ4Qhε∀∩3Hλ⊃"B2J:λ∃λz∀Q∃λ!".qhZλ∀Q(_∃⊂0IH(∩3Dλ4LP!QB2U)Z∪H⊂%J⊗4∩f⊃".sI→λ∂/Dλ0pq*
λ⊂3K∀⊂r⊂*!"I	
λ12nA→∀TVD
∃∃→303A⊃.pp)Iλ∃⊗)→03H	yQ(⊃(~S⊗(
Ic"B)*Tuλ¬V*∃∃¬⊃".h
:⊃0r(k(∀⊃(Yr3QaQC"U~∩l.A_p21$λ+∃∀JZ∩α"':λ∂/D
q04H9λ⊃Sj$∀Q0(H4H∀jH4Uβ!!(∩TJ:λ∃⊗*	lb"'4⊂r⊂*(0u⊃*$
⊃+HuH∀⊂*(3Kλ	X0tSe⊃"U⊗*	l0nA~∃4r	$∀	∧J⊃12a⊃.t⊃(Yh⊂5∧λ(⊂rλ~C"B)*34∪∧
∃∃~∩n0!⊃.r∩*D⊃3qD¬(∃⊂)8(⊂(∧*sqU∧$⊃3qED∀Q5
ZSH&⊃"B3)zQ(∃¬H∃∃∀h~J⊂4F(*".jλ12h
85∀h
Zλ⊂4F(#"B*I⊂h∃¬F
↓∃Tq1$
v3Uλ≠β"B*I⊂q(
E

ε↓"B(	*Tuλ
K4∩l(a"B4
Zrλ∀¬Jβ"B*
4r∩D
⊂∃→303AQB4∪j∧∀∃↓QB0p)I⊃H¬E∃
"!↔r∩5∧λ(∩∪j*R0SλT∀t∪	_r3Qd	00tIq"B2J:λ∃λz∀Q∃λ!".tL\Y=_m∧≥~→$∞Y89∧∞_8[UHλ∃.<<H_m|→(_mMxXY..c"B!⊃".p*&P+λ≥Yλ≠,∨(~_.l(∀q*J99λ
(01∃λ_S⊃#!!2TTjD∃⊗4	60b"'8sh⊂H_rh⊂)hλ∃∀K∀⊂1p)→C"C!*⊗4∩f_NB5	IQ(∃¬FMMLF⊗b+ThX(∀v)j⊂6α':Q01λZH∀uλ~Uλ⊂iλ4Tc!!(∀∪j	H∀↓QU⊗4	62∞B*
4r∩D
⊂∃→303A⊃.prλ~H∪SjD⊂0phZ∃⊂0IH((λypPSλT∩5β!!2TTjD∃⊗4	60b"'9Suhλyh∃∀K∀⊂1p)→C"C!*⊗4∩f7B2Tj∧∃⊃K	UL"!↔p4Qd	54u∧λQ(⊃I≠∪U3!QB2U)Z∪λ∃
E∃⊗4	6pb"'84Qhλ(5∃q(YHλλ→Qλ
fvh∂/AQB0p)_h∃∃¬Fmmb!↔h∀ph→H⊃Sj$∃∩⊂*D⊂r⊂*(0u⊃*'c"B$
∪∪p$
∃
εε↓⊃.h∪jI⊃4Ui~q(∩*4⊂(∀k→U⊂6¬D∪∀r∧x1β"JK4∩lh7B(λ	Jrλ∃
E,,!⊃.h∪λXUλ⊂K∀,+∧
∪h∀hZUQ(λ~h∪0*9c"B*
4rλλk∀∃
A"U⊗*	m∞B*
4r∩D
		
λ12b!↔t⊃1)4⊂5λλ∀⊂r⊂*!"B2JY4∪λ
J∃⊗*	n""':sqU∧λ3qH¬T⊃sh
(5∃4Id,(	zH∃rλ~⊃5Q*!"B4i94∪λλE
⊃V
¬"".j9r4λ	_H∀tλXr1R(4⊂r⊂*(0u⊃*!"B(	*Tuλ
K4∩mAQB0p)→H∃∃¬E⊃
"!↔pss*λ4Q(
Ih∪sHT∃q(λyuβ"A∀∩TTjD∀∪t
∩B"':u4⊃*$∃r3AQU⊗4	6.B4
Zr∩H
¬⊂∃⊗)→03B!↔sSu∧
∩⊃(	yQ($λspPIH(⊂3HD∀Q5
+#"B)*Tuλ
K4∩m↓QC"U~∩mNA→∪∀VD
⊂∃
Jp4Jλ~LP*!∃Tq1$
v3Uλ≠β"B*H∪SH
E⊃α"'8r⊃0i4∀v3JH6λ⊂(x23TjD∪04i1"B(	*Tuλ
K4∩m!QB2TJ:λ∀∪j∃∩C!!"U⊗*	n.B*:0H⊃K
∀Mf¬l#"JK4∩n(↔B4ri~∪H⊃)xTU∪A⊃.hTixUλHλYqKH∧λ∪q4d	Suλ	→USrhQ"B(	*Tuλ	V5∃∀	!".h
I⊃(⊃)xQSK∧λU5λ
y3∪λ
	0rh
Zβ"B)*TuλλYqN"!↔h∃∩λT⊃3qJh3λ∩(d∪Q0hZtp4K∃C"C! ↓Gt52*D∃P3
(5λ∃H→∀u∀D
S∀Uε$∃P3
6(∃P)H4TC!!"Tu(*∃∪α*~25∧
P3∀HZλ⊂)hλ∀u*:⊃3Q∧λU3PjI3sTaQC"T*Y5∞B)YuQ2$λ∀4*Y5α"'9∀u0J$
λ¬d*#!!03rID∃∀f~sP3	zq#"A~rr4λT∃β"A∀∃⊃⊗H∀⊂+⊂!⊃.sSdλ4QhπWH∃4hT∪R3↓QB(λ
	tλ∀¬H#"R*D(α2J*uλ∃IJUc!)1SH	~∀k⊗aQB0p)→H⊂+
JU5∩↓⊃.uλ	X03Td	r3∪∧λ4h∀*Y15∪∀⊂4h
	ttr()⊃#"A∀∩TTjD∃S∀JFc"B)YuQ2$λ-Fεα!↔uP3I→∪⊂+(i⊂5Sj(1λ∩i→∪β"A_p23Dλ+∀)λZTStA⊃.q4J)tH∪(X3Th
x(∀r	z3⊃λ	93∪λ	→T∃5∧λU1QHZC"B$
∀VHλE,εεβ"A→3uQ)∀∃∃¬λ*#"A→∀rλ
J4hXs∪qaQB33jh(∃∃¬Ju
∃
E#"B*I∪Q(
J⊃V↓QB(∪)zQ(⊃¬E⊂*"!↔qR6	j3(⊂*(h∂/D
4q(λitHH*Q02dε-Kλλ~Qc"A→TTu∧
S∀Uε8#"W!↔q3Q∧	qH∩(iH∩5
1"C"AQUP3
(5∞B)*34⊃$
∃S
*∞""'9∀u0J$
λ¬d*#!!2Tt∧
∃∪
yP0raQB(λ∧	⊂,%E∀5P)JQ5β!!4∪t∧
⊂#!!4∃4i	H∀
h3∀u
!"L,∧Q4q5	y(∀p*ztβ"A~∃4r	$∀∀HZ∃P3↓⊃.uP)JQ5λ
:∀R3Ht∪sHλk∀λ∩)d⊂4∀
)t∀R(~⊃(∪(→SQ4AQL,	!~q5⊗IT∀p5j:β"B*	t∩H
¬β"C!!"Nng4∃⊂2hT∀v3()sλ∪j$⊃R6	j3(∩)d⊂+λ

4rλ
	P31$
u∀R)hh∪tD
P3∃(T∪sU	t⊃V∀¬a"Nng4∪sH
Itλ∪hd∃∩⊂*Eλ⊂4d	⊂4u∧λV∀λ
9∪u∧
∃4r∧	tR1i→P3λ
h3∃1$	qH⊃K
C"AQUP3
:∀NB)*tλ∃¬I⊂5∪iQ".tjJR3Qdλ(∀v)XSs∂aQB(∩J*uλ∃H→∀l#!)5	α*85⊗S$
P3⊃I≠α".hi⊂1h
I⊂5λ
h3∀Q*D	tu
)3Qid	4h∪Izλ⊂(λi6∪U)Q"B4
Zr∩H
¬∀∪QhZβ"B)YuQ(
%⊃V∀↓QUS∀JFNB2	JVH⊂EE⊂*#!!4∃4i∧⊃V∀¬E⊂J#!!2∀TK$⊂+
λ∃#"B)*34∪Dλ+∃S
*C"A~∃4r	d⊃V∀¬F"".j
4rλλ∀⊗Q4It∃stHD⊃StDλssq∧	104jZQ#"A~∃4r∧λV∀
!"B4	z∩H∀¬A"UP)Jl.C!)1SH	~∀k⊗aQB4riz∃λ⊂%HVα"'83∪∪jt⊂(⊃I≠∪U3!QB(∩J*uλ∃H→⊃4TA⊃.q4J)tH%T∃u⊂!QB4q*Is(∃H→⊃R6↓⊃.tQ(→∪⊗(λ∀⊃R6	j3#"A→3uQ$
K⊃V
↓".th~Q(⊂$λst⊗$	qH⊃K
β"B*
4rλλk∀
λ∃"".j
4rλ
I⊃(⊃I≠∪U3!QB4∃*9λ⊃V
¬∀B"':∩⊃3D
∃4r∧
∩⊃(	y⊃λ⊃K
β"B*	t∩H
¬β"W!⊃.q3HD∩1SD	5∀c!*P3⊃**NC"I~	α5jH(⊗k$λ4Qh
Ih⊂Q$
P3∀HZ	q1∧	54u∧λQ(⊂$λR6∪JY(∪tDλ(∀v)XSsλ+Q"R5∧Q5u⊂$k(⊂*(h∃∪dλQ(∃H→∀Q5∧x1λ∪*Zuλ⊂HT⊂(∀k→0Ss∧≠(β"A→TTu∧
P3∀jJC"@↓GtQ5
h3λ∀HZ∀u∀D
S∀Uε∀∃S∀JF(∃S
*h∃IJU∞(
i∀Uh∀∃S∀JG(∀r(H∃∀β!!"Nng4⊂4tjY1(∃H→∀u∀D	⊂4h

4r⊃(D⊂(∃H→∀Q5∧
u∀R)hh∪sJIh⊃V
¬C"Ng7h∃P)JQ5λ
I⊂5λ
:∀R3Ht∩3H
I⊃(⊂*
∀St
)05⊃$	00r	→Q+1λZ⊃3QλYUλ∃h≠+β"G7nh⊃+λq4∃∧
∩⊂5∧λq4Uλ→3HλI~∀hH
:∀R3Hzh⊂4HT∩3UλZT∀Q*H1λ∩)d⊂3V!QNnnd	34∪λY13Uλ~∩3sD¬⊂3Hλ→P0r
)sR4iT⊃StDλss4λ~∩0R)I5⊗(	yS⊗*%a"Nng4⊂1UλZH⊃∪i→Qh∃iλ5⊃5HZKλ∃	λ(∀u
)3Qh	~h⊃S
Zr⊃1∧λTSs$λV∀AQC"THZ∃P3π!"R1Id∩5∀eKc"B*9r4∪D
P3⊃I≠α".jx4h∃H→∀Q5∧
u∀R)hh∀Q(→∪⊗(λ∀⊃R6	j3/c!!(∩TJ:λ∀Q*Ju∀B!↔sSk∧	StS(→λ∩⊂)h∪∩3Hq"B2
*VH∃
E,*λk∀
"!↔v14eD∀∩0i4∃4λ
I⊃(⊃I≠∪U3!QB+PJ(02hε⊗K
∃
E#"B)Y,			;IF CONTINUING RETURN AND GO ON
RETSTR:	]	;END IFN ITS
	MOVE R,(FXP)
	MOVE D,1(R)
	CAME D,[ASCII \:KILL\]
	 CAMN D,[ASCII \:kill\]
	  CAIA
	   JRST VLRT1
	MOVE D,2(R)
	CAME D,[ASCII \ \]
	 CAMN D,[ASCII \
\]
	  JRST VLRT3
	JRST VLRT5

VLRT1:	CAMN D,[ASCII \≠_.\]
	 JRST VLRT3
	CAME D,[ASCII \≠≠U\]
	 CAMN D,[ASCII \≠≠u\]
	  JRST VLRT9

;HERE IS THE MACHINE-DEPENDENT THING TO DO TO RET THE VAL STRING
VLRT5:
IT$	.VALUE 1(R)
IFN D10,[
SA%	OUTSTR 1(R)
IFN SAIL,[
	SETZ D,			;D IS ZERO FOR TWO DIFFERENT REASONS!
	MOVEI TT,1(R)		;THIS PIECE OF CRAP LOOKS LIKE
	HRLI TT,440700		; SOMETHING RPG WOULD WRITE (BUT GLS DID)
	ILDB T,TT
	JUMPN T,.-1
	MOVEI T,↑M		;CRUFTY STRAY ↑M MAKES PTLOAD HAPPIER
	DPB T,TT
	IDPB D,TT		;THEN TERMINATE WITH A NULL
	HRLI R,440700
	HRRI R,1(R)
	PTLOAD D		;LOAD THE STRING INTO THE LINE EDITOR
]		;END OF IFN SAIL
]		;END OF IFN D10
IFN D20,[
	PUSH P,A
	HRRI 1,1(R)
	TLO 1,440700
	RSCAN
	JFCL
	SETZ A,
	RSCAN
	JFCL
	HALTF
	POP P,A
]		;END OF IFN D20
	MOVE FXP,(FXP)
	POPJ P,


VLRT3:
IFE ITS,[
VLRT9:	
10$ 	EXIT 1,
20$	HALTF
	POPJ P,
]	;END IFE ITS
IFN ITS,[
	MOVEI D,120000		;"SILENT KILL"
VLRT3A:	.LOGOUT 1,		;TRY TO LOG OUT
	JSP T,SIDDTP
	.VALUE
	.BREAK 16,(D)

VLRT9:	.LOGOUT 1,		;TRY TO LOG OUT
	.VALUE [ASCIZ \:VK \]	;OH, WELL...
	POPJ P,			;IN CASE LOSER DOES $P FROM IT

SIDDTP:	.SUSET [.ROPTION,,TT]
	TLNN TT,OPTBRK		;SKIP IF JOB INFERIOR TO DDT
	 JRST (T)		; (ACTUALLY, IF SUPERIOR HANDLES .BREAK)
	JRST 1(T)
]		;END OF IFN ITS

;SUSPEND SUSP0C SUSP0 SUSP11 SUSP12 SUSP1 SUSP14 FLSNOT SUSP24 SUSP25 SUSP3

SUSPEND:			;LSUBR (0 . 2)
	JSP TT,LWNACK
	   LA012,,QSUSPEND
IT$	SETZM PURDEV		;ASSUME NO DUMPING
	PUSH FLP,R70		;ASSUME WE ARE RETURNING FROM A RESTART
	PUSH FLP,R70		;ALSO ASSUME FIRST ARG IS NON-NIL
	JUMPE T,SUSP0
	AOJE T,SUSP0C		;JUMP IF ONE ARG
	POP P,A			;2ND ARG, IF ANY, IS SAVE FILE NAME FOR HISEG
				; FOR ITS, IS NAME OF PDUMP FILE 
IFN D10*HISEGMENT,[
	SKIPN SUSFLS
	JRST SUSP0C
	PUSHJ P,FIL6BT		;CONVERT FILESPEC IN A TO SIXBIT ON FXP
	PUSHJ P,DMRGF		;MERGE WITH DEFAULTS
	POP FXP,SGAEXT		;UNSTACK ARGS INTO PROPER SPOT
	POP FXP,SGANAM
	POP FXP,SGAPPN
	POP FXP,SGADEV
	PUSHJ P,SAVHGH		;SAVE HIGH SEGMENT
	 FAC [FAILED TO SAVE HIGH SEGMENT - SUSPEN@!]
]		;END OF IFN D10*HISEGMENT
IFN ITS,[
	PUSHJ P,FIL6BT		;CONVERT FILESPEC IN A TO SIXBIT ON FXP
	PUSHJ P,DMRGF		;MERGE WITH DEFAULTS
	POP FXP,PURFN2		;UNSTACK ARGS INTO PROPER SPOT
	POP FXP,PURFN1
	POP FXP,PURSNM
	POP FXP,PURDEV
]	;END IFN ITS
SUSP0C:	POP P,A			;POP FIRST ARGUMENT
	SKIPN A			;FIRST ARG NIL?
	 AOSA (FLP)		;YES, NO VALRET STRING
	  PUSHJ P,VALSTR	;NO, PROCESS IT ONTO FXP
	SKIPA
SUSP0:	 PUSH FXP,R70		;ZERO WORD MEANS VALRET STRING
	SETZ A,
	MOVEI T,LCHNTB
SUSP11:	SOJE T,SUSP12
	SKIPE B,CHNTB(T)
	 CAMN B,V%TYI
	  JRST SUSP11
	CAMN B,V%TYO
	 JRST SUSP11
	MOVE TT,TTSAR(B)	;IF FILE IS CLOSED THEN IGNORE IT
	TLNN TT,TTS.CL
	 PUSHJ P,XCONS
	JRST SUSP11
SUSP12:	JUMPN A,SUSPE
	HRRZ A,V%TYI		;CLOSE THE TTYS LAST, SO THEY WONT CAUSE
	MOVE TT,TTSAR(A)	;SPURIOUS "CANT SUSPEND -I/O IN PROGRESS"
	TLNN TT,TTS.CL
	 PUSHJ P,$CLOSE
	HRRZ A,V%TYO
	MOVE TT,TTSAR(A)
	TLNN TT,TTS.CL
	 PUSHJ P,$CLOSE
SUSP1:	HRROS NOQUIT
	MOVEM NIL,GCNASV+1
	MOVE T,[FREEAC,,GCNASV+2]
	BLT T,GCNASV+2+17-FREEAC
	SETOM NOPFLS
IFN ITS*USELESS,[
	MOVE T,IMASK
	TRNN T,%PIMAR
	 JRST SUSP14
	.SUSET [.RMARA,,SAVMAR]
	.SUSET [.SMARA,,R70]
SUSP14:
]		;END OF IFN ITS*USELESS
IFN ITS\D20,[
IT$	SETOM SAWSP		;ITS ALWAYS WANTS TO DO A PMAP FROM FILE
	MOVEI T,FLSSTARTUP
	EXCH T,LISPSW
	MOVEM T,GCNASV
	SKIPE SUSFLS		;IF FLUSHING PURE PAGES PROCESS VALRET THEN
	 JRST FLSLSP
FLSNOT:	PUSHJ P,PDUMPL		;PURE DUMP LISP IF APPROPRIATE
	MOVEI T,SUSP3		;FROM HERE ON IN START AT SUSP3 DIRECTLY
	MOVEM T,LISPSW
	SKIPE (FLP)		;NIL JCL?
	 JRST SUSCON		;YES, CONTINUE ON AND RETURN T
	SKIPN 1,(FXP)		;ZERO WORD MEANS NO VALRET STRING
	 JRST SUSP24
IT$	PUSHJ P,RETVAL
20$	HRROI 1,1(1)
	JRST SUSP25
]	;END OF IFN ITS\D20

IFN D10,[
	HRRZ T,.JBSA"
	HRL T,.JBREN"
	MOVEM T,GCNASV
	MOVE T,.JBREL		;GET HIGHEST ADR WE NEED TO SAVE
	HRLM T,.JBSA		;AND STORE IN CORRECT PLACES SO MONITOR KNOWS
	MOVEM T,.JBFF
	MOVEI T,SUSP3
HS%	HRRM T,.JBSA
HS$	HRRM T,RETHGH
	SKIPE (FLP)		;NIL JCL?
	 JRST SUSCON		;YES, CONTINUE AND RETURN T
	SKIPN (FXP)
	 JRST SUSP24
SA$	PUSHJ P,RETVAL		;PTLOAD VALRET STRING FOR SAIL
	JRST SUSP25
]		;END OF IFN D10

SUSP24: MOVE T,FXP
	POPI T,1
	MOVEM T,(FXP)
10$	MOVEI TT,
20$	HRROI 1,FLSPA1
IT$	MOVEI TT,FLSPA1
SUSP25:
IFN ITS,[
	.VALUE (TT)		;PRINT SUSPENSION MESSAGE 
	JRST SUSCON
]	;END OF IFN ITS
IFN D20,[
	PSOUT
	HALTF
]	;END OF IFN D20
IFN D10,[
	OUTSTR (TT)
	SETZM V.MAILINT
    HS$	JRST KILHGH
    IFE HISEGMENT,[
	IFN SAIL,[
		MOVEI A,FAKDDT		;FOO, HOW MANY WAYS CAN SAIL LOSE?
		SKIPN .JBDDT		; JOBDDT MUST BE NON-ZERO TO SAVE!
		 SETDDT A,		; ELSE MAY FAIL TO SAVE ENTIRE LOSEG
	]	    ;END IFN SAIL
	EXIT 1,
    ]	    ;END IFE HISEGMENT
]	;END OF IFN D10

;;; HERE ON STARTUP AGAIN AFTER SUSPENSION

SUSP3:	MOVE NIL,GCNASV+1	;RESTORE IMPORTANT AC'S
	MOVE T,[GCNASV+2,,FREEAC]
	BLT T,17
	SETZB A,B		;CLEAR OUT GARBAGE
	SETZB C,AR1
	SETZ AR2A,
	SKIPN (FLP)		;RESTORE FXP UNLESS JCL WAS NIL
	 MOVE FXP,(FXP)
	MOVNI T,1		;AOBJN ON -1 LEAVES [1,,0] ON A KA10
	AOBJN T,.+1		; BUT [0] ON A  KL OR KI
	MOVEM T,KA10P
IFN ITS+D20,[
	MOVE T,GCNASV
	MOVEM T,LISPSW
	JSP T,SHAREP			;RE-READ PURE PAGES IF EVERYTHING IS IN ORDER
]		;END OF IFN ITS+D20
IFN ITS,[
	.SUSET [.ROPTION,,TT]
	TLO TT,OPTINT+OPTOPC		;NEW-STYLE INTERRUPTS AND NO PC SCREWAGE
	.SUSET [.SOPTION,,TT]
	.SUSET [.SDF1,,R70]
	.SUSET [.SDF2,,R70]
	.SUSET [.SMASK,,IMASK]
	.SUSET [.SMSK2,,IMASK2]
IFN USELESS,[
	MOVE T,IMASK
	TRNE T,%PIMAR
	 .SUSET [.SMARA,,SAVMAR]
]		;END OF IFN USELESS
]		;END OF IFN ITS
20$	JSP R,TNXSET		;MUST BE DONE BEFORE PION
IFN D10,[
	MOVE T,GCNASV
	HRRM T,.JBSA"
	HLRM T,.JBREN
SA%	JSP T,D10SET
]		;END OF IFN D10
	PION
	JSP T,PPNUSNSET
	SETZM NOPFLS
	HRRZS NOQUIT
	PUSHJ P,OPNTTY		;*** TEMP CROCK?
	 JFCL
	PUSHJ P,UDIRSET
	POPI FLP,1		;REMOVE NIL VALRET FLAG
	POP FLP,A		;RESTORE RETURN VALUE
	POPJ P,

;SAVHGH SAPWIN

SUBTTL	HIGH SEGMENT SAVE ROUTINE

IFN D10,[

;;; THE RELEVANT FILE NAMES ARE IN SGADEV, SGAPPN, SGAEXT.
;;; THE MAIN FILE NAME IS PASSED THROUGH T, AND STORED INTO
;;; SGANAM ON SUCCESS.  SKIP RETURN ON SUCCESS.

IFN HISEGMENT,[
SAVHGH:	LOCKI			;LOCK OUT INTERRUPTS AROUND USE OF TEMP CHANNEL
	MOVE F,SGANAM
IFN SAIL,[
	SKIPL .JBHRL		;IS HISEG CURRENTLY WRITE-PROTECTED?
	 JRST SAPWIN		;NO, MUST PREVIOUSLY HAVE UNPURIFIED IT
	SKIPN PSGNAM
	 JRST FASLUH
	MOVEI T,.IODMP
	MOVE TT,PSGDEV
	SETZ D,
	OPEN TMPC,T		;OPEN UP .SHR FILE DEVICE IN DUMP MODE
	 JRST FASLUH
	MOVE T,PSGNAM
	MOVE TT,PSGEXT
	SETZ D,
	MOVE R,PSGPPN
	LOOKUP TMPC,T
	 JRST FASLUR
	MOVS T,R
	MOVNS T			;T GETS LENGTH OF .SHR FILE
	ADDI T,HSGORG-1
	PUSHJ P,LDRIHS		;GO READ IN HIGH SEGMENT (FROM WITHIN LOSEG!)
	RELEASE TMPC,		;FLUSH TEMP CHANNEL
	MOVE T,D10NAM		;USE D10NAM AS HISEG NAME TO FOIL SHARING
	LSH T,-6		;AS LONG AS WE'RE BEING RANDOM...
	SETNM2 T,
	JFCL
	MOVE F,SGANAM	;RESTORE MAIN FILE NAME
SAPWIN: 
]	;END OF IFN SAIL
	SETZM SGANAM
	MOVE R,SGADEV
IFN SAIL,[
;;;SAVE VALIDATION WORDS IN HISEG, HOPE THAT HISEG WRITEABLE
	MOVEM R,PSGDEV
	MOVE D,SGAEXT
	MOVEM D,PSGEXT
	MOVE D,SGAPPN
	MOVEM D,PSGPPN
]	;END OF IFN SAIL
	MOVEI D,.IODMP
	MOVE T,F		;SGANAM WAS SAVED IN F
	SETZ F,
	OPEN TMPC,D
	 UNLKPOPJ
	MOVE TT,SGAEXT
	SETZ D,
	MOVE R,SGAPPN
SA$	MOVEM T,PSGNAM
	ENTER TMPC,T
	 UNLKPOPJ
	MOVEI TT,HSGORG-1	;MAKE UP IOWD
	SUB TT,.JBHRL
	MOVSS TT
	HRRI TT,HSGORG-1
	SETZ D,
	OUT TMPC,TT		;OUTPUT THE HISEG
	 CAIA
	  UNLKPOPJ
	CLOSE TMPC,		;FLUSH TEMP CHANNEL
	RELEASE TMPC,
	MOVEM T,SGANAM		;WE CAREFULLY DO NOT STORE SGANAM UNTIL
	UNLOCKI			; WE HAVE CLEARLY WON (MORE OR LESS)
	JRST POPJ1

]	;END IFN HISEGMENT
]		;END OF IFN D10

;ARGS ARGS1 ARGS1A ARGSCU ARGSC1 ARGS3 ARGS5 ARGS6 ARGCLB ARGCL3 ARGS0

SUBTTL	ARGS FUNCTION

ARGS:	JSP TT,LWNACK		;LSUBR (1 . 2) - USES A,B,C,T,TT,D,R,F
	LA12,,QARGS
	JSP R,PDLA2(T)		;SPREAD ARGS
ARGS1:	SKOTT A,SY
	JRST ARGS0		;FIRST ARG MUST BE SYMBOL
	HLRZ F,(A)
ARGS1A:	AOJL T,ARGS3		;TWO ARGS
	HLRZ R,1(F)		;JUST WANT TO GET PRESENT ARGS PROP
ARGSCU:	JUMPE R,FALSE		;ARGS CONS-UP
	IDIVI R,1000
	SKIPN B,F
	JRST ARGSC1
	MOVEI TT,-1(F)
	JSP T,FIX1A
	MOVEI B,(A)
ARGSC1:	SKIPN A,R
	JRST CONS
	MOVEI TT,(R)
	CAIE TT,777
	SUBI TT,1
	JSP T,FIX1A
	JRST CONS

ARGS3:	JUMPE A,CPOPJ
	JUMPN B,ARGS5
	HLRZ R,1(F)		;JUST WANT TO FLUSH ARGS PROP
	JUMPE R,FALSE
	SETZ R,
	PUSH P,A
	JSP D,ARGCLB
	SUB P,R70+1
	JRST TRUE

ARGS5:	PUSH P,A
	SETZB TT,R
	HLRZ C,(B)		;MUMBLE MUMBLE - MUST FIGURE
	JUMPE C,ARGS6		; OUT WHATEVER WE WERE HANDED
	JSP T,FXNV3
	CAIE R,777
	ADDI R,1
	LSH R,11
ARGS6:	HRRZ A,(B)
	JSP T,FXNV1
	CAIE TT,777
	ADDI TT,1
	ADDI R,(TT)
	HLRZ TT,1(F)		;LOOK AT ARGS PROP ALREADY THERE
	CAIN TT,(R)		;IF ALREADY WHAT WE WANT, JUST EXIT,
	JRST POPAJ		; THEREBY AVOIDING A PURE PAGE TRAP
	MOVEI D,POPAJ		;FAKE OUT A JSP D,
ARGCLB:	MOVEI B,(F)		;CLOBBER IN AN ARGS PROPERTY
ARGCL3:
PURTRAP ARGCL7,B,	HRLM R,1(B)		;MAY HAVE TO FUSS ABOUT PURE PAGE TRAP
	JRST (D)

ARGS0:	MOVEI F,$$$NIL
	JUMPE A,ARGS1A
	WTA [ NON-SYMBOL - ARGS!]
	JRST ARGS1
;EVALFRAME FRM2A FRM3 FRM3A FRM4A FRM4 FRM5 FRM5A FRM7 FRM8 FRM2B GTPDLP GTPDL5 GTPDL2 GTPDL3 GTPDL4 GTP4A GTPX0 GTPX1

SUBTTL	EVALFRAME FUNCTION, GTPDLP, AND FRETURN

EVALFRAME:
	SKIPA R,[GTPDLP]	;THIS ENTRY CAUSES INTERPRETATION OF ARG AS PDLPOINTER
FRM2A:	MOVEI R,GTPDL2	;THIS ENTRY, TO ALLOW CONTINUING FROM WHERE D CURRENTLY IS
	JSP R,(R)
	   $EVALFRAME	;GET EVALFRAME OR APPLYFRAME JUST PRIOR TO
	   $APPLYFRAME	; POINT ON PDL MARKED BY ARG
	JRST FALSE
FRM3:	SUB D,R70+1	;DEFINE A FRAME POINTER TO BE JUST BELOW THE EVALFRAME MARKER
	HRRZ TT,(D)
	JUMPN F,FRM3A		;F IS INDEX OF WHICH KIND OF FRAME
	MOVEI T,(TT)
	LSH T,-SEGLOG
	SKIPL ST(T)
	JRST FRM4A
	HLRZ TT,(TT)
FRM3A:	CAIN TT,QEVALFRAME	;DONT ALLOW THE CALL TO EVALFRAME
	JRST FRM2B		; ITSELF TO BE OUTPUT
FRM4A:	PUSH P,(D)
FRM4:			;ERRFRAME COMES HERE
	HLRO TT,(D)	;ONE LEFT HALF'S AS GOOD AS ANOTHER...
	JSP T,FIX1A	;MAKE UP PREVIOUS SPECIAL PDL POINTER
	PUSHJ P,ACONS
	EXCH B,(P)
	MOVE TT,1(D)
	CAME TT,[$APPLYFRAME]
	JRST FRM8
	PUSH P,A
	PUSH P,B
	MOVE T,-2(D)  .SEE $APPLYFRAME 	;BECAUSE THERE IS A DISCUSSION
	JUMPL T,FRM5			;  OF THE FRAME FORMAT THERE
	MOVEI A,(T)
	TLCN T,-1			;THINK ABOUT THIS WHEN YOU LOOK!
	JRST FRM7
	HLRS T				;SUBTLE WAY TO GET NEGATION
	ADDI T,(D)
FRM5:	SETZ A,
FRM5A:	HRRZ B,(T)
	PUSHJ P,XCONS
	AOBJN T,FRM5A
	PUSHJ P,NREVERSE
FRM7:	PUSHJ P,ACONS
	POP P,B
	PUSHJ P,XCONS
	MOVEI B,(A)
	POP P,A
FRM8:	PUSHJ P,XCONS
	MOVE B,A	;OUTPUT 4-LIST:   "EVAL" OR "APPLY" OR "ERR" [A SYMBOL]
	HRROI TT,(D)	;  FRAME (REGPDL) POINTER [A FIXNUM]
	JSP T,FIX1A	;  <FORM> [EVAL] OR (<FN> <ARGS>) [APPLY]
	PUSHJ P,CONS	;	OR <MSG-FORM> [ERR]
	MOVE TT,1(D)	;  ALIST (SPECPDL) POINTER [A FIXNUM]
	MOVEI B,QOEVAL
	CAMN TT,[$APPLYFRAME]
	MOVEI B,QAPPLY
	CAMN TT,[$ERRFRAME]
	MOVEI B,QERR
	PUSHJ P,XCONS
	JRST POPBJ

FRM2B:	TLNE R,1
	ADD D,R70+2	;WHEN SEARCHING FORWARD, SKIP OVER CALL
	JRST FRM2A	;TO EVALFRAME





GTPDLP:			;CALLED BY JSP R,GTPDLP; RETURNS PDL PTR IN D
	MOVEI D,(P)
	JUMPE A,GTPDL2	;ARG=NIL => START SEARCH FROM CURRENT PDL POS
	JSP T,FXNV1	;NOTE: EVALFRAME LOOKS AT BIT 3.1 OF R
	JUMPL TT,GTPDL5	;BIT 3.1 OF R = 0 WHEN SEARCHING BACK THE PDL
	TLO R,1		;BIT 3.1 OF R = 1 WHEN SEARCHING FORWARD
	MOVNS TT	;WANT TO SKIP OVER THE FRAME MARKER WHEN
	SKIPN TT	; SEARCHING FORWARD (SINCE A PDLPOINTER WILL
	SKIPA TT,C2	; BE POINTING TO ONE BELOW A FRAME MARKER)
	ADD TT,R70+2
GTPDL5:	TLZ TT,-1
	HRRZ T,C2
	CAIGE TT,(T)
	JRST GTPDL1
	MOVEI T,(P)
	SUBI T,(TT)
	JUMPLE T,GTPDL1
	MOVEI T,(TT)
	CAIL T,(P)
	MOVE TT,P
	HRROI D,(TT)
GTPDL2:	MOVE TT,(R)	;KEY ON WHICH TO SEARCH
	JUMPE TT,2(R)	;MATCH 0 => NO SEARCH, JUST GIVE OUT PDL PTR
	MOVE F,1(R)	;WELL, IT'S POSSIBLE TO SEARCH FOR TWO THINGS
	TLNE R,1
	JRST GTPDL4
	HRRZ T,C2
GTPDL3:	CAIL T,(D)	;A BACK SEARCH
	JRST 2(R)	;SEARCHED-AND-FAILED EXIT
	CAMN TT,(D)
	JRST GTPX0
	CAMN F,(D)
	JRST GTPX1
	SOJA D,GTPDL3

GTPDL4:	MOVEI T,(P)
GTP4A:	CAMN TT,(D)
	JRST GTPX0
	CAMN F,(D)
	JRST GTPX1
	CAIG T,(D)
	JRST 2(R)	;FAILURE
	AOJA D,GTP4A


GTPX0:	TDZA F,F
GTPX1:	MOVEI F,1
	JRST 3(R)
;FRETURN FRETRY FRETR1 FRP1 FRP2 FRP2A FRP4 FRP3 FRP3QA

FRETURN:  TDZA C,C		;LH OF C REMEMBERS WHICH ENTRY
FRETRY:	 MOVSI C,TRUTH
	HRR C,B
	JSP R,GTPDLP
	 0
	 JFCL
	MOVEI F,(D)
	MOVE TT,[$EVALFRAME]
	CAMN TT,1(F)
	 JRST FRETR1
	MOVE TT,[$APPLYFRAME]
	CAME TT,1(F)
	 JRST FRERR
FRETR1:	MOVEI D,(F)
	SUBI D,(P)
	HRLI D,(D)
	HRRI D,(F)
	MOVE TT,[$UIFRAME]
	CAME TT,(D)	;SEARCH FOR A USER INTERRUPT FRAME
	 AOBJN D,.-1
	CAMN TT,(D)
	 JSP TT,UIBRK
FRP1:	SKIPE T,PA4	;BREAK UP A DOMINEERING PROG
	 CAIL F,(T)		;[WHICH BREAKS UP INTERIOR ERRSETS AND CATCHES]
	  JRST FRP2
	MOVEI TT,FRP1-1		;FAKE OUT RETURN BY INSERTING A RETURN-ADDRESS
	MOVEM TT,-LPRP+1(T)	;OF FRP1 ON THE PDL
	JRST RETURN

FRP2:	SKIPE B,ERRTN		;BREAK UP A DOMINEERING ERRSET
FRP2A:   CAIL F,(B)
	  JRST FRP4
	MOVEI T,FRP1
	MOVEI TT,FRP1
	JRST BKRST0

FRP4:	SKIPE B,CATRTN		;BREAK UP A CATCH
	 CAIL F,(B)
	  JRST FRP3
	MOVEI T,FRP1		;IN CASE OF UNWIND-PROTECT
	MOVEI TT,FRP1
	JRST BKRST0

FRP3:	SKIPN B,EOFRTN	;BREAK OUT OF ANY E-O-F SET READS
	 JRST FRP3QA
	CAIGE F,(B)
	 JRST FRP2A
FRP3QA:	MOVEI A,(C)
IFE PAGING,[
	ADDI F,1		;FIX UP PDL POINTERS
	SUB F,C2
	HRLS F
	ADD F,C2
	MOVE P,F
	HRRZ F,-2(P)
	SUB F,FXC2
	HRLS F
	ADD F,FXC2
	MOVE FXP,F
	HLRZ F,-2(P)
	SUB F,FLC2
	HRLS F
	ADD F,FLC2
	MOVE FLP,F
]		;END OF IFE PAGING
IFN PAGING,[			;IN A PAGED SYSTEM, THE PDLOV HANDLER
	HRROI P,1(F)		; WILL FIX UP THE LHS OF THE PDL PTRS
	HLRO FLP,-2(P)
	HRRO FXP,-2(P)
IFN SAIL,[
	PFIXPDL TT
	FLPFIXPDL TT
	FXPFIXPDL TT
]	;END OF IFN SAIL
]		;END OF IFN PAGING
	HLRZ TT,-1(P)
	TLNN C,-1		;FOR "FRETURN" JUST UNBIND TO MARKED
	 JRST UBD		;  POINT, AND POP FRAME
	PUSHJ P,UBD
	HLRZ TT,(A)		;BUT DO MORE FOR "FRETRY", AFTER UBD
	JSP T,%CADDR
	POPI P,L$EVALFRAME	;GET RID OF BASIC EVALFRAME
	CAIE TT,QAPPLY
	  JRST EVAL
	HRRZ B,(A)
	HLRZ B,(B)
	HLRZ A,(A)
	HLRE T,(P)		;GET RID OF ARGS ON APPLYFRAME 
	SKIPG T			;FIGURE OUT LENGTH OF ARGS PART
	MOVEI T,1
	HRLI T,(T)
	SUB P,T
	JRST .APPLY
;$GETCHARN GETCHAR GETCH1 GETCH2 GETCH3 GETCH4 GETCH8 GTCTB SUBLIS SUBLSA SUBL1 SUBL1B SUBL1A SUBLOSE SUBL3Q SUBL3Z

SUBTTL	GETCHAR, GETCHARN, AND SUBLIS

$GETCHARN:	PUSH P,CFIX1		;SUBR 2 - NCALLABLE
	SKIPA F,[ZPOPJ,,CPOPJ]
GETCHAR:	MOVE F,[FALSE,,RDCH2]	;SUBR 2
	SKIPE V.RSET
	 JRST GETCH8
	SKIPG D,(B)
	 JRST GETCH4
	PUSHJ P,PNGT0
GETCH1:	SOJL D,(F)
	IDIVI D,5	;(Q,R) QUOTIENT,REMAINDER IN D,R
	SOJL D,GETCH3
GETCH2:	HRRZ A,(A)	;CDR BY Q WORDS
	SOJGE D,GETCH2	;RECALL THAT (CDR NIL) = NIL
	JUMPE A,GETCH4
GETCH3:	HLRZ A,(A)
	LDB TT,GTCTB(R)
	JUMPN TT,(F)
GETCH4:	MOVS F,F
	JRST (F)

GETCH8:	JSP T,FXNV2
	PUSHJ P,PNGET
	JUMPG D,GETCH1
	JRST GETCH4

GTCTB:	350700,,(A)
	260700,,(A)
	170700,,(A)
	100700,,(A)
	010700,,(A)


SUBLIS:	JUMPN A,SUBLSA		;NULL SUBSTITUTION LIST?
	MOVE A,B		;YES, RETURN SECOND ARG
	POPJ P,
SUBLSA:	PUSH P,A		;USES ONLY A,B,T,TT,D,R
	PUSH P,B
	MOVE D,A
	HLLOS NOQUIT		;MOBY DELAYED QUIT FEATURE
SUBL1:	JUMPE D,SUBL2
	HLRZ T,(D)		;A SUBSTITUTION LIST IS LIKE
	HLRZ B,(T)		;((U1 . S1) (U2 . S2) . . .)
	SKOTT B,SY
	JRST SUBLOSE
SUBL1B:	HRRZ A,(B)		;SEXPRESSION S IS SUBSTITUTED FOR ATOM U
	HLRZ A,(A)
	CAIN A,QSUBLIS
	JRST SUBL1A
	HRRZ A,(T)
	MOVEM B,T
	HRRZ B,(B)
	PUSHJ P,CONS
	MOVEI B,QSUBLIS		;PUT "SUBLIS" PROPERTY ON THOSE ATOMS U IN THE
	PUSHJ P,XCONS		;SUBSTITUTION LIST ((U1 . V1) . . . (UN . VN))
	HRRM A,(T)
SUBL1A:	HRRZ D,(D)
	MOVE T,INTFLG
	AOJGE T,SUBL1	;0=> NO INT, -1=> USER INT, -2,-3=> QUIT
	MOVE R,D
	JRST SUBL3Q

SUBLOSE:	JUMPE B,SUBL3Z
	MOVEI A,(B)
	MOVEI R,(D)
	MOVEI T,[LER3 [SIXBIT \NON-ATOMIC ITEM - SUBLIS!\]]
	MOVEM T,-2(P)
SUBL3Q:	SUB P,R70+1
	JRST SUBL3A
SUBL3Z:	MOVEI B,NILPROPS
	JRST SUBL1B
;SUBL2 SUBL3A SUBL3 SUBL4 SBL1 SBL5 SBL4 SBL2 SBL2A SBL2B

SUBL2:	POP P,A
	PUSHJ P,SBL1
	JFCL
	MOVEI R,0	;REMOVE ALL "SUBLIS" PROPERTIES
SUBL3A:	MOVE TT,(P)
SUBL3:	CAIN R,(TT)	;REMOVE "SUBLIS" PROPERTY
	JRST SUBL4
	HLRZ T,(TT)
	HLRZ T,(T)
	JUMPN T,.+2
	MOVEI T,NILPROPS
	HRRZ B,(T)
	MOVE B,(B)
	HLRZ D,B
	HRRZ B,(B)
	CAIN D,QSUBLIS
	HRRM B,(T)
	HRRZ TT,(TT)
	JRST SUBL3
SUBL4:	SUB P,R70+1
	JRST CZECHI

SBL1:	SKOTT A,LS	;TRACE THROUGH STRUCTURE IN (A) SUBSTITUTING
	JRST SBL2	;(GET 'U 'SUBLIS) FOR U WHEREVER IT IS NON-NIL
	PUSH P,A
	HLRZ A,(A)
	PUSHJ P,SBL1
	JRST SBL4
	EXCH A,(P)
	HRRZ A,(A)
	PUSHJ P,SBL1
	JFCL
	HRRZ B,(P)
SBL5:	SUB P,R70+1
	PUSHJ P,XCONS
	JRST POPJ1
SBL4:	HRRZ A,@(P)
	PUSHJ P,SBL1
	JRST POPAJ
	HLRZ B,@(P)
	JRST SBL5
SBL2:	TLNN TT,SY
	JRST SBL2B
	HRRZ B,(A)
SBL2A:	HLRZ T,(B)
	CAIE T,QSUBLIS
	POPJ P,
	HRRZ A,(B)
	HLRZ A,(A)
	JRST POPJ1

SBL2B:	JUMPN A,CPOPJ
	HRRZ B,NILPROPS
	JRST SBL2A
;SAMEPNAMEP ALPHALESSP ALPL3 ALPLP1 ALPL2 SYSP SYSP3 SYSP6 SYSPZ1 SYSPZ GCTWA GCTWI GCTWX

SUBTTL	SAMEPNAMEP AND ALPHALESSP

SAMEPNAMEP:	TDZA D,D	;USES ONLY A,B,T,TT,D
ALPHALESSP:	MOVEI D,TRUTH	;MUST PRESERVE C,AR1,AR2A,R,F (SEE SORT)
	PUSH P,B
	PUSHJ P,PNGET
	EXCH A,(P)
	PUSHJ P,PNGET
	POP P,B			;FROM NOW ON, A HAS PNAME OF 2ND ARG, B OF 1ST
	JRST ALPLP1
ALPL3:	HRRZ A,(A)
	HRRZ B,(B)
ALPLP1:	JUMPE B,ALPL2
	JUMPE A,FALSE		;ON SAMEPN, LOSE IF 2ND ARG RUNS OUT BEFORE 1ST
	HLRZ T,(A)		;ON ALPHAL, LOSE IF 2ND ARG IS SHORTER THAN 1ST
	MOVE T,(T)
	HLRZ TT,(B)		;FOR SAMEPN, WILL RETURN NIL IF
				;TWO ARE UNEQUAL IN SOME PLACE
	CAMN T,(TT)		;NO INFO IF CORRESPONDING PLACES ARE EQUAL
	JRST ALPL3
	JUMPE D,FALSE		;BUT NOT EQUAL IN SAMENAMEP MEANS LOSE
	MOVE TT,(TT)		;MUST DO SOME HAIR FOR THE ALPHALESSP
	LSHC T,-1		; COMPARE TO WIN, SINCE PNAME WORDS ARE
	CAMG T,TT		; LOGICAL DATA, NOT ARITHMETIC
	JRST FALSE		;2ND ARG STRICTLY LESS THAN FIRST
	JRST TRUE		;2ND ARG STRICTLY GREATER THAN FIRST

ALPL2:	EXCH A,D
	JUMPE D,NOT		;IF ALPHAL, WIN WHEN A NON-NUL
				;[FOR 1ST ARG IS PROPER SUBSTRING OF 2ND]
	POPJ P,			;IF SAMEPN, WIN WHEN A NUL
				;[FOR CORRESPONDENTS HAVE BEEN EQUAL ALL ALONG]


SYSP:	MOVEI B,TRUTH		;SUBR 1 - DETERMINE WHETHER SYMBOL HAS
SYSP3:
10%	CAIGE A,BEGFUN		; A "SYSTEM" SUBR PROPERTY
10$	CAIL A,ENDFUN
	 JRST FALSE
10%	CAIG A,ENDFUN
10$	CAIL A,BEGFUN
	 JRST BRETJ
	CAIGE A,BSYSAR		; ... OR MAYBE A SYSTEM ARRAY PROPERTY
	 JRST SYSP6
	CAIGE A,ESYSAR
	 JRST BRETJ		;RETURNS T FOR SUBR/SAR POINTERS
	CAIE B,QAUTOLOAD
	 JRST SYSP6
	CAIL A,BSYSAP
	 CAIL A,ESYSAP
	  JRST FALSE
	JRST BRETJ

SYSP6:	JSP T,SPATOM		;RETURNS FALSE FOR NON-SYMBOLS
	 JRST FALSE
	PUSH P,A		;TRY THE AUTOLOAD PROPERTY FIRST
	MOVEI B,QAUTOLOAD
	PUSHJ P,$GET
	JUMPN A,SYSPZ
SYSPZ1:	POP P,A
	MOVEI B,ASBRL
	PUSHJ P,GETL1
	JUMPE A,CPOPJ		;RETURNS FALSE FOR SYMBOLS WITH NO FN PROPS
	HLRZ B,(A)		;RETURNS NAME OF PROPERTY OF ONE IS FOUND,
	JSP T,%CADR
	JRST SYSP3		; AND THE PROPERTY VALUE PASSES THE SYSP TEST

SYSPZ:	CAIL A,BSYSAP
	 CAIL A,ESYSAP
	  JRST SYSPZ1		;AUTOLOAD PROPERTY NOT SYSTEM'S - GO ON
	POP P,A			;ELSE FLUSH STACK OF A
	MOVEI A,QAUTOLOAD	;AND RETURN AUTOLOAD
	POPJ P,


GCTWA:	JUMPE A,GCTWI
	HLRZ A,(A)
	PUSHJ P,NOTNOT
	MOVEM A,VGCTWA
	JRST GCTWX
GCTWI:	SETOM IRMVF
GCTWX:	MOVEI A,IN0
	SKIPGE IRMVF
	ADDI A,1
	SKIPE VGCTWA
	ADDI A,10
	POPJ P,
;COPYSYMBOL CPSY3 CPSY CPSY0 CPSY1 CPSY4

SUBTTL	COPYSYMBOL FUNCTION

COPYSYMBOL:
	JSP T,SPATOM
	 JSP T,PNGE	
CPSY3:	JUMPN B,CPSY0		;IF NON-NIL SECOND ARG COPY PLIST, VC AND ARGS
CPSY:	PUSHJ P,PNGT0		;COPY THE SYMBOL
	JRST SYCONS

CPSY0:	PUSH P,A		;SAVE OLD SYMBOL
	PUSHJ P,CPSY		;GET A NEW COPY
	EXCH A,(P)		;SAVE NEW COPY, GET OLD
	PUSH P,A		;SAVE OLD ON TOP OF STACK
	HRRZ A,(A)		;GET PLIST
	JUMPE A,CPSY1		;IF NO PLIST THEN TRY VALUE CELL
	MOVEI B,NIL		;NOW GET A NEW COPY OF THE PLIST
	PUSHJ FXP,SAV5M3
	PUSHJ P,.APPEND
	PUSHJ FXP,RST5M3
	HRRM A,@-1(P)		;STORE IN NEW SYMBOL
CPSY1:	SKIPN A,(P)
	 JRST CPSY4
	HLRZ A,(A)		;POINTER TO OLD SYMBOL BLOCK
	HLRZ T,1(A)		;ARGS PROPERTY
	JUMPE T,.+3		;IF NONE THEN DON'T HACK
	 HLRZ TT,@-1(P)		; ELSE COPY THE ARGS PROPERTY
	 HRLM T,1(TT)
	HRRZ A,@(A)		;GET CONTENTS OF VALUE CELL
	CAIN A,QUNBOUND		; IF UNBOUND DON'T BOTHER COPYING
	 JRST S1PAJ
CPSY4:	EXCH AR1,-1(P)		;ELSE COPY VC BY DOING A (SET NEW OLD)
	JSP T,.SET
	EXCH AR1,-1(P)
	JRST S1PAJ
;SETSYNTAX RSSYN1 RSSYN2 RSSYN3 RSSYN5 RSSYN7 RSSYN8 CTRUE RSSYN4

SUBTTL	SETSYNTAX AND OTHER READER SYNTAX FUNCTIONS

;ARGS ARE CHAR (AS NUMBER OR ATOM), SYNTAX-CODE, MACRO-OR-TRANSLATION

SETSYNTAX:	SETZ AR1,	;SUBR 3
	MOVEI AR2A,(B)
	JSP T,SPATOM
	JRST RSSYN1
	JSP T,CHNV1
	JSP T,FIX1A
RSSYN1:	CAIN AR2A,QMACRO
	JRST RSSYN2
	CAIE AR2A,QSPLICING
	JRST RSSYN3
	MOVEI AR1,[QSPLICING,,NIL]
RSSYN2:	MOVE B,A
	PUSH P,CTRUE
	PUSH P,AR1
	JRST SSMC43

RSSYN3:	MOVSI AR1,40000		;WAY TO FAKE OUT SSYN0
	MOVEI B,(A)
	JUMPE C,RSSYN5		;SKIP IF NO CHTRAN STUFF
	PUSHJ P,RSSYN4
	HRRZM A,(FXP)
	MOVEI A,(B)		;LOSING RETROFIT FOR NSTST
	MOVEI B,(C)
	PUSHJ P,SSCHTRAN
	SUB FXP,R70+1
RSSYN5:	JUMPE AR2A,TRUE	;XIT IF NO SYNTAX STUFF
	CAIE AR2A,QSINGLE
	JRST RSSYN7
NW%	PUSH FXP,[600500]
NW$	PUSH FXP,[RS.SCS]
	MOVEI C,(FXP)
	JRST RSSYN8
RSSYN7:	MOVE C,AR2A
	PUSHJ P,RSSYN4
	HLRZS (FXP)
RSSYN8:
	MOVEI A,(B)		;LOSING RETROFIT FOR NSTAT
	MOVEI B,(C)
	PUSHJ P,SSSYNTAX
	SUB FXP,R70+1
CTRUE:	JRST TRUE

RSSYN4:	PUSH FXP,R70
	MOVEI A,(C)
	JSP T,SPATOM
	POPJ P,
	MOVEI C,(B)	;SAVE B
	JSP T,CHNV1
	MOVEI A,(TT)
	MOVEI B,(C)	;RESTORE B
	MOVEI C,(FXP)	;SET C TO BE FIXNUM ON TOP OF PDL
	JSP T,RSXST
	MOVE TT,@RSXTB
	MOVEM TT,(FXP)
	POPJ P,
;SSCHTRAN SSSYNTAX SSSYN1 GRCTI SMACRO SMCR1 GETMAC

SSCHTRAN:
NW%	SKIPA F,[HRRM R,(TT)]
NW$	SKIPA F,[DPB R,[001100+TT,,]]
SSSYNTAX:
NW%	MOVSI F,(HRLM R,(TT))
NW$	MOVE F,[LDB R,[113300+TT,,]]
	PUSH P,[SPROG3]
	MOVSI AR1,40000		;LOSING CROCK
SSSYN1:
	MOVEI C,(B)	;LOSING CROCK
	MOVEI B,(A)
	PUSHJ P,GRCTI		;GET INDEX FOR RCT INTO D
	TLNE AR1,40000		;40000 BIT SAYS EVAL 3RD ARG
	JSP T,FXNV3
	JSP T,SMCR2		;LOCK AND SETUP RCT ARRAY PTR INTO TT
	ADDI TT,(D)
	XCT F		;MAY SKIP (FOR (STATUS CHTRAN))
	UNLKPOPJ	;MUST BE ONLY ONE INSTRUCTION.
NW%	TLNE TT,4000	;SKIP UNLESS MACRO CHAR
NW$	TLNE TT,(RS.MAC);SKIP UNLESS MACRO CHAR
	MOVEI TT,(D)	;USE CHARACTER AS ITS OWN CHTRAN
	TLZ TT,-1
	UNLKPOPJ

GRCTI:	JSP T,FXNV2	;GET READTABLE INDEX
SA%	CAIGE D,NASCII
SA$	CAIGE D,1010
	JUMPGE D,CPOPJ
	JRST GRCTIE

SMACRO:
	MOVEI B,(A)
	PUSHJ P,GRCTI
	JSP T,SMCR2
	ADD TT,D
SMCR1:	MOVEI A,NIL
	MOVE C,(TT)
	UNLOCKI
NW%	TLNN C,4000
NW$	TLNN C,(RS.MAC)
	POPJ P,			;EXIT WITH NIL IF NO MACRO CHAR
NW%	TLNE C,40
NW$	TRNE C,RS.ALT
	MOVEI A,QSPLICING	;SPLICING TYPE
	PUSHJ P,NCONS
NW%	MOVEI B,(C)
NW$	PUSH P, A
NW$	PUSHJ P, GETMAC
NW$	HRRZ B, (A)		;CDR OF ASSQ IS FUNCTION
NW$	POP P, A
	PUSHJ P,XCONS
	POPJ P,

IFN NEWRD,[
;;;ROUTINE TO GET MACRO ENTRY. CHAR IN D.
;;;	CLOBBERS A, B, TT, RETURNS (CHAR . FCN) IN A
;;;	RSXST MUST HAVE BEEN DONE
GETMAC:	MOVEI A, 206		;GET FCN LIST FROM READTABLE
	HRRZ B, @RSXTB		;..
	MOVE A, D		;CHARACTER
	PUSHJ P, IASSQF		;DEPENDS ON D,R,F BEING PRESERVED
	JUMPE A, [LERR [SIXBIT/MACRO CHARACTER VANISHED#!!/]]
	POPJ P,
]		;END OF IFN NEWRD
;SSMACRO SSMC43 SSM4 SSM4AA SSM3 SMCR2 SSM1 SSGCREL SSGCPRO SSGCP1 SSPROQ SSPROX SSGRL2 SSGRL1

SSMACRO:
	CAME T,XC-3		;CROCK TO GET NSTAT UP FAST
	 PUSH P,R70
	POP P,A
	POP P,C
	POP P,B
	SKIPE A
	 PUSHJ P,ACONS
	PUSH P,A
SSMC43:	PUSHJ P,GRCTI
	JSP T,SMCR2
	ADD TT,D
	HRRZM TT,RM4
	JUMPE C,SSM1
NW%	HRLI C,404500
NW$	MOVE C,[RS.CMS]
	SKIPE A,(P)
αIJRST SSM3
SSM4:
	EXCH C,@RM4
NW%	HRRZ A,C
NW%	TLNE C,4000
NW%	PUSHJ P,SSGCREL	;CLOBBERS C
IFN NEWRD,[
	TLNN C,(RS.MAC)
	JRST SSM4AA
	PUSHJ P, GETMAC
;REMOVE PREVIOUS MACRO FUNCTION FROM ASSQ LIST.
;****	(SETQ MAC-LIST (DELQ A MAC-LIST)) ****
SSM4AA:		;AND NO GCREL CRUFT NECC.
	]
	MOVE C,@RM4
NW%	HRRZ A,C
NW%	TLNE C,4000
NW%	PUSHJ P,SSGCPRO
NW%	HRRM A,@RM4
NW$	DPB D, [001100,,@RM4]	;MACROS MUST HAVE SELF AS CHTRAN
NW$	MOVE B, D	;***SURELY THIS COULD BE A LOT LESS KLUDGEY***
NW$	PUSHJ P, XCONS
NW$	MOVE B, A
NW$	MOVEI A, 206
NW$	MOVE A, @RSXTB
NW$	PUSHJ P, XCONS
NW$	MOVE B, A
NW$	MOVEI A, 206
NW$	MOVEM B, @RSXTB
	SUB P,R70+1
	MOVE TT,RM4
	JRST SMCR1

SSM3:	MOVEI AR1,(B)
	HLRZ A,(A)
	JSP T,CHNV1
	CAIN TT,"S		;SPLICINGP
NW%	TLO C,40
NW$	TRO C,RS.ALT
	MOVEI B,(AR1)
	JRST SSM4

SMCR2:	LOCKI
	JRST RSXST

SSM1:	HRLI D,2
	MOVE C,RCT0(D)
NW%	TLNE C,4000	;WAS IT ORIGINALLY A MACRO CHAR?
NW$	TLNE C,(RS.MAC)
	MOVE C,D
	JRST SSM4





SSGCREL:	TDZA D,D	;MUST HAVE USER INTERRUPTS OFF
SSGCPRO:	MOVEI D,1
	JSP T,SPATOM
	 JRST SSGCP1
	HLRZ T,(A)		;GET SYMBOL BLOCK, FIRST WORD
	MOVE T,(T)
	TLNE T,SY.CCN		;IF SYM NOT PROTECTED BECAUSE OF BEING
	 POPJ P,		; "NEEDED" BY COMPILED CODE, THEN PROLIS-IFY
SSGCP1:	SAVE A B
	HRRZ R,(B)
	CAIGE R,200
	HRL R,VREADTABLE
	HRRI R,IN0(R)
	MOVE B,PROLIS
	JUMPE D,SSGRL1
	PUSHJ P,ASSOC
	JUMPE A,SSPROQ
	HLRZ A,(A)
	MOVEM A,-1(P)
SSPROQ:	MOVE B,R
	PUSHJ P,CONS1
	MOVE B,-1(P)
	PUSHJ P,XCONS
	MOVE B,PROLIS
	PUSHJ P,CONS
	MOVEM A,PROLIS
	MOVE A,-1(P)
SSPROX:	POP P,B
	JRST POP1J

SSGRL2:	MOVE A,-1(P)
SSGRL1:	PUSHJ P,IASSQF		;INTERNAL ASSQ WITH NO CHECKING
	 JRST SSPROX		;  NO SKIP ON FAILURE TO FIND
	HRRZ B,(B)		;  SKIP ON SUCCESS
	HRRZ T,(A)
	CAME R,(T)		;COMPARES READTABLE AND NUMBER
	JRST SSGRL2
	MOVE B,PROLIS
	PUSHJ P,.DELETE
	MOVEM A,PROLIS
	MOVEI A,NIL
	JRST SSPROX
;AUTOLOAD


AUTOLOAD:		;T SHOULD CONTAIN THE SYMBOL NAME, A SHOULD
	HRL A,T		;  CONTAIN THE AUTOLOAD PROPERTY
	PUSHJ P,ACONS
	MOVSS (A)
	PUSH P,A	;FOR GC PROTECTION
	PUSH FXP,D
	MOVSI D,(A)
	HRRI D,1000	;AUTOLOAD USER INTERRUPT
	PUSHJ P,UINT
	POP FXP,D
	JRST POP1J
;SYSCALL SCSL0 SCSL1 SCSL1A SCSL6 SCSL3 SCSL4 SCSL5 SCSTMA SCSFAI SCSXIT SCSXT1 SCSTAT STATER SSTATUS STATUS STAT1 STAT2 STAT3 STAT6 STAT6A STAT7 STAT8

IFN ITS,[

SUBTTL	SYSCALL FUNCTION

SYSCALL:
	MOVEI D,QSYSCALL
	CAML T,[-10.]
	CAMLE T,XC-2
	 JRST WNALOSE
	MOVEI D,2(P)
	ADD D,T			;D POINTS TO ARG WITH .CALL NAME IN IT
	MOVNM T,SYSCL8		;#ARGS+2
	JSP T,0PUSH+2(T)	;PUSH SLOTS FOR COPYING FIXNUM ARGS
SCSL0:	MOVE A,-1(D)
	JSP T,FXNV1		;<CONTROL-BITS>,,<NUMBER-OF-OUTPUTS-DESIRED>
	HLL D,TT
	HRRZS TT
	CAILE TT,20
	 JRST SCSTMA
	HRLM TT,SYSCL8		;#ANSWERS,,#ARGS+2
	MOVE A,(D)
	PUSH FXP,D
	PUSHJ P,SIXMAK
	MOVSI D,(SETZ)
	EXCH D,(FXP)		;THE SETZ GETS PUT OUT HERE
	MOVEI R,-1(FXP)
	MOVEI F,(FXP)
	PUSH FXP,TT		;THE SIXBIT FOR THE NAME OF THE .CALL
	HLRZ T,D
	TLZ D,-1
	TLO T,5000		;THE CONTROL BITS ARG
	JRST SCSL1A

SCSL1:	 HRRZ T,(D)
	SKOTT T,FX
	 JRST SCSL1A
	MOVE TT,(T)
	MOVEM TT,(R)
	MOVEI T,(R)
	SUBI R,1
SCSL1A:	PUSH FXP,T
	MOVEI AR1,(T)
	CAIN AR1,TRUTH
	 HRRZ AR1,V%TYI
	MOVEI T,(AR1)		;THIS IS AN INLINE CODED XFILEP
	LSH T,-SEGLOG
	MOVE T,ST(T)
	TLNN T,SA
	 JRST SCSL6
	MOVE T,ASAR(AR1)	;MUST ALSO HAVE FILE BIT SET
	TLNN T,AS.FIL\AS.JOB	;ALLOW EITHER JOB OR FILE
	 JRST SCSL6
	MOVE TT,[@TTSAR]
	ADDM TT,(FXP)
SCSL6:
	CAIGE D,(P)		;LOOP TO INSTALL REMAINING INPUT ARGS
	 AOJA D,SCSL1
	HLRZ D,SYSCL8
	SOJL D,SCSL4
	MOVEI T,1(FXP)
	HRLI T,2000
SCSL3:	PUSH FXP,T		;LOOP TO INSTALL ANSWER REQUESTS
	ADDI T,1
	SOJGE D,SCSL3
SCSL4:	MOVSI T,(SETZ)		;FINAL SETZ SIGNALS END OF PARAMETERS
	IORM T,(FXP)		;[THERE WILL ALWAYS BE AT LEAST ONE, I.E. THE CONTROL]
	MOVEI TT,F.CHAN
	.CALL (F)
	 JRST SCSFAI
	SETZB A,B
	HLRZ D,SYSCL8
SCSL5:	JUMPE D,SCSXIT		;LOOP TO LISTIFY UP NUMERIC ANSWERS
	POP FXP,TT
	PUSHJ P,CONSFX
	SOJA D,SCSL5

SCSTMA:	MOVEI TT,15
	JRST SCSXT1

SCSFAI:	.SUSET [.RBCHN,,R]
	.CALL SCSTAT
	 .VALUE
	LDB TT,[220600,,D]
	MOVE D,SYSCL8
	HLRS D
	SUB FXP,D		;TAKE OFF THE SLOTS FOR ANSWERS
	JSP T,FXCONS		;LISP NUMBER FOR ERROR CODE
SCSXIT:	MOVE D,SYSCL8		;SYSCL8 HAS 2+#ARGS
	ADDI D,-1(D)		;PUSHED WAS 3+2*#ARGS
	HRLS D			; WHICH IS 2*SYSCL8-1
	SUB FXP,D
SCSXT1:	MOVE D,SYSCL8
	HRLS D
	SUB P,D			;STRAIGHTEN UP P
	POPJ P,

SCSTAT:	SETZ
	SIXBIT \STATUS\		;GET CHANNEL STATUS
	      ,,R		;CHANNEL #
	402000,,D		;STATUS WORD
		.SEE IOCERR
		.SEE CHNI1

]		;END OF IFN ITS



;;@ STATUS 223		HAIRY STATUS FUNCTIONS
;;;   ***** MACLISP ****** HAIRY STATUS FUNCTIONS ******************
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************

SUBTTL	INTERPRETER FOR STATUS SERIES

STATER:	MOVEI B,(AR2A)
	MOVEI A,(F)
	PUSHJ P,CONS
	FAC [ILLEGAL REQUEST!]

SSTATUS:
	SKIPA F,CQSSTATUS	;FEXPR
STATUS:	MOVEI F,QSTATUS		;FEXPR
	MOVEI AR2A,(A)
	JUMPE A,STATER
	HLRZ A,(A)		;FIRST ARG IS FUNCTION NAME
	PUSHJ P,STLOOK		;LOOK IT UP IN ASCII TABLE
	 JRST STATER
	CAIE F,QSTATUS		;STATUS OR SSTATUS?
	 ADDI R,STBSS-STBS
	ADDI R,STBS
	MOVE D,(R)		;GET TABLE ENTRY
	LSH D,13
	ASH D,-12
	TLO D,1
	HRRI D,(F)
	MOVEM D,SWNACK		;HACK FOR ARGS CHECKING
	MOVEI A,(AR2A)
	MOVEI TT,SWNACK
	JRST FWNACK
;RETURN HERE FROM FWNACK IF ARGS OKAY
STAT1:	HRRZ A,(A)		;CDR ARGS LIST
	HRLI R,410200
	PUSH FXP,R		;BYTE POINTER TO ARGS DESCRIPTORS
	PUSH FXP,R70		;COUNTER FOR ARGS
STAT2:	JUMPE A,STAT6		;JUMP IF NO MORE ARGS
	PUSH P,A
	HLRZ A,(A)		;ELSE GET NEXT ARG
	ILDB T,-1(FXP)		;GET ARG DESCRIPTOR
	JRST .+1(T)
	 JRST STAT6		;0  END OF ARGS
	 JRST STAT3		;1  QUOTED ARG
	 JRST STAT8		;2  QUOTED LIST OF REST
	PUSHJ P,EVAL		;3  EVALUATED ARG
STAT3:	EXCH A,(P)		;LEAVE ARG ON PDL
	HRRZ A,(A)
	SOS T,(FXP)		;COUNT ARGS
	CAML T,XC-4		;NO MORE THAN FOUR ALLOWED
	 JRST STAT2		; (UNLESS IT IS AN LSUBR)
	MOVSI TT,020000		;FOR AN LSUBR, ARRANGE FOR
	ADDB TT,-1(FXP)		; THE LAST ARG SPEC TO BE REUSED
	LDB TT,[410300,,(TT)]	;SEE WHETHER IT'S REALLY AN LSUBR
	CAIE TT,1
	 CAIN TT,3
	  JRST STAT2
STAT6:	POP FXP,T		;-<# OF ARGS>
	POP FXP,F		;RH IS ADDRESS OF TABLE ENTRY
	LDB TT,[410300,,(F)]	;GET STATUS SUBR DISPATCH TYPE
STAT6A:	HRRZ D,(F)
	JRST STAT7(TT)

STAT7:	JSP R,PDLA2(T)		;0  SUBR-TYPE FUNCTION
	JRST (D)		;1  LSUBR-TYPE FUNCTION
	JRST STSCH		;2  SUBR-TYPE WITH CHAR ARG
	JRST STSCH		;3  LSUBR-TYPE WITH CHAR ARG
	JRST STSGVAL		;4  GET LISP VALUE
	JRST STSSVAL		;5  SET LISP VALUE
	JRST STSSTNIL		;6  SET TO T-OR-NIL
	MOVE TT,(D)		;7  GET FIXNUM VALUE
	JRST FIX1

STAT8:	MOVE A,(P)
	SETZM (P)
	JRST STAT3
;STSGVAL CQSSTATUS STSSVAL STSSV1 STSSTNIL STLOOK STLK1 STSCH STSCH1 STSCH2

STSGVAL:	HRRZ A,(D)
CQSSTATUS:	POPJ P,QSSTATUS

STSSVAL:	POP P,A
	JSP T,PDLNMK
STSSV1:	MOVEM A,(D)
	POPJ P,

STSSTNIL:	POP P,A
	PUSHJ P,NOTNOT
	JRST STSSV1

STLOOK:	PUSHJ P,PNGET		;LOOK UP 5 CHARS IN TABLE
	HLRZ A,(A)		;F SAYS WHETHER STATUS OR SSTATUS
	MOVE TT,(A)		;SKIP ON SUCCESS, LEAVING POINTER IN R
	MOVSI R,-LSTBA
	CAIE F,QSTATUS
	 MOVSI R,-LSSTBA
STLK1:	CAMN TT,STBA(R)
	 JRST POPJ1
	AOBJN R,STLK1
	POPJ P,

STSCH:	PUSH FXP,F
	PUSH FXP,T
	ADDI T,1(P)
	HRRZ A,(T)
	JSP T,SPATOM
	 JRST STSCH1
	PUSHJ P,PNGET
	HLRZ A,(A)
	MOVE TT,(A)
	LSH TT,-35
	JSP T,FXCONS
	JRST STSCH2

STSCH1:	PUSHJ P,EVAL
	JSP T,FXNV1
STSCH2:	MOVE T,(FXP)
	ADDI T,1(P)
	HRRM A,(T)
	POP FXP,T
	POP FXP,F
	LDB TT,[410300,,(F)]
	SUBI TT,2
	JRST STAT6A
;SNOFEATURE SFEATURE SSFEATURE SSFEA1 SSFEA2 SSNOFEATURE SSSSLU SSSSS SSSS SSSSS1 SARRAY

SUBTTL STATUS FEATURES FEATURE NOFEATURE, SSTATUS, ARRAY

SNOFEATURE:
	PUSH P,CNOT
SFEATURE:
	HRRZ B,FEATURES
	JUMPE A,BRETJ
	HLRZ A,(A)
	PUSHJ P,MEMQ1
	JRST NOTNOT

SSFEATURE:
	PUSH P,A
	HRRZ B,FEATURES
	PUSHJ P,MEMQ1
	JUMPN A,SSFEA2
	HRRZ A,(P)
	HRRZ B,FEATURES
	PUSHJ P,CONS
SSFEA1:	MOVEM A,FEATURES
SSFEA2:	JRST POPAJ

SSNOFEATURE:
	PUSH P,A
	HRRZ B,FEATURES
	PUSHJ P,.DELQ
	JRST SSFEA1

SSSSLU:	POP P,A
	PUSHJ P,STLOOK
	 JRST FALSE
	JRST TRUE

SSSSS:	SKIPA F,CQSSTATUS
SSSS:	 MOVEI F,QSTATUS
	JUMPN T,SSSSLU
	PUSH P,R70
	CAIN F,QSTATUS
	 SKIPA F,[-LSTBA,,]
	  MOVSI F,-LSSTBA
SSSSS1:	MOVE T,STBA(F)
	MOVEM T,PNBUF
	SETOM LPNF
	MOVEI C,PNBUF
	PUSHJ P,RINTERN
	MOVE B,(P)
	PUSHJ P,CONS
	MOVEM B,(P)
	AOBJN F,SSSSS1
	JRST POPAJ

;STATUS ARRAY RETURNS A LIST OF FOUR NUMBERS:
;  <MIN # OF DIMS> <MAX # OF DIMS> <MIN AXIS LENGTH> <MAX AXIS LENGTH>
;THE LIST IS FRESHLY CONSED ON EACH CALL, AND MAY BE DESTRUCTIVLY MODIFIED
SARRAY:	SETZ B,			;START WITH NIL
	MOVEI TT,777777		;APPROXIMATION OF MAXIMUM AXIS LENGTH
	JSP T,FXCONS
	JSP T,%CONS
	MOVEI B,IN1
	JSP T,%XCONS
	MOVEI B,IN5
	JSP T,%XCONS
	MOVEI B,IN1
	JRST XCONS		;CONS UP FINAL NUMBER THEN RETURN
;SSPLSS SPLSS SCHTRAN SSYNTAX

SUBTTL	STATUS +, STATUS CHTRAN, STATUS SYNTAX


SSPLSS:	MOVEI C,RD8N
	SKIPE A
	 MOVEI C,RD8W
	MOVEM C,RDOBJ8
SPLSS:	MOVE A,RDOBJ8
	SUBI A,RD8N
	JRST NOTNOT

SCHTRAN:
	SKIPA F,[SKIPA TT,(TT)]
SSYNTAX:
NW%	 MOVSI F,(HLRZ TT,(TT))
NW$	 MOVE F,[LDB TT,[113300+TT,,0]]
	PUSH P,CFIX1
	SETZ AR1,		;CROCK
	JRST SSSYN1
;STTY STTY1 ZZZ STTY3 STTY4 ZZZ ZZZ

SUBTTL	STATUS TTY, SSTATUS TTY


;;; (STATUS TTY <FILE>) RETURNS A LIST OF NUMBERS CONCERNING THE TTY:
;;;	FOR ITS:  (<TTYST1> <TTYST2> <TTYSTS>)
;;;	FOR D10:  (<GETLCH WORD> <FILE STATUS>)
;;;	FOR SAIL: (<GETLIN WORD> <FILE STATUS> <SETACT 1> <SETACT 2> <SETACT 3> <SETACT 4>)
;;;	FOR D20:  (<CCOC 1> <CCOC 2> <JFN MODE WORD> <DEFERRED INTERRUPT CHARS MASK>)
;;; RETURNS NIL IF <FILE> IS OMITTED AND THE JOB DOES NOT POSSESS A CONTROLLING TTY.

STTY:	JUMPN T,STTY1
;TEST TO SEE WHETHER WE POSSESS A CONTROLLING TTY
IFN ITS,[
	.SUSET [.RTTY,,TT]	;FOR ITS, SEE IF THIS JOB HAS THE TTY
	JUMPL TT,FALSE		.SEE %TBNOT
]		;END OF IFN ITS
IFN D10,[
IFN SAIL,[
	GETLN D,		;RETURNS ZERO IF JOB IS DETACHED
	 JUMPN D,FALSE
]		;END OF IFN SAIL
IFE SAIL,[
	GETLIN D,		;FOR D10, LH OF GETLIN WORD ZERO
	TLNN D,-1		; MEANS JOB IS DETACHED
	 JRST FALSE
]		;END OF IFE SAIL
]		;END OF IFN D10
IFN D20,[
	LOCKI
	GJINF			;FOURTH RETURNED VALUE IS -1 FOR
	MOVE T,4
	SETZB 1,2		; A DETACHED JOB
	SETZB 3,4
	UNLOCKI
	AOJE T,FALSE
]		;END OF IFN D20
	SKIPA AR1,V%TYI
STTY1:	 POP P,AR1
	PUSHJ P,TFILOK		;SAVES D (FOR SAIL), DOES A LOCKI
	POP FXP,T		;POP THE LOCKI WORD
IFN ITS,[
	.CALL TTYGET		;GET THREE VALUES IN D, R, F
	 .LOSE 1400
	PUSH FXP,D		;TTYST1
	PUSH FXP,R		;TTYST2
	PUSH FXP,F		;TTYSTS
ZZZ==3
]		;END OF IFN ITS
IFN D10,[
	PUSHJ P,D10TNM		;RETURNS APPROPRIATE TERMINAL NUMBER IN D
SA%	GETLCH D
SA$	GETLIN D
	PUSH FXP,D
	SKIPL F.MODE(TT)	.SEE FBT.CM
	 JRST STTY3
	MOVSI R,(SIXBIT \TTY\)	;FOR THE REGULAR TTY,
	SETZB D,F		; OPEN A TEMPORARY CHANNEL
	OPEN TMPC,D		; SO CAN GET THE CHANNEL STATUS
	 HALT
	GETSTS TMPC,D
	RELEASE TMPC,
	JRST STTY4

STTY3:	MOVE R,F.CHAN(TT)	;FOR ANY OTHER TTY, USE THE EXISTING CHANNEL
	LSH R,27
	IOR R,[GETSTS 0,D]
	XCT R
STTY4:	PUSH FXP,D
IFE SAIL, ZZZ==2
IFN SAIL,[
	PUSHN FXP,4
	MOVSI D,-3(FXP)
	SETACT D		;GET FOUR ACTIVATION WORDS
ZZZ==6
]		;END OF IFN SAIL
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)
	RFCOC			;READ CCOC WORDS
	PUSH FXP,2		;CCOC1
	PUSH FXP,3		;CCOC2
	RFMOD			;READ JFN MODE WORD FOR TERMINAL
	PUSH FXP,2
	MOVE 1,[RT%DIM,,.FHSLF]
	RTIW			;READ DEFERRED INTERRUPT WORD
	PUSH FXP,3
	SETZB B,C
ZZZ==4
]		;END OF IFN D20
	PUSH FXP,T		;LOCKI WORD
	UNLOCKI
	PUSHJ P,CONS1PFX
REPEAT ZZZ-2, PUSHJ P,CONSPFX
	JRST CONSPFX
EXPUNGE ZZZ
;SSTTY SSTTY1 SSTTY3 SSTTY7 SSTTY3 SSTTY4 SSTTY5 SSTTY3 SSTTY4 SSTTY2 TTY2ST TTYSAC


;;; (SSTATUS TTY <NUM1> <NUM2> ... <NUMN> <TTY>) SETS THE
;;; TTY STATUS WORDS FOR <TTY> (WHICH MAY BE OMITTED).
;;; ANY PARAMETERS WHICH ARE OMITTED OR NIL ARE NOT CHANGED.

SSTTY:	HRRZ AR1,(P)		;LSUBR
	CAIN AR1,TRUTH		;LAST ARG T => DEFAULT TTY
	 HRRZ AR1,V%TYI
	JSP TT,XFILEP		;SEE IF LAST ARG IS A TTY
	 SKIPA AR1,V%TYI	;IF NOT, WE USE THE DEFAULT
	  AOSA D,T		;IN ANY CASE, PUT ADJUSTED NUMBER
	   SKIPA D,T		; OR ARGUMENTS IN D
	    POPI P,1		; AND ADJUST THE STACK
	SKIPN F,D		;NO ARGUMENTS MEANS CHANGE NOTHING
	 JRST TRUE
	MOVE R,FXP		;SAVE CURRENT LEVEL OF FXP
SSTTY1:	POP P,A			;FOR EACH ARGUMENT
	SKIPE A			; WE PUSH TWO
	 JSP T,FXNV1		; WORDS ONTO FXP:
	PUSH FXP,TT		; THE FIRST IS THE NUMERIC VALUE, IF ANY,
	PUSH FXP,A		; AND THE SECOND IS ZERO IF THE ARG WAS NIL
	AOJL D,SSTTY1
;BECAUSE THE ARGUMENTS WERE POPPED OFF P IN REVERSE ORDER,
; THEY CAN NOW BE POPPED OFF FXP IN THE CORRECT ORDER.
;F HAS THE NEGATIVE OF THE NUMBER OF ARGUMENTS.
	PUSH P,R		;NOW SAVE OLD FXP ON STACK
IT%	PUSHJ P,TFILOK		;DOES A LOCKI, SAVES F
IT$	PUSHJ P,TIFLOK		;FOR ITS, WE ARE SETTING INPUT PARAMETERS
	POP FXP,AR2A		;POP LOCKI WORD
IFN ITS,[
	POP FXP,T
	POP FXP,D
	SKIPN T
	 SKIPA D,TI.ST1(TT)	;GET COPY OF THE OLD VALUE IF NOT SETTING NEW
	  MOVEM D,TI.ST1(TT)	;UPDATE TTYST1 WORD
	AOJE F,SSTTY3		;JUMP IF NO MORE ARGUMENTS
	POP FXP,T
	POP FXP,R
	SKIPN T
	 SKIPA R,TI.ST2(TT)
	  MOVEM R,TI.ST2(TT)	;UPDATE TTYST2 WORD
	AOJE F,SSTTY3		;JUMP IF NO MORE ARGUMENTS
	POP FXP,T
	POP FXP,F
	JUMPE T,SSTTY3		;NULL THIRD ARG, THEN NEEDN'T DO HAIRIER CALL
	.CALL TTYSAC		;THREE WORDS ARE IN D, R, F
	 .LOSE 1400
	JRST SSTTY2

SSTTY3:	.CALL TTY2ST		;SET JUST TTYST1, TTYST2
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	POP FXP,D
	POP FXP,T
	JUMPE D,SSTTY7
IFE SAIL,[
	PUSHJ P,D10TNM
	CAMN D,XC-1
	 GETLCH D
	HRRI T,(D)
	SETLCH T
]		;END OF IFE SAIL
IFN SAIL,[
	SKIPL F.MODE(TT)	.SEE FBT.CM
	 SETLIN T
]		;END OF IFN SAIL
SSTTY7:	AOJE F,SSTTY2
	POP FXP,D
	POP FXP,T
	JUMPE D,SSTTY4		;FOR NULL ARG, FORGET THE FOLLOWING HAIR
	SKIPL F.MODE(TT)	.SEE FBT.CM
	 JRST SSTTY3
	PUSH FXP,F
	MOVSI R,(SIXBIT \TTY\)
	SETZB D,F
	OPEN TMPC,D		;OPEN A TEMP CHANNEL FOR THE TTY
	 HALT
	SETSTS TMPC,T		;SET THE STATUS
	RELEASE TMPC,
	POP FXP,F
	JRST SSTTY4

SSTTY3:	MOVE R,F.CHAN(TT)
	LSH R,27
	IOR R,[SETSTS 0,T]
	XCT R
SSTTY4:
IFN SAIL,[
	AOJE F,SSTTY2		;JUMP IF NO MORE ARGS
IRPC X,,[1234]
	POP FXP,D
	POP FXP,T
	SKIPE D
	 MOVEM T,TI.ST!X(TT)	;UPDATE ACTIVATION WORD X
IFSN X,4, AOJE F,SSTTY5
TERMIN
SSTTY5:	MOVEI T,TI.ST1(TT)
	SETACT T
]		;END OF IFN SAIL
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)	;GET JFN FOR SUBSEQUENT JSYS'S
	POP FXP,T
	POP FXP,D
	SKIPE T
	 MOVEM D,TI.ST1(TT)	;UPDATE CCOC1
	AOJE F,SSTTY3		;JUMP IF NO MORE ARGUMENTS
	POP FXP,T
	POP FXP,R
	SKIPE T
	 MOVEM R,TI.ST2(TT)	;UPDATE CCOC2
	IOR D,R
SSTTY3:	JUMPE D,SSTTY4		;JUMP IF NO CHANGE TO CCOC'S
	MOVE 2,TI.ST1(TT)
	MOVE 3,TI.ST2(TT)
	SFCOC			;SET CCOC'S
SSTTY4:	AOJGE F,SSTTY2		;JUMP IF NO MORE ARGUMENTS
	POP FXP,D
	POP FXP,2
	SKIPE D
	 SFMOD			;UPDATE JFN MODE WORD
	AOJE F,SSTTY2
	POP FXP,D
	POP FXP,3		;DEFERRED TERMINAL INTERRUPT MASK
	JUMPE D,SSTTY2
	MOVE 1,[ST%DIM,,.FHSLF]
	MOVE 2,[STDTIW]		;STANDARD TERMINAL INTERRUPT WORD
	STIW			;SET TERMINAL INTERRUPT WORDS
]		;END OF IFN D20
SSTTY2:	POP P,FXP		;RESTORE FXP
	PUSH FXP,AR2A		;PUSH BACK LOCKI WORD
20$	SETZB B,C		;CLEAR JUNK OUT OF AC'S
	JRST UNLKTRUE

IFN ITS,[

TTY2ST:	SETZ
	SIXBIT \TTYSET\		;SET TTY VARIABLES
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,TI.ST1(TT)	;TTYST1
	400000,,TI.ST2(TT)	;TTYST2

TTYSAC:	SETZ
	SIXBIT \TTYSET\		;SET TTY VARIABLES
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,D		;TTYST1
	      ,,R		;TTYST2
	400000,,F		;TTYSTS

]		;END OF IFN ITS

;SFRET

SFRET:	CAIN B,QBPS		;FIGURE OUT SPACE TYPE
	 JRST 1(R)		;BPS => SKIP 1
	CAIN B,QRANDOM		;BAD SPACE TYPE => SKIP 0
	 JRST (R)		;LIST, FIXNUM, FLONUM, BIGNUM,
	CAIN B,QARRAY		; SYMBOL, SAR => SKIP 2
	 MOVEI B,QRANDOM
	CAIL B,QLIST
	 CAILE B,QRANDOM
	  JRST (R)
   2DIF [HRREI TT,(B)]-NFF,QLIST
	JRST 2(R)
;SUUOLINKS SUUOL1 SSUUOLINKS SSUUL1 SCLI SSCLI CLIVAR SNOINT

SUBTTL STATUS UUOLI, SSTATUS UUOLI, STATUS IOC, STATUS CLI, SSTATUS CLI

SUUOLINKS:
IFE PAGING,[
	SKIPN T,LDXSIZ
	 JRST FALSE		;RETURN NIL IF NO XCT HACKERY HAS BEEN DONE
	SETZB TT,D		;ZERO COUNTER
	TLNE T,400000
	 MOVEI D,TRUTH		;D GETS TRUE IF PURIFIED
	MOVNS T			;MAKE UP AOBJN POINTER FOR XCT CALL AREA 2
	HLL T,LDXBLT
	MOVSS T
SUUOL1:	SKIPN (T)		;COUNT FREE CELLS IN XCT CALL AREA
	 AOS TT
	AOBJN T,SUUOL1
	JSP T,FIX1A	;RETURN LIST OF PURE FLAG AND COUNT
	PUSHJ P,NCONS
	MOVE B,D
	JRST XCONS
]		;END IFE PAGING
IFN PAGING,[
	SKIPN LDXPNT		;IF NO XCT PAGES
	 JRST FALSE		; RETURN FALSE
	MOVN TT,LDXLPC		;GET NUMBER OF FREE SLOTS IN LAST SEGMENT
	JSP T,FIX1A
	PUSHJ P,NCONS
	MOVEI B,NIL
	SKIPE LDXPFG		;PURIFIED?
	 MOVEI B,TRUTH
	JRST XCONS
]		;END IFN PAGING

SSUUOLINKS:
	MOVE A,USENDI
	PUSHJ P,SSSENDI		;Re-init SENDI hook and friends
	MOVE A,UUSRHNK
	PUSHJ P,SSUSRHUNK
	MOVE A,UCALLI
	PUSHJ P,SSCALLI
IFE PAGING,[
	SKIPN TT,LDXBLT		;ZAP CALLS FOR XCTS WITH A BLT
	  JRST FALSE
	MOVEI T,(TT)
	ADD T,LDXSM1
	BLT TT,(T)
	JRST TRUE
]		;END IFE PAGING
IFN PAGING,[
	SKIPN T,LDXPNT		;LOOP OVER ALL XCT SEGMENTS
	 JRST FALSE
SSUUL1:	JUMPE T,TRUE		;RETURN TRUE WHEN DONE
	HRRZI TT,LDXOFS(T)	;TARGET ADR
	HRL TT,LDXPSP(T)	;ADR-OFFSET TO GET DATA FROM
	ADD TT,[LDXOFS,,0]	;MAKE INTO SOURCE ADR
	BLT TT,SEGSIZ-1(T)	;RECOPY LINK AREA
	HLRZ T,LDXPSP(T)	;LINK TO NEXT PAGE
	JRST SSUUL1
]		;END IFN PAGING

IFN USELESS*ITS,[
SCLI:	MOVEI T,%PICLI		;TEST TO SEE IF THIS BIT IS ON (IN IMASK)
	TDNN T,IMASK		;IF ON, RETURN T, ELSE RETURN NIL
	 JRST FALSE
	JRST TRUE

SSCLI:	MOVEI T,%PICLI
	MOVEI TT,IMASK
	SKIPN A			;ON OR OFF?
	 TLOA TT,(ANDCAM T,)	;OFF, USE ANDCAM
	  HRLI TT,(IORM T,)	;ON, USE IORM
	XCT TT			;MODIFY LISP'S MASK
	SKIPN A
	 TLOA T,(TRZ)
	  TLO T,(TRO)
	.CALL CLIVAR
	 .LOSE 1400		;BAD NEWS....
	JUMPN A,TRUE
	POPJ P,

CLIVAR:	SETZ
	SIXBIT \USRVAR\
	MOVEI %JSELF
	MOVEI .RMASK
	MOVEI
	SETZ T
]		;END IFN USELESS*ITS

SNOINT:	SKIPN A,UNREAL		   ;Check out UNREAL
	  JRST CPOPJ		   ;  NIL
	JUMPL A,TRUE		   ;-1 = T
	POPJ P,			   ;Else QTTY, just return it

;STIME SDATE STCVT SRCDIR SUNAME SUSERID SJNAME SSUBSYSTEM SJNUMBER SHOMEDIR SHSNAME SHSNA1 SHSNA2

SUBTTL	STATUS TIME, DATE, UNAME, USERID, JNAME, JNUMBER, SUBSYSTEM

IFN ITS,[

STIME:	.RTIME TT,
	JRST SDATE+1

SDATE:	.RDATE TT,
	AOJE TT,FALSE
	MOVE D,TT
	SUB D,[202020202021]	;21 ADJUSTS FOR THE AOJE
	JSP F,STCVT
	JSP F,STCVT
	JSP F,STCVT
	MOVNI T,3
	JRST LIST

STCVT:	SETZB TT,R
	LSHC TT,6
	IMULI TT,10.
	ROTC D,6
	ADD TT,R
	JSP T,FXCONS
	PUSH P,A
	JRST (F)

SRCDIR:	SKIPE A,SUDIR		;STATUS FOR "READ-CONNECTED-DIRECTORY"
	 POPJ P,
	MOVE TT,IUSN
	PUSHJ P,SIXATM
	MOVEM A,SUDIR
	POPJ P,

SUNAME:	.SUSET [.RUNAME,,TT]
	JRST SIXATM

SUSERID:
	.SUSET [.RXUNAME,,TT]
	JRST SIXATM

SJNAME:	.SUSET [.RJNAME,,TT]
	JRST SIXATM

SSUBSYSTEM:
	.SUSET [.RXJNAME,,TT]
	JRST SIXATM

SJNUMBER:
	.SUSET [.RUIND,,TT]
	JRST FIX1

SHOMEDIR:
	.SUSET [.RHSNAME,,TT]
	JRST SIXATM

SHSNAME:			;NEW HAIRY READ HSNAME
	JUMPE T,SHOMEDIR	;NO ARGS, SAME AS (STATUS HOMEDIR)
	PUSH FXP,T		;SAVE NUMBER OF ARGS OVER SUPERIOR CHECK
	JSP T,SIDDTP		;IS THERE A DDT ABOVE US?
	 JRST SHSNA2		;NOPE...
	POP FXP,T
	SETZ TT,		;ASSUME NULL ITS NAME
	AOJE T,SHSNA1		;ITS ARG GIVEN?
	POP P,A			;YES, GET THE ITS NAME
	PUSHJ P,SIXMAK		;GET SIXBIT INTO TT
SHSNA1:	PUSH FXP,TT		;SAVE THE ITS NAME
	POP P,A
	PUSHJ P,SIXMAK		;CONVERT UNAME TO SIXBIT
	PUSH FXP,TT		;STORE THAT ON FXP ALSO
	MOVEI TT,-1(FXP)	;POINTER TO FIRST WORD
	HRLI TT,..RHSNAME	;FOR .BREAK 12,
	.BREAK 12,TT		;READ THE HSNAME FROM DDT
	POP FXP,TT		;NOW CONVERT TO AN ATOM
	PUSHJ P,SIXATM
	POPI FXP,1		;REMOVE EXTRA WORD FROM STACK
	POPJ P,			;THEN RETURN
SHSNA2:	POP FXP,T		;RESTORE NUMBER OF ARGS
	MOVNS T
	SUB P,R70(T)		;REMOVE THE APPROPRIATE NUMBER OF WORDS FROM P
	SETZ A,			;RETURN NIL
	POPJ P,
]	;END OF IFN ITS
;SHSNAME SDATE STIME STIM2 SSUBSYSTEM SDATE STIME STIM2 SSUBSYSTEM SJNAME SJNUMBER SUSERID SUSER1 SUNAME

IFE ITS,[
SHSNAME:			;HSNAME IS SIMPLY HOMEDIR
	MOVNS T
	SUB P,R70(T)		;REMOVE THE APPROPRIATE NUMBER OF WORDS FROM P
20$ 	JRST SRCDIR	
20%	MOVE A,SUDIR
20%	POPJ P,
]	;END IFE ITS
IFN D10,[
IFE SAIL,[
SDATE:	MOVE R,[%CNYER]
	MOVE D,[%CNMON]
	MOVE TT,[%CNDAY]
	GETTAB R,
	 JRST FALSE
	SUBI R,1900.
	JRST STIM2

STIME:	MOVE R,[%CNHOR]
	MOVE D,[%CNMIN]
	MOVE TT,[%CNSEC]
	GETTAB R,
	 JRST FALSE
STIM2:	GETTAB D,
	 JRST FALSE
	GETTAB TT,
	 JRST FALSE
	PUSHJ P,CONS1FX
	MOVE TT,D
	PUSHJ P,CONSFX
	MOVE TT,R
	JRST CONSFX

SSUBSYSTEM:
	HRROI TT,.GTPRG		;GET PROGRAM NAME FOR MYSELF
	GETTAB TT,
	 JRST FALSE
	JRST SIXATM
]		;END OF IFE SAIL
IFN SAIL,[
SDATE:	DATE D,			;DATE IN D = <<YEAR-1964.>*12.+MONTH-1>*31.+DAY-1
	IDIVI D,31.		;REMAINDER IN R IS DAYS-1
	AOJ R,
	MOVE T,R
	IDIVI D,12.		;REMAINDER HERE IS MONTH-1
	AOJ R,
	ADDI D,64.		;QUOTIENT IN D IS YEAR-1964.
	PUSH FXP,D
	PUSH FXP,R
	PUSH FXP,T
	JRST STIM2

STIME:	TIMER TT,		;GET TIME IN TT
	IDIVI TT,60.		;REDUCE TO SECONDS
	IDIVI TT,60.		;NOW GET SECONDS AS A REMAINDER
	MOVE R,D
	IDIVI TT,60.		;REMAINDER IS MINUTES
	PUSH FXP,TT
	PUSH FXP,D		;REST IS HOURS
	PUSH FXP,R
STIM2:	PUSHJ P,CONS1PFX	;START A LIST WITH NUMBER ON FXP
	PUSHJ P,CONSPFX		;ADD FIXNUM TO LIST
	JRST CONSPFX		;ADD THIRD FIXNUM TO LIST

SSUBSYSTEM:
	SETO TT,
	GETNAM TT,		;GET (GENERIC?) NAME OF JOB
	JRST SIXATM
]		;END OF IFN SAIL

SJNAME:	MOVE TT,D10NAM
	JRST SIXATM

SJNUMBER:	PJOB TT,	;GET JOB NUMBER
	JRST FIX1

SUSERID:
IFE SAIL,[
	HRROI TT,.GTNM1		;GET USER NAME FOR THIS JOB
	GETTAB TT,
	 JRST SUNAME
	HRROI D,.GTNM2
	GETTAB D,
	 HALT			;HOW CAN THIS LOSE?
	JUMPE TT,SUNAME
	SETOM LPNF		;CONVERT TWO WORDS OF SIXBIT
	MOVE C,PNBP		; TO ASCII IN PNBUF
SUSER1:	LDB T,[360600,,TT]
	ADDI T,40
	IDPB T,C
	LSHC TT,6
	JUMPN TT,SUSER1
	PUSHJ FXP,RDAEND
	JRST RINTERN		;MAKE IT AN ATOMIC SYMBOL
]		;END OF IFE SAIL
SUNAME:	GETPPN TT,		;PPNATM EXPECTS PPN IN TT
	JFCL
	JRST PPNATM
]		;END OF IFN D10
;STIME STIME1 SDATE SDATIM SJNAME SSUBSYSTEM SRCDIR SUSERID SUNAME SJNUMBER

IFN D20,[

STIME:	PUSHJ P,SDATIM		;RETURNS TIME IN F
	MOVEI TT,(F)
	IDIVI TT,60.		;REMAINDER IS SECONDS
	MOVE R,D
	IDIVI TT,60.		;THIS YIELDS HOURS AND MINUTES
	EXCH TT,R
STIME1:	PUSHJ P,CONS1FX		;CONS R, D, TT INTO A LIST OF FIXNUMS
	MOVE TT,D
	PUSHJ P,CONSFX
	MOVE TT,R
	JRST CONSFX

SDATE:	PUSHJ P,SDATIM		;RETURNS DATE IN D AND R
	HLRZ TT,R		;DAY-1
	HLRZ R,D		;YEAR
	SUBI R,1900.		;REDUCE IT TO A YEAR MOD 100.
	MOVEI D,1(D)		;MONTH
	AOJA TT,STIME1		;INCREMENT DAY-1 TO DAY, AND GO CONS

SDATIM:	LOCKI			;PREVENT JUNK IN AC'S FROM CAUSING TROUBLE
	SETO 2,			;CURRENT TIME
	SETZ 4,
	ODCNV			;GET TIME AND DATE INFORMATION
	MOVE D,2		;RETURN INFORMATION IN D, R, F
	MOVE R,3
	MOVE F,4
	SETZB 1,2		;PREVENT TROUBLE AFTER UNLOCKI
	SETZB 3,4
	UNLKPOPJ

SJNAME:				;?
SSUBSYSTEM:
	LOCKI
	GETNM			;GET PROGRAM NAME
	MOVE TT,1
	SETZ 1,
	UNLOCKI
	JRST SIXATM

SRCDIR:	JSP T,TNXUDI
	JRST PNBFAT

SUSERID:			;?
SUNAME:	LOCKI
	MOVE TT,[PNBUF,,PNBUF+1]
	SETZM PNBUF		;CLEAR PNBUF
	BLT TT,PNBUF+LPNBUF-1
	GJINF			;GET JOB INFORMATION
	MOVE 2,1		;1 HAS LOGIN DIRECTORY NUMBER
	MOVE 1,PNBP
	DIRST			;GET EQUIVALENT ASCII STRING
	 HALT			;BETTER NOT FAIL...
	SETZB 1,2
	UNLOCKI
	JRST PNBFAT		;MAKE ASCII STRING AN ATOM

SJNUMBER:
	LOCKI
	GJINF			;GET JOB INFORMATION
	MOVE TT,3		;JOB NUMBER
	SETZB 1,2
	UNLOCKI
	JRST FIX1

]		;END OF IFN D20
;SSLINMODE ZZX

SUBTTL	STATUS LINMODE


SSLINMODE:
	CAMN T,XC-1
	 SKIPA AR1,V%TYI
	  POP P,AR1
	POP P,A
	PUSHJ P,TIFLOK		;DOES A LOCKI
	MOVE T,F.MODE(TT)
	SKIPN A
IFN ITS,[
ZZX==<%TG<ACT>>*010101010101		;6 %TGACT BITS
	 SKIPA R,[STTYW1&ZZX]		;PUT APPROPRIATE ACTIVATION
	  SKIPA R,[STTYL1&ZZX]		; BITS IN R AND F
	   SKIPA F,[STTYW2&ZZX]
	    SKIPA F,[STTYL2&ZZX]
]		;END OF IFN ITS
IFN SAIL,[
	 SKIPA D,[[SACTW1 ? SACTW2 ? SACTW3 ? SACTW4],,]
	  SKIPA D,[[SACTL1 ? SACTL2 ? SACTL3 ? SACTL4],,]
]		;END OF IFN SAIL
IFN D20,[
	SKIPA R,[XACTW]
	 SKIPA R,[XACTL]
]	;END OF IFN D20	
	     TLZA T,FBT.LN
	      TLO T,FBT.LN
	MOVEM T,F.MODE(TT)
IFN ITS,[
	MOVE D,[ZZX]
	ANDCAM D,TI.ST1(TT)
	IORM R,TI.ST1(TT)	;CLOBBER IN ONLY ACTIVATION BITS
	ANDCAM D,TI.ST2(TT)
	IORM F,TI.ST2(TT)
EXPUNGE ZZX
]		;END OF IFN ITS
IFN SAIL,[
	HRRI D,TI.ST1(TT)
	BLT D,TI.ST4(TT)	;UPDATE STATUS WORDS
	MOVEI T,TI.ST1(TT)
	SETACT T		;TELL THE SYSTEM ABOUT IT
]		;END OF IFN SAIL
IFN D20,[
	MOVEI D,770000		;BITS 18.-23. ARE FOR WAKE-UP CONTROL
	ANDCAM D,TI.ST3(TT)
	IORM R,TI.ST3(TT)
]	;END OF IFN D20	
	UNLOCKI
	JRST NOTNOT

;SDOW SDOWQX SDOW SDOWQX SDOW SDOWQX

SUBTTL	STATUS DOW

IFN USELESS,[
IFN ITS,[

SDOW:	.RYEAR TT,
	AOJE TT,FALSE
	LSH TT,-31
	ANDI TT,16
	MOVE T,SDOWQX(TT)
	MOVEM T,PNBUF
	MOVE T,SDOWQX+1(TT)
	MOVEM T,PNBUF+1
	JRST PNBFAT

SDOWQX:
IRP DAY,,[SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY]
	ASCII \DAY\
TERMIN

]		;END OF IFN ITS

IFN D10,[

SDOW:
IFE SAIL,[
	MOVE T,[%CNDTM]		;INTERNAL FORMAT DATE,,TIME
	GETTAB T,
	 JRST FALSE
	HLRZS T
]		;END OF IFE SAIL
IFN SAIL,[
	DATE T,			;DATE IN T
	DAYCNT T,		;CONVERT TO NUMBER OF DAYS
]				;END OF IFN SAIL
;T NOW HAS NUMBER OF DAYS SINCE 1-JAN-64 (A WEDNESDAY)
	IDIVI T,7
	LSH TT,1
	MOVE T,SDOWQX(TT)
	MOVEM T,PNBUF
	MOVE T,SDOWQX+1(TT)
	MOVEM T,PNBUF+1
	JRST PNBFAT

SDOWQX:				;FUNNY ORDER FOR DEC-10
IRP DAY,,[WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY,MONDAY,TUESDAY]
	ASCII \DAY\
TERMIN
]		;END OF IFN D10

IFN D20,[

SDOW:	PUSHJ P,SDATIM		;RH OF R GETS DAY OF WEEK (0 = MONDAY)
	LSH R,1
	MOVE T,SDOWQX(R)
	MOVEM T,PNBUF
	MOVE T,SDOWQX+1(R)
	MOVEM T,PNBUF+1
	JRST PNBFAT

SDOWQX:				;FUNNY ORDER FOR DEC-10
IRP DAY,,[MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY]
	ASCII \DAY\
TERMIN
]		;END OF IFN D20

]		;END OF IFN USELESS
;SABBREVIATE SSABBREVIATE SSABB1 SMEMFREE

SUBTTL	STATUS ABBREVIATE, STATUS MEMFREE


IFN USELESS,[
SABBREVIATE:
	MOVEI TT,LRCT-2
	HRRZ A,VREADTABLE
	HRRZ TT,@TTSAR(A)
	JRST FIX1

SSABBREVIATE:
	SKIPN TT,A
	 JRST SSABB1
	MOVEI TT,3
	CAIE A,TRUTH
	 JSP T,FXNV1
SSABB1:	MOVEI T,(TT)
	MOVEI TT,LRCT-2
	HRRZ B,VREADTABLE
	HRRM T,@TTSAR(B)
	JRST PDLNKJ
]		;END OF IFN USELESS



SMEMFREE:
PG$	MOVE TT,HINXM	;NUMBER OF WORDS IN HOLE
PG$	SUB TT,BPSH	;INTERRUPT HERE WOULD SCREW,
PG%	MOVE TT,MAXNXM
PG%	SUB TT,HIXM
	JRST FIX1	; WORRY, WORRY, WHO CARES
;SSYST0 SSYSTEM SSYST2 SSYST7 SSYST1 SSYST3 SSYST5 SSYST4 SSYST6

SUBTTL	STATUS SYSTEM
	
SSYST0:	WTA [SYMBOL REQUIRED - STATUS SYSTEM!]
SSYSTEM:			;(STATUS SYSTEM) ENTRY-POINT
	JSP T,SPATOM
	 JRST SSYST0
	JUMPE A,SSYST6
	CAIN A,TRUTH
	 JRST SSYST6
	MOVEI AR1,NIL
	MOVEI B,QSYMBOL		;CHECK FOR SYMBOL HEADER IN SYSTEM SPACE
	CAIE A,TRUTH
	  CAIN A,QUNBOUND
	    JRST SSYST2
	CAIL A,QRDQTE		;First system symbol, except for T and QUNBOUND
	 CAILE A,SYMSYL
	  JRST SSYST7		;NOT IN RANGE, CONTINUE CHECKING
SSYST2: EXCH A,AR1
	PUSHJ P,XCONS
	EXCH A,AR1
SSYST7:	MOVEI B,QVALUE
	HLRZ C,(A)
	HRRZ C,(C)
	CAIGE C,ESYSVC
	 JRST SSYST4
SSYST1:	MOVEI B,SSSBRL
	PUSHJ P,GETLA
	JUMPE A,AR1RETJ
	HLRZ B,(A)
	HRRZ A,(A)
	HLRZ C,(A)
	CAIE B,QAUTOLOAD
	JRST SSYST3
	CAIL C,BSYSAP		;IS IT A SYSTEM AUTOLOAD PROP?
	 CAIL C,ESYSAP
	  JRST SSYST1	;NOPE
	JRST SSYST4	;YUP
SSYST3:	CAIE B,QARRAY
	JRST SSYST5
	CAIL C,BSYSAR		;IS IT A SYSTEM ARRAY
	 CAIL C,ESYSAR
	  JRST SSYST1
	JRST SSYST4
SSYST5:	CAIL C,ENDFUN		;SUBR OR VC ADDRESS IN SYSTEM AREA
	 JRST SSYST1
SSYST4:	EXCH A,AR1		;A WIN, SO CONS UP THIS PROPERTY NAME
	PUSHJ P,XCONS
	EXCH A,AR1
	JRST SSYST1

SSYST6:	MOVEI A,QVALUE
	PUSHJ P,NCONS
	MOVEI B,QSYMBOL
	JRST XCONS
;SSGCTIM SGCTIM SGCTM1 SLVRNO SFILESYSTEM.TYPE SOPSYSTEM.TYPE SSITE STTYREAD SLAP SLAP1 SSTTYREAD SSLAP SSLAP1

SUBTTL	STATUS GCTIME, LISPVERSION, TTYREAD, ←, TERPRI, OPSYSTEM, SITE, FILESYSTEM

SSGCTIM:
	JSP T,FXNV1
IT$	LSH TT,-2
10$	IDIVI TT,1000.
20$	IDIVI TT,1000.
	EXCH TT,GCTIM
	JRST SGCTM1

SGCTIM:	MOVE TT,GCTIM
SGCTM1:	PUSH P,CFIX1		;FAKE OUT ENTRY INTO RUNTIME
	JRST RNTM1

SLVRNO:	MOVE A,[440600,,[LVRNO]]
	JRST READ6C

SFILESYSTEM.TYPE: HLRZ A,FILEFT
	POPJ P,
SOPSYSTEM.TYPE: HLRZ A,OPSYFT
	POPJ P,
SSITE:	HLRZ A,SITEFT
	POPJ P,

STTYREAD:	SKIPA TT,[LRCT-2]
SLAP:	HRROI TT,LRCT-1
SLAP1:	HRRZ A,VREADTABLE
	MOVE A,@TTSAR(A)
	SKIPL TT
	MOVSS A
	JRST RHAPJ


SSTTYREAD:	SKIPA R,[LRCT-2]
SSLAP:	HRROI R,LRCT-1
SSLAP1:	PUSHJ P,NOTNOT
	HRRZ D,VREADTABLE	;INTERRUPT COULD SCREW HERE (FOO)
	JSP T,.STOR0
	POPJ P,
;SLINMODE STERPRI STERP1 SSTERPRI


SLINMODE:	MOVSI F,FBT<LN>
	SKIPN T
	 SKIPA AR1,V%TYI
	  POP P,AR1
	PUSHJ P,TIFLOK
	TDNN F,F.MODE(TT)
	 TDZA A,A
	  MOVEI A,TRUTH
	UNLKPOPJ


STERPRI:
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
STERP1:	SKIPLE FO.LNL(TT)
	 TDZA A,A
	  MOVEI A,TRUTH
	UNLKPOPJ

SSTERPRI:
	CAMN T,XC-1
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	POP P,A
	MOVMS FO.LNL(TT)
	SKIPE A
	 MOVNS FO.LNL(TT)
	JRST STERP1

;SCRFUN SCRFIL SLOSEF SSLOS0 SSLOSEF BPDLNKJ

SUBTTL	STATUS CRFILE, LOSEF


SCRFUN==FALSE		;***** TEMP CROCK *****

SCRFIL:	SETZ A,
	PUSHJ P,DEFAULTF
	HRRZ A,(A)
	POPJ P,


SLOSEF:	MOVE T,LOSEF
	JFFO T,.+1
	MOVNS TT
	ADDI TT,36.
	JRST FIX1

SSLOS0:	MOVEI A,(B)
	WTA [BAD LOSEF - SSTATUS!]
SSLOSEF:
	MOVEI B,(A)
	SKIPE GCPSAR
	JRST SLOSEF
	JSP T,FXNV2
	JUMPLE D,SSLOS0
	CAILE D,16
	JRST SSLOS0
	MOVEI TT,1
	LSH TT,(D)
	SUBI TT,1
	MOVEM TT,LOSEF
BPDLNKJ:	MOVEI A,(B)
	JRST PDLNKJ
;SJCL SJCL2 SJCL4 SDDTP SJCL SJCL1A SJCL1 SJCL2 SJCL4 SJCL3

SUBTTL	STATUS JCL, HACTRN

IFN D10,[
SJCL:	SKIPN T,SJCLBUF
	JRST FALSE
	PUSH FXP,T
	PUSH FXP,[440700,,SJCLBUF+1]
SJCL2:	ILDB TT,(FXP)
	PUSHJ P,RDCH2
	PUSH P,A
	SOSLE -1(FXP)
	JRST SJCL2
SJCL4:	MOVE T,SJCLBUF
	SUB FXP,R70+2
	JRST LIST
]		;END OF IFN D10

IFN ITS,[
SDDTP:	.SUSET [.RSUPPRO,,TT]	;STATUS HACTRN
	JUMPL TT,FALSE		;NIL MEANS NO SUPERIOR
	MOVEI A,TRUTH		;T MEANS THE UNKNOWN SUPERIOR
	.SUSET [.ROPTION,,TT]
	TLNE TT,OPTDDT
	 MOVEI A,QDDT
	TLNE TT,OPTLSP
	 MOVEI A,QLISP
	POPJ P,

SJCL:	.SUSET [.ROPTION,,TT]
	TLNN TT,%OPCMD
	 JRST FALSE		;EXIT WITH NIL IF NO COMMAND LINE
	.SUSET [.RSUPPRO,,T]
	JUMPL T,FALSE
	SETZM JCLBF
	MOVE T,[JCLBF,,JCLBF+1]
	BLT T,JCLBF+LJCLBF-1
	HLLOS JCLBF+LJCLBF-1
	.BREAK 12,[..RJCL,,JCLBF]
	MOVEI T,JCLBF		;MUST CLEAR BIT 35'S AS DDT MAY SET THEM!!
	MOVEI TT,1		;MASK
SJCL1A:	ANDCAM TT,(T)		;TURN OFF BIT 35
	CAIGE T,JCLBF+LJCLBF-1	;DO ALL WORDS IN JCLBF
	 AOJA T,SJCL1A
	PUSH FXP,R70
	PUSH FXP,[440700,,JCLBF]
SJCL1:	ILDB TT,(FXP)
	JUMPE TT,SJCL3
SJCL2:	PUSH P,TT
	PUSHJ P,RDCH2
	EXCH A,(P)
	SOS -1(FXP)
	CAIE A,↑M	;CAR-RET CAUSES TERMINATION
	JRST SJCL1
SJCL4:	MOVE T,-1(FXP)
	SUB FXP,R70+2
	JRST LIST

SJCL3:	HRRZ T,(FXP)
	CAIE T,JCLBF+LJCLBF-1
	JRST SJCL4
	MOVEI A,QSJCL
	FAC [TOO MUCH JCL - STATUS!]
]		;END OF IFN ITS
;STTYTYPE STTYSIZE STTYS1 STTSZ9 SOSPEED SOSSP9

SUBTTL	STATUS TTYSIZE, TTYTYPE, NEWIO OSPEED

IFN ITS,[

STTYTYPE:
	TDZA F,F
STTYSIZE:
	 MOVEI F,1
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	.CALL STTSZ9
	 .VALUE
	UNLOCKI
	JUMPN F,STTYS1
	MOVE TT,R
	JRST FIX1

STTYS1:	JSP T,FXCONS
	MOVEI B,(A)
	MOVE TT,D
	JRST CONSFX

STTSZ9:	SETZ
	SIXBIT \CNSGET\		;GET CONSOLE PARAMETERS
	      ,,F.CHAN(TT)	;CHANNEL #
	  2000,,D		;VERTICAL SCREEN SIZE
	  2000,,TT		;HORIZONTAL SCREEN SIZE
	402000,,R		;TCTYP
;TTYCOM, TTYOPT, TTYTYP NOT RETRIEVED

;OSPEED - RETURNS TTY OUPUT SPEED VARIABLE
SOSPEED:
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	.CALL SOSSP9
	 .VALUE
	UNLOCKI
	JRST FIX1
SOSSP9:	SETZ
	SIXBIT \TTYVAR\
	      ,,F.CHAN(TT)
	      ,,[SIXBIT \OSPEED\]
	402000,,TT	

]		;END OF IFN ITS
;STTYTYPE STTYSIZE STTYS1 D10TNM

IFN D10,[
STTYTYPE:
IFE SAIL,[
	SKIPE T
	 POPI P,1
	JRST 0POPJ		;ALWAYS ZERO (?)
]		;END OF IFE SAIL
IFN SAIL,[
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	PUSHJ P,D10TNM		;GET TTY NUMBER IN D
	GETLIN D		;GET LINE CHARACTERISTICS
	UNLOCKI
	HLRZ T,D
	TRZ T,150777		;MASK OUT ALL NON-TTY-TYPE BITS
	JFFO T,.+2
	 SETZ TT,
	JRST FIX1
]		;END OF IFN SAIL

STTYSIZE:
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
IFN SAIL,[
;R GETS SIZE, TT GETS WIDTH
	MOVE F,[-2,,R]		;COUNT OF ARGS,,ADR OF ARGS
	MOVE R,[15,,R]		;TERMINAL SIZE, -1 IF NOT DISPLAY
	MOVE D,[6,,D]		;TERMINAL WIDTH (EXCEPT IF NON-ARPA TTY)
	TTYSET F,		;DO TERMINAL OPERATIONS
	SKIPGE R		;IF USE REAL PAGE LENGTH
	 MOVE R,FO.RPL(TT)
	MOVE TT,D		;LINE LENGTH ENDS UP IN TT
]		;END OF IFN SAIL
	MOVE R,FO.RPL(TT)	;GET REAL PAGE LENGTH
IFE SAIL,[
	MOVE TT,FO.LNL(TT)	;GET LINEL
	ADDI TT,1		;WIDTH IS 1 MORE THAN LINEL
]	;END IFE SAIL
STTYS1:	UNLOCKI
	JSP T,FXCONS
	MOVEI B,(A)
	MOVE TT,R
	JRST CONSFX

;;; GET DEC-10 TERMINAL NUMBER INTO D (-1 FOR OWN TERMINAL).
;;; ENTER WITH TTSAR OF FILE OBJECT IN TT.

D10TNM:
IFN SAIL,[
	MOVE D,F.CHAN(TT)
	SKIPL F.MODE(TT)
	 DEVNUM D,		;GET DEVICE NUMBER
	  SETO D,		;ON FAILURE, OR FOR TTY, USE -1
]		;END OF IFN SAIL
IFE SAIL,[
	SETO D,
	SKIPGE F.MODE(TT)	.SEE FBT.CM
	 POPJ P,
	HRRZ D,F.RDEV(TT)	;CONVERT SIXBIT UNIT NUMBER TO OCTAL
REPEAT 3,[
	DPB D,[360600,,D]
	DPB D,[030300,,D]
	TLNN D,700000
	 LSH D,-3
	LSH D,-3
]		;END OF REPEAT 3
	ANDI D,777
]		;END OF IFE SAIL
	POPJ P,
]		;END OF IFN D10
;STTYTYPE STTYSIZE STTYS1

IFN D20,[

STTYTYPE:
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	HRRZ 1,F.JFN(TT)
	GTTYP			;GET TTY TYPE
	MOVE TT,2
	UNLOCKI
	JRST FIX1

STTYSIZE:
	SKIPN T
	 SKIPA AR1,V%TYO
	  POP P,AR1
	PUSHJ P,TOFLOK
	HRRZ 1,F.JFN(TT)
	RFMOD			;READ JFN MODE WORD
	LDB R,[.BP TT%LEN,B]	;GET PAGE LENGTH
	LDB TT,[.BP TT%WID,B]	;GET WIDTH
	SETZ 2,
STTYS1:	UNLOCKI
	JSP T,FXCONS
	MOVEI B,(A)
	MOVE TT,R
	JRST CONSFX

]		;END OF IFN D20
;STTYSCAN STSCN1 SSTTYSCAN SSTSC1 STTYCONS STCON1 SSTTYCONS SSTCO1 SSTC2 SSTC1

SUBTTL	STATUS TTYSCAN, TTYCONS, TTYINT


STTYSCAN:
	SKIPN T		;GET TTY PRE-SCAN FUNCTION
	 SKIPA AR1,V%TYI
	  POP P,AR1
IFN SFA,[
	JSP TT,XFOSP
	 JRST STSCN1
	 JRST STSCN1
	MOVEI A,(AR1)
	MOVEI B,QTTYSCAN
	SETZ C,
	JRST ISTCSH
STSCN1:	]	;END IFN SFA
	PUSHJ P,TIFLOK
	HRRZ A,TI.BFN(TT)
	UNLKPOPJ

SSTTYSCAN:
	CAMN T,XC-1	;SET TTY PRE-SCAN FUNCTION
	 SKIPA AR1,V%TYI
	  POP P,AR1
IFN SFA,[
	JSP TT,XFOSP		;DO WE HAVE AN SFA?
	 JRST SSTSC1		;NOPE
	 JRST SSTSC1		;DITTO
	POP P,A			;GET THE ARG
	JSP T,%NCONS		;TURN IT INTO A LIST
	MOVEI C,(A)		;AS THE ARG TO THE SFA
	MOVEI B,QTTYSCAN
	MOVEI A,(AR1)
	JRST ISTCSH
SSTSC1:	]	;END IFN SFA
	PUSHJ P,TIFLOK
	POP P,A
	HRRZM A,TI.BFN(TT)
	UNLKPOPJ

STTYCONS:
	MOVEI AR1,(A)		;GET ASSOCIATED TTY FILE OF
	CAIN AR1,TRUTH		; OPPOSITE DIRECTION, IF ANY
	 HRRZ AR1,V%TYI		;PREFER INPUT TTY
IFN SFA,[
	JSP TT,XFOSP
	 JRST STCON1
	 JRST STCON1
	MOVEI A,(AR1)
	MOVEI B,QTTYCONS
	SETZ C,
	JRST ISTCSH
STCON1:	]	;END IFN SFA
	PUSHJ P,TFILOK		;LEAVES ITS ARGUMENT IN AR1
	HRRZ A,FT.CNS(TT)	.SEE TTYMOR
	UNLKPOPJ

SSTTYCONS:
	SKIPE A			;CONS TOGETHER TWO TTY'S INTO
	 CAIN A,TRUTH		; A SINGLE CONSOLE
	  EXCH A,B		;PREFER TO SEE NIL OR T SECOND
	CAIN A,TRUTH		;PREFER INPUT TTY FOR FIRST ARG
	 HRRZ A,V%TYI
SFA%	MOVEI AR1,(A)
IFN SFA,[
	JSP TT,AFOSP		;DO WE HAVE AN SFA?
	 JRST SSTCO1		;NOPE
	 JRST SSTCO1		;NOPE
	MOVEI C,(B)		;YES, PASS THE SECOND ARG AS THE SFA'S ARG
	MOVEI B,QTTYCONS	;TTYCONS IS THE OPERATION
	JRST ISTCSH
SSTCO1:	]	;END IFN SFA
	PUSHJ P,TFILOK
	JUMPE B,SSTC1		;SUNDER THEM IF ONE IS NIL
	MOVEI T,TIFLOK
	TLNN TT,TTS<IO>
	 MOVEI T,TOFLOK
	UNLOCKI
	CAIE B,TRUTH
	 JRST SSTC2
	HRRZ B,V%TYI		;FOR SECOND ARG OF T, USE TTY
	TLNN TT,TTS<IO>		; OF NECESSARY DIRECTION
	 HRRZ B,V%TYO
SSTC2:	MOVEI AR1,(B)
	PUSHJ P,(T)
	HRRZ C,FT.CNS(TT)
	HRRZM A,FT.CNS(TT)	;LINK THIS ONE TO THAT ONE
	MOVEI TT,FT.CNS
	SKIPE C			;IF IT WAS LINKED, UNLINK
	 SETZM @TTSAR(C)	; ITS FORMER PARTNER
	EXCH B,@TTSAR(A)	;LINK THAT ONE TO THIS ONE
	JUMPE B,UNLKTRUE	;????? THINK ABOUT ALL THIS?
	CAIE B,(A)		;IF IT WAS LINKED, UNLINK
	 SETZM @TTSAR(B)	; ITS FORMER PARTNER
	JRST UNLKTRUE

SSTC1:	HRRZ B,FT.CNS(TT)	;GET ASSOCIATED TTY
	SETZM FT.CNS(TT)	;UNLINK THAT FROM THIS
	MOVEI TT,FT.CNS
	SKIPE B			;ONLY UNCONS IF WAS PREVIOUSLY CONSED
	 SETZM @TTSAR(B)	;UNLINK THIS FROM THAT
	JRST UNLKTRUE
;STTYINT SSTTYINT SSTIN1 SSTIN2 SSTIN3 SSTIN4


STTYINT:
	CAMN T,XC-1
	 SKIPA AR1,V%TYI
	  POP P,AR1
	POP P,A
	JSP T,CHNV1
	MOVE F,TT
	PUSHJ P,TIFLOK
	ROT F,-1
	ADDI TT,FB.BUF(F)
	HRRZ A,(TT)
	SKIPL F
	 HLRZ A,(TT)
	UNLKPOPJ

SSTTYINT:
	CAMN T,XC-2
	 SKIPA AR1,V%TYI
	  POP P,AR1
	POP P,A
	JSP T,PDLNMK
	MOVEI B,(A)
	POP P,A
	JSP T,CHNV1
	MOVE F,TT
	PUSHJ P,TIFLOK
	ROT F,-1
20$	PUSH P,TT		;SAVE TTSAR
	ADDI TT,FB.BUF(F)
	JUMPL F,SSTIN1
	HRLM B,(TT)
20%	JRST UNLKTRUE
20$	SKIPA
SSTIN1:	HRRM B,(TT)
20%	JRST UNLKTRUE
IFN D20,[
	POP P,TT		;RESTORE TTSAR
	ROT F,1			;RESTORE CHARACTER
	CAIE F,3		;DON'T ALLOW USE TO ASSIGN ↑C
	 CAILE F,26.		;TOPS-20 ONLY SUPPORTS TO ↑Z
	  JRST UNLKTRUE		;RETURN TRUE, BUT DON'T DO TELL THE OP SYS
	MOVE T,V%TYI		;ONLY DO FOLLOWING IF *THE* TTY
	CAME TT,TTSAR(T)	;CHECK FOR TTSAR OF *THE* TTY
	 JRST UNLKTRUE
	SETZB T,R		;SEARCH FOR A) FREE SLOT, B) EQUIVALENT SLOT
SSTIN2:	CAMN F,CINTAB(T)	;EQUIVALENT SLOT?
	 JRST SSTIN3		;YES, CODE ASSIGNED SO TAKE SPECIAL ACTION
	SKIPN CINTAB(T)		;EMPTY SLOT?
	 MOVEI R,400000(T)	;YES, REMEMBER WE HAVE ONE
	CAIGE T,CINTSZ-1	;DONE ALL OF TABLE?
	 AOJA T,SSTIN2		;NOPE, CONTINUE LOOPING
	JUMPE B,UNLKTRUE	;IF TURNING OFF AND DIDN'T FIND IN TAB, DONE
	SKIPN R			;FOUND A FREE SLOT?
	 JRST SSTIN4
	MOVEM F,CINTAB-400000(R) ;YES, STORE NEW CHARACTER ASSIGNMENT
	CAILE R,400005		;CONVERT TO 400000+<D20 INTERRUPT CHANNEL>
	 ADDI R,22
	HRLZI 1,(F)		;CHARACTER
	HRRI 1,-400000(R)	;INTERRUPT CHANNEL
	ATI			;ASSIGN THE CHARACTER TO THE CHANNEL
	MOVEI A,TRUTH		;RETURN TRUE
	UNLKPOPJ

SSTIN3:	JUMPN B,UNLKTRUE	;RETURN IF CHARACTER WAS ALREADY ASSIGNED
	SETZM CINTAB(T)		;CLEAR THE TABLE ENTRY
	MOVEI 1,(F)		;DEASSIGN THE TERMINAL CODE
	DTI
	JRST UNLKTRUE		;THEN RETURN TRUE

SSTIN4:	UNLOCKI
	FAC [NO FREE INTERRUPT CHANNELS  - (SSTATUS TTYINT)!]
]	;END IFN D20
;SPDLMAX SSPDLMAX SGCSIZE SSGCSIZE SGCMAX SSGCMAX SGCMIN SSGCMIN SPDLSIZE SPURSIZE SSPCSIZE SPDLROOM SSGP1 SSGP1A SSGP1C SSGP1D SSGP2A


SUBTTL	STORAGE SPACE STATUS CALLS

SPDLMAX:
IFN PAGING,[
		JSP D,SSGP1	;0 - STATUS PDLMAX
SSPDLMAX:	JSP D,SSGP1	;1 - SSTATUS PDLMAX
]			;END OF IFN PAGING
.ELSE	REPEAT 2, 0		;0, 1 UNUSED
SGCSIZE:	JSP D,SSGP1	;2 - STATUS GCSIZE
SSGCSIZE:	JSP D,SSGP1	;3 - SSTATUS GCSIZE
SGCMAX:		JSP D,SSGP1	;4 - STATUS GCMAX
SSGCMAX:	JSP D,SSGP1	;5 - SSTATUS GCMAX
SGCMIN:		JSP D,SSGP1	;6 - STATUS GCMIN
SSGCMIN:	JSP D,SSGP1	;7 - SSTATUS GCMIN
SPDLSIZE:	JSP D,SSGP1	;10 - STATUS PDLSIZE
SPURSIZE:	SKIPA B,A	;14 - STATUS PURSIZE
SSPCSIZE:	 JSP D,SSGP1	;12 - STATUS SPCSIZE
	MOVEI D,14		;FAKE OUT A JSP D,SSGP1
	CAIG B,QRANDOM		;LOSE IF BAD SPACE TYPE
	 CAIGE B,QLIST
	JRST SSGPLZ
   2DIF SKIPN (B),GTNPS8,QLIST
	 JRST SSGPLZ
	JRST SSGP1A

SPDLROOM:
	MOVEI D,20+SPDLMAX+1	;20 - STATUS PDLROOM
SSGP1:	SUBI D,SPDLMAX+1	;GET CODE NUMBER IN D
	MOVEI C,(B)		;YECH - SHUFFLE, SHUFFLE
	MOVEI B,(A)
SSGP1A:	MOVEI AR1,(B)
	CAIN B,QRANDOM		;GET LINEARIZATION BY USING
	 JRST SSGPLZ		; QRANDOM FOR QARRAY
	CAIN B,QARRAY
	 MOVEI B,QRANDOM
	TRNE D,6		;SKIP IF PDLMAX OR PDLSIZE
	 JRST SSGP1C
	CAIL B,QREGPDL
	 CAILE B,QSPECPDL
	  JRST SSGPLZ
	JRST SSGP1D

SSGP1C:	CAIG B,QRANDOM		;LOSE IF BAD SPACE TYPE
	 CAIGE B,QLIST
	JRST SSGPLZ

SSGP1D:	ROT D,-1		;LOW BIT=1 => SSTATUS
	JUMPL D,SSG3A1
	MOVE TT,@SSGPGT(D)	;ELSE GET VALUE TO RETURN
	TRNE D,3
	 JRST SSGP2A
   2DIF [SUB TT,(B)]C2,QREGPDL	;FOR PDL STUFF, CUT DOWN
	TLZ TT,-1		; QUANTITY BY PDL ORIGIN
SSGP2A:	TLNN TT,-1		;HACK SO THAT STATUS GCMIN
	 JRST FIX1		; WILL RETURN A FLONUM
	JRST FLOAT1		; IF APPROPRIATE
;SSGPGT SSGPLZ SSGP3$ SSG3A1 SSGP3A SSGP3Z SSGP3Y SSGPPT SSGM1 SSGM2 SSGMRV SSGP4


SSGPGT:
10%	2DIF (B),XPDL,QREGPDL	;PDLMAX
10$	0			;UNUSED
	2DIF (B),GFSSIZ,QLIST	;GCSIZE
	2DIF (B),XFFS,QLIST	;GCMAX
	2DIF (B),MFFS,QLIST	;GCMIN
	2DIF (B),P,QREGPDL	;PDLSIZE
	2DIF (B),SFSSIZ,QLIST	;SPCSIZE
	2DIF (B),PFSSIZ,QLIST	;PURSIZE
	0			;UNUSED
	2DIF (B),OC2,QREGPDL	;PDLROOM

SSGPLZ:	MOVEI T,SBADSP	;BAD SPACE TYPE (OR MAYBE PDL TYPE?)
	TRNN D,6
	 MOVEI T,[SIXBIT \BAD PDL TYPE - STATUS!\]
	MOVEI A,(AR1)
	%WTA (T)
	MOVEI B,(A)
	JRST SSGP1A

SSGP3$:	JUMPE C,TRUE		;USED BY $ALLOC
;A CHANGE IN POLICY TO ALWAYS ALLOW A FLONUM
SSG3A1:	MOVEI T,(D)
	CAIN T,3		;IF GCMIN,
	 JRST SSGP4		; USE SPECIAL CHECKING CODE
SSGP3A:	SKOTT C,FL		;ALLOW FLONUM
	 JRST SSGP3Z
	MOVE TT,(C)		;GET THE FLONUM
	PUSH FXP,D		;SAVE D OVER CALL TO IFIX
	JSP T,IFIX		;CONVERT TO A FIXNUM
	POP FXP,D
	MOVE R,TT
	JRST SSGP3Y		;THEN HANDLE AS IF FIXNUM
SSGP3Z:	SKOTT C,FX		;MUST BE FIXNUM
	 JRST FALSE
	MOVE R,(C)		;ELSE FETCH THE FIXNUM
SSGP3Y:	TLNE R,-1		;LOSE IF NEG OR TOO LARGE
	 JRST FALSE
	JRST SSGPPT(D)		;ELSE JRST TO SPECIAL ROUTINE

SSGPPT:
10%	JRST SSPM1		;PDLMAX
10$	0
	JRST SSGS1		;GCSIZE
	JRST SSGX1		;GCMAX
SSGM1:	CAIL R,40		;GCMIN
    2DIF [CAMLE D,(B)]SSGMRV,QLIST	;FIXNUM GCMIN MUST HAVE
	  JRST FALSE			; "REASONABLE" VALUE
SSGM2:
   2DIF [MOVEM R,(B)]MFFS,QLIST		;SO SAVE IT, ALREADY
	JRST TRUE

SSGMRV:	20000		;LIST
	10000		;FIXNUM
	4000		;FLONUM
BG$	4000		;BIGNUM
	4000		;SYMBOL
REPEAT HNKLOG+1, 100000	;HUNKS
	1000		;SAR

SSGP4:	MOVEI A,(C)		;(SSTATUS GCMIN ...) PERMITS
	JSP T,FLTSKP		; A FLONUM ARGUMENT
	 JRST SSGP3A
	JUMPLE TT,FALSE		;BUT MUST BE POSITIVE
	CAML TT,[.005]		; AND BETWEEN .005 AND .95
	 CAMLE TT,[.95]
	  JRST FALSE
	MOVE R,TT
	JRST SSGM2
;SSGS1 SSGX1 SSPM1 CSETP1 CSETNS CSETP2 CSETP3 CSETP7



SSGS1:	ANDI R,SEGMSK
   2DIF [MOVEM R,(B)]GFSSIZ,QLIST	;SET GCSIZE
   2DIF [CAMG R,(B)]XFFS,QLIST		;IF GREATER THAN GCMAX,
	 JRST TRUE			; MUST ALSO SET GCMAX TO MATCH
SSGX1:
   2DIF [CAMGE R,(B)]SFSSIZ,QLIST	;GCMAX MAY NOT BE LESS
	 JRST FALSE			; THAN ACTUAL SIZE
   XCTPRO
   2DIF [HRRZM R,(B)]XFFS,QLIST
   NOPRO
	JRST TRUE

IFN ITS+D20,[
SSPM1:	HRRZ T,P-QREGPDL(B)	;GET CURRENT PDL POINTER
	ADD R,C2-QREGPDL(B)	;UP USER'S VALUE BY PDL ORIGIN
	ANDI R,777760
	TRNN R,PAGKSM
	 SUBI R,20
	CAILE R,(T)		;NEW PDLMAX MUST BE ABOVE
	 CAML R,OC2-QREGPDL(B)	; CURRENT PDL POINTER, AND
	  JRST FALSE		; BELOW ABS OVERFLOW POINT
	HRRZM R,XPDL-QREGPDL(B)
	HRRZM R,ZPDL-QREGPDL(B)	;SO UPDATE CRAP
	HRROS P-QREGPDL(B)	;SET LH OF PDL POINTER TO -1
	JRST TRUE		; SO PDLOV WILL HACK IT PROPERLY
]		;END OF IFN ITS+D20


;;; PART OF PUTPROP - HACK FOR *PURE MODE TO PURIFY PROPERTY LISTS

CSETP1:	PUSH P,B
	MOVEI A,(C)
	MOVE B,VPUTPROP
	PUSHJ P,MEMQ		;CALLS THE CHECKING VERSION OF MEMQ
	POP P,B
	JUMPE A,CSETP7
	PUSH P,C		;NEED TO PURCOPY C(C) ALSO
	MOVEI A,(B)
	PUSHJ P,PURCOPY
	EXCH A,(P)		;REMEMBER THE VALUE, GET THE PROPERTY
	SKOTT A,SY		;IS THE PROPERTY A SYMBOL?
	 JRST CSETNS		;NO
	HLRZ T,(A)		;POINTER TO THE SY2 BLOCK
	MOVE T,SYMVC(T)		;GET THE FLAG BITS
	TLNN T,SY.PUR		;IS IT ALREADY PURE?
	 PUSHJ P,PURCOPY	;NO, PURCOPY IT
CSETNS:	POP P,A			;RESTORE THE VALUE TO BE PUT ON THE PROPERTY
	MOVE T,(P)
CSETP2:	HRRZ B,(T)
	JUMPE B,CSETP3
	MOVEI TT,(B)
	LSH TT,-SEGLOG
	MOVE TT,ST(TT)
	TLNE TT,PUR
	 JRST CSETP3
	HRRZ T,(B)
	JRST CSETP2

CSETP3:	PUSHJ P,PCONS
	MOVEI B,(A)
	MOVEI A,(C)
	PUSHJ P,PCONS
	HRRM A,(T)
	SUB P,R70+1
	JRST $CADR

CSETP7:	HRRZ A,(P)
	JRST CSET2A
;SRANDOM SRAND3 SSRAN0 SSRANDOM SSRAN3 SSRAN6 SSRAN8 SSCALLI SSSENDI SSSENA SSSEN1 SSSEN0 SSUSRHNK

SUBTTL	STATUS RANDOM

SRANDOM:
	SETZ B,
	MOVEI F,LRBLOCK-1+2	;+2 FOR RNOWS AND RBACK
SRAND3:	MOVE TT,RNOWS(F)	;CONS UP A LIST SUMMARIZING
	PUSHJ P,CONSFX		; THE STATE OF THE RANDOM
	SOJGE F,SRAND3		; NUMBER GENERATOR
	POPJ P,

SSRAN0:	WTA [BAD ARGUMENT - STATUS RANDOM!]
SSRANDOM:
	SKOTT A,LS
	 JRST SSRAN8
	MOVEI B,(A)
	JSP TT,SSRAN6
	MOVEM R,RNOWS
	JSP TT,SSRAN6
	MOVEM R,RBACK
	MOVNI F,LRBLOCK
SSRAN3:	HLRZ C,(B)
	JSP T,FXNV3
	MOVEM R,RBLOCK+LRBLOCK(F)
	HRRZ B,(B)
	AOJL F,SSRAN3
	JRST TRUE

SSRAN6:	HLRZ C,(B)
	JSP T,FXNV3
	JUMPLE R,SSRAN0
	CAILE R,LRBLOCK+1
	 JRST SSRAN0
	HRRZ B,(B)
	JRST (TT)

SSRAN8:	JSP T,FXNV1
	SKIPN TT		;0 IS BAD VALUE
	 MOVEI TT,1
	JSP F,IRAND0
	JRST TRUE

;;; Hooks for the EXTEND hackery

SSCALLI:
	MOVE C,A
	MOVEI B,QCALLI		   ;Look on the CALLI property for
	PUSHJ P,$GET		   ;the "SUBR" to invoke
	MOVE T,[ICALLI,,UCALLI]
	MOVSI TT,(JRST)		   ;We JRST to it, and it hacks the stack
	MOVEM C,(T)		   ;We write it, since don't have frob in A
	JRST SSSEN1

SSSENDI:			   ;Set the SEND interpreter
	MOVE T,[SENDI,,USENDI]
	MOVSI TT,(JCALL 16,)
SSSENA:	MOVEM A,(T)		   ;Remember what it is for (STATUS SENDI), GC
SSSEN1:	MOVSS T			   ;Now hack the instruction cell
	JUMPE A,SSSEN0		   ;If NIL, zero SENDI so won't be XCT'd
	HRR TT,A
	MOVEM TT,(T)		   ;Save the call instruction for it
	JRST TRUE		   ;Return truth
SSSEN0:	SETZM (T)
	JRST TRUE

SSUSRHNK:			   ;Set the USER-HUNK check
	MOVE T,[USRHNK,,UUSRHNK]
	MOVSI TT,(CALL 1,)
	JRST SSSENA

;SSWHO1 SSWHO2 SSWHO3 SWHO1 SWHO1A SWHO2 SWHO3 SIXNUM SMAR SSMAR SSMAR5

IFN USELESS,[
IFN ITS,[

SUBTTL	STATUS WHO-LINE [ETC.]

SSWHO1:	SETZ F,
	MOVE D,[441000,,F]
	JSP T,FXNV1
	IDPB TT,D
	MOVEI A,(B)
	JSP T,CHNV1X
	IDPB TT,D
	JSP T,FXNV3
	IDPB R,D
	MOVEI A,(AR1)
	JSP T,CHNV1X
	IDPB TT,D
	.SUSET [.SWHO1,,F]
	JRST TRUE

SSWHO2:	PUSHJ P,SIXNUM
	.SUSET [.SWHO2,,TT]
	JRST TRUE

SSWHO3:	PUSHJ P,SIXNUM
	.SUSET [.SWHO3,,TT]
	JRST TRUE

SWHO1:	.SUSET [.RWHO1,,F]
	MOVEI R,4
	SETZ B,
	MOVE D,[441000,,F]
SWHO1A:	ILDB TT,D
	JSP T,FXCONS
	PUSHJ P,CONS
	MOVEI B,(A)
	SOJG R,SWHO1A
	JRST NREVERSE

SWHO2:	.SUSET [.RWHO2,,TT]
	JRST FIX1

SWHO3:	.SUSET [.RWHO3,,TT]
	JRST FIX1

SIXNUM:	SKOTT A,FX
	 JRST SIXMAK
	POP P,T
	JRST FXNV1


SMAR:	MOVE T,IMASK
	TRNN T,%PIMAR		;NIL IF LISP NOT USING MAR
	 JRST FALSE		; (BUT SUPERIOR MIGHT BE)
	.SUSET [.RMARA,,D]
	HLRZ TT,D
	MOVEI A,(D)
	PUSHJ P,ACONS
	MOVEI B,(A)
	JRST CONSFX		;RETURN LIST OF (MODE, LOCATION)

SSMAR:	MOVEI F,%PIMAR
	JSP T,FXNV1
	TRZ TT,4
	JUMPE TT,SSMAR5
	IORM F,IMASK
	.SUSET [.SIMASK,,F]
	HRLI B,(TT)
	.SUSET [.SMARA,,B]
	JRST TRUE

SSMAR5:	.SUSET [.SMARA,,R70]
	ANDCAM F,IMASK
	.SUSET [.SAMASK,,F]
	JRST TRUE

;SSGCWHO SITS SITS9

;;;	IFN USELESS
;;;	IFN ITS

SSGCWHO:	JSP T,FXNV1
	ANDI TT,3
	MOVEM TT,GCWHO
	JRST TRUE


SITS:	.CALL SITS9
	 .VALUE
	PUSH FXP,T
	JSP T,IFLOAT
	FDVRI TT,(30.0)
	JSP T,FLCONS
	SETZ B,
	PUSHJ P,CONSIT
	POP FXP,TT
	PUSHJ P,CONSFX
	MOVE TT,D
	PUSHJ P,CONSFX
	MOVE TT,R
	PUSHJ P,CONSFX
	MOVE TT,F
	JSP T,IFLOAT
	SKIPL TT
	 FDVRI TT,(30.0)
	JSP T,FLCONS
	JRST CONS

SITS9:	SETZ
	SIXBIT \SSTATU\
	  2000,,F		;TIME UNTIL SYSTEM GOES DOWN
	  2000,,R		;SYSTEM BEING DEBUGGED
	  2000,,D		;NUMBER OF LOSERS
	  2000,,T		;NUMBER OF MEMORY ERRORS
	402000,,TT		;TIME SYSTEM HAS BEEN UP

]		;END OF IFN ITS
]		;END OF IFN USELESS
;STBA LSSTBA

SUBTTL	ASCII TABLE OF STATUS FUNCTIONS

;;; ***** ASCII TABLE OF STATUS FUNCTIONS ***** PART 1 *****

STBA:	ASCII \MACRO\		;MACRO
	ASCII \DIVOV\		;DIVOV (DIVIDE OVERFLOW)
	ASCII \VECTO\ 		;VECTOR 
	ASCII \TTY\		;TTY 
	ASCII \TOPLE\		;TOPLEVEL
	ASCII \BREAK\		;BREAKLEVEL
	ASCII \UREAD\		;UREAD
	ASCII \UWRIT\		;UWRITE
	ASCII \+\		;+ (SUPRA-DECIMAL DIGITS OPTION)
	ASCII \GCMIN\		;GCMIN
	ASCII \SYNTA\		;SYNTAX
	ASCII \CHTRA\		;CHTRAN (CHARACTER TRANSLATION)
	ASCII \TTYIN\		;TTYINT
	ASCII \GCTIM\		;GCTIME
	ASCII \LOSEF\		;LOSEF (LAP OBJECT STORAGE EFFICIENCY FACTOR)
	ASCII \TERPR\		;TERPRI (SUPPRESSION OF AUTO-TERPRI)
	ASCII \←\		;← (CAN PRIN1 USE ← FIXNUM SYNTAX)
	ASCII \TTYRE\		;TTYREAD
	ASCII \FEATU\		;FEATURE
	ASCII \NOFEA\		;NOFEATURE
IFN USELESS,	ASCII \ABBRE\	;ABBREVIATE
	ASCII \UUOLI\		;UUOLINKS
	ASCII \GCMAX\		;GCMAX
IFN PAGING,	ASCII \PDLMA\	;PDLMAX
	ASCII \GCSIZ\		;GCSIZE
	ASCII \LINMO\		;LINMODE
	ASCII \CRFIL\		;CRFILE (CURRENT FILE)
	ASCII \CRUNI\		;CRUNIT (CURRENT UNIT)
	ASCII \EVALH\		;EVALHOOK (FOR MULTICS COMPATIBILITY)
	ASCII \TTYSC\		;TTYSCAN
	ASCII \TTYCO\		;TTYCONS
	ASCII \RANDO\		;RANDOM
IFN USELESS,[
IFN ITS,[
	ASCII \WHO1\		;WHO1	;ITS WHO-LINE
	ASCII \WHO2\		;WHO2	; DISPLAY
	ASCII \WHO3\		;WHO3	; VARIABLES
	ASCII \MAR\		;MAR	;MAR BREAK FEATURE
	ASCII \GCWHO\
]		;END OF IFN ITS
]		;END OF IFN USELESS
	ASCII \PUNT\		;PUNT	;TRUE MEANS NO FUNCTIONAL VARIABLES
	ASCII \FLUSH\		;FLUSH  ;NON-NIL MEANS FLUSH PAGES UPON
					; A SUSPEND
IFN USELESS*ITS, ASCII \CLI\	;CLI 	;DISABLE/ENABLE CLI INTERRUPTS

	ASCII \NOINT\		;NOINT	;Enable/disble interrupts
	ASCII \SENDI\		;SENDI	;SEND interpreter
	ASCII \CALLI\		;CALLI	;CALL interpreter
	ASCII \USRHU\		;USRHU	;USRHUNK routine

LSSTBA==.-STBA		;END OF ENTRIES WHICH CAN BE SSTATUS'D
;LSTBA

;;; ***** ASCII TABLE OF STATUS FUNCTIONS ***** PART 2 *****

	ASCII \FASLN\		;FASLNAMELIST
	ASCII \PURSI\		;PURSIZE
	ASCII \PDLSI\		;PDLSIZE
	ASCII \DAYTI\		;DAYTIME
	ASCII \DATE\		;DATE
IFN USELESS,	ASCII \DOW\	;DOW (DAY OF WEEK)
	ASCII \TTYSI\		;TTYSIZE (HEIGHT . WIDTH)
	ASCII \UNAME\		;UNAME (USER NAME)
	ASCII \USERI\		;USERID
	ASCII \XUNAM\		;XUNAME
	ASCII \JNAME\		;JNAME (JOB NAME)
	ASCII \SUBSY\		;SUBSYSTEM
	ASCII \JNUMB\		;JNUMBER
	ASCII \HOMED\		;HOMEDIR (HOME DIRECTORY NAME)
	ASCII \HSNAM\		;HSNAME (SMART HOME DIRECTORY NAME)
	ASCII \LISPV\		;LISPVERSION
	ASCII \JCL\		;JCL (JOB COMMAND LINE)
IT$	ASCII \HACTR\		;HACTRN
	ASCII \UDIR\		;UDIR (USER DIRECTORY NAME)
	ASCII \FXPDL\		;FXPDL (FIXNUM PDL)
	ASCII \FLPDL\		;FLPDL (FLONUM PDL)
	ASCII \PDL\		;PDL (REG PDL)
	ASCII \SPDL\		;SPDL (SPECIAL PDL)
	ASCII \BPSL\		;BPSL (BINARY PROGRAM SPACE LOW)
	ASCII \BPSH\		;BPSH (BINARY PROGRAM SPACE HIGH)
	ASCII \SEGLO\		;SEGLOG (LOG2 OF SEGMENT SIZE)
	ASCII \SYSTE\		;SYSTEM (SYSTEM ATOM)
	ASCII \TABSI\		;TABSIZE
	ASCII \FILES\		;FILESYSTEM-TYPE
	ASCII \OPSYS\		;OPSYSTEM-TYPE
	ASCII \SITE\		;SITE NAME
	ASCII \SPCNA\		;SPCNAMES (NAMES OF DATA SPACES)
	ASCII \PURSP\		;PURSPCNAMES
	ASCII \PDLNA\		;PDLNAMES
	ASCII \SPCSI\		;SPCSIZE
	ASCII \PDLRO\		;PDLROOM
	ASCII \MEMFR\		;MEMFREE
	ASCII \NEWLI\		;NEWLINE
	ASCII \FILEM\		;FILEMODE
	ASCII \TTYTY\		;TTYTYPE
IT$	ASCII \OSPEE\		;OSPEED
	ASCII \FASLO\		;FASLOAD (RETURNS CURRENT LDBSAR)
IFN USELESS,[
IFN ITS,[
	ASCII \ITS\		;ITS
]		;END OF IFN ITS
]		;END OF IFN USELESS
	ASCII \STATU\		;STATUS
	ASCII \SSTAT\		;SSTATUS
	ASCII \ARRAY\		;ARRAY
LSTBA==.-STBA
;

SUBTTL	STATUS DISPATCH TABLES

;;; FORMAT  <4.9-4.7> , <4.6-3.8> , <2.9-1.1>
.FORMAT 37,002231104103

RADIX 4

;;; MAGIC TABLE OF STATUS OPERATIONS
;;;	4.9-4.7	OPERATION TYPE
;;;		0	SUBR-TYPE FUNCTION
;;;		1	LSUBR-TYPE FUNCTION
;;;		2	SUBR-TYPE WITH CHAR FIRST ARG
;;;		3	LSUBR-TYPE WITH CHAR FIRST ARG
;;;		4	GET LISP VALUE
;;;		5	SET LISP VALUE
;;;		6	SET TO T-OR-NIL
;;;		7	GET FIXNUM VALUE
;;;	4.6-4.5	ARGUMENT 1 TYPE
;;;		0	NO MORE ARGS
;;;		1	QUOTED ARGUMENT
;;;		2	TAKE REST AS QUOTED LIST
;;;		3	EVALUATED ARGUMENT
;;;	4.4-4.3	ARGUMENT 2 TYPE
;;;	4.2-4.1	ARGUMENT 3 TYPE
;;;	3.9-3.8	ARGUMENT 4 TYPE
;;;	3.7-3.1	ARGS INFO
;STBSS LSST

;;;	.FORMAT 37,002231104103

;;;	RADIX 4


;;; ***** SSTATUS FUNCTION TABLE ***** MUST MATCH ASCII TABLE *****

STBSS:	3,1310,SSMACRO		(FA23)	;MACRO
	6,3000,RWG		(FA1)	;DIVOV
	5,3000,VCTRS		(FA1)	;VECTOR
IT$	1,3333,SSTTY		(FA1234&1333)	;TTY
20$	1,3333,SSTTY		(FA1N&1333)	;TTY
10$ SA%	1,3333,SSTTY	(FA12)		;TTY
10$ SA$	1,3333,SSTTY	(FA1N&1333)	;TTY
	5,3000,TLF		(FA1)	;TOPLEVEL
	5,3000,BLF		(FA1)	;BREAKLEVEL
	0,2000,UREAD		(FA0234);UREAD
	0,2000,UWRITE		(FA012)	;UWRITE
	0,3000,SSPLSS		(FA1)	;+
	0,3300,SSGCMIN		(FA2)	;GCMIN
	2,1300,SSSYNTA		(FA2)	;SYNTAX
	2,1300,SSCHTRA		(FA2)	;CHTRAN
	1,3330,SSTTYINT		(FA23)	;TTYINT
	0,3000,SSGCTIM		(FA1)	;GCTIME
	0,3000,SSLOSEF		(FA1)	;LOSEF
	1,3300,SSTERPRI		(FA12)	;TERPRI
	0,3000,SSLAP		(FA1)	;←
	0,3000,SSTTYREAD	(FA1)	;TTYREAD
	0,1000,SSFEATURE	(FA1)	;FEATURE
	0,1000,SSNOFEATURE	(FA1)	;NOFEATURE
IFN USELESS,	0,3000,SSABBREVIATE	(FA1)	;ABBREVIATE
	0,0000,SSUUOLINKS	(FA0)	;UUOLINKS
	0,3300,SSGCMAX		(FA2)	;GCMAX
IFN PAGING,	0,3300,SSPDLMAX	(FA2)	;PDLMAX
	0,3300,SSGCSIZE		(FA2)	;GCSIZE
	1,3300,SSLINMODE	(FA12)	;LINMODE
20%	0,2000,SSCRFIL		(FA2)	;CRFILE
20$	0,2000,SSCRFIL		(FA23)	;CRFILE
	0,2000,CRUNIT		(FA012)	;CRUNIT
	0,3000,FALSE		(FA1)	;EVALHOOK
	1,3300,SSTTYSCAN	(FA12)	;TTYSCAN
	0,3300,SSTTYCONS	(FA2)	;TTYCONS
	0,3000,SSRANDOM		(FA1)	;RANDOM
IFN USELESS,[
IFN ITS,[
	0,3333,SSWHO1		(FA4)	;WHO1
	0,3000,SSWHO2		(FA1)	;WHO2
	0,3000,SSWHO3		(FA1)	;WHO3
	0,3300,SSMAR		(FA2)	;MAR
	0,3000,SSGCWHO		(FA1)	;GCWHO
]		;END OF IFN ITS
]		;END OF IFN USELESS
	6,3000,EVPUNT		(FA1)	;PUNT
	6,3000,SUSFLS		(FA1)	;FLUSH
IFN USELESS*ITS, 0,3000,SSCLI	(FA1)	;CLI
	0,3000,NOINTERRUPT	(FA1)	;NOINTERRUPT
	0,3000,SSSENDI		(FA1)	;SENDINTERPRETER
	0,3000,SSCALLI		(FA1)	;CALLINTERPRETER
	0,3000,SSUSRHNK		(FA1)	;USRHNK
LSST==.-STBSS

IFN LSST-LSSTBA, WARN [WRONG LENGTH SSTATUS TABLE]
;STBS

;;;	.FORMAT 37,002231104103

;;;	RADIX 4

;;; ***** STATUS FUNCTION TABLE ***** PART 1 (MATCHES STBSS) *****

STBS:	2,1000,SMACRO		(FA1)	;MACRO
	4,0000,RWG		(FA0)	;DIVOV
	4,0000,VCTRS		(FA0)	;VECTOR
	1,3000,STTY		(FA01)	;TTY
	4,0000,TLF		(FA0)	;TOPLEVEL
	4,0000,BLF		(FA0)	;BREAKLEVEL
	0,0000,SUREAD		(FA0)	;UREAD
	0,0000,SUWRITE		(FA0)	;UWRITE
	0,0000,SPLSS		(FA0)	;+
	0,3000,SGCMIN		(FA1)	;GCMIN
	2,1000,SSYNTAX		(FA1)	;SYNTAX
	2,1000,SCHTRAN		(FA1)	;CHTRAN
	1,3300,STTYINT		(FA12)	;TTYINT
	0,0000,SGCTIM		(FA0)	;GCTIM
	0,0000,SLOSEF		(FA0)	;LOSEF
	1,3000,STERPRI		(FA01)	;TERPRI
	0,0000,SLAP		(FA0)	;←
	0,0000,STTYREAD		(FA0)	;TTYREAD
	0,2000,SFEATURES	(FA01)	;FEATURES
	0,2000,SNOFEATURE	(FA1)	;NOFEATURE
IFN USELESS,	0,0000,SABBREVIATE	(FA0)	;ABBREVIATE
	0,0000,SUUOLINKS	(FA0)	;UUOLINKS
	0,3000,SGCMAX		(FA1)	;GCMAX
IFN PAGING,	0,3000,SPDLMAX	(FA1)	;PDLMAX
	0,3000,SGCSIZE		(FA1)	;GCSIZE
	1,3000,SLINMODE		(FA01)	;LINMODE
	0,0000,SCRFIL		(FA0)	;CRFILE
	0,0000,SCRUNIT		(FA0)	;CRUNIT
	0,0000,FALSE		(FA0)	;EVALHOOK
	1,3000,STTYSCAN		(FA01)	;TTYSCAN
	0,3000,STTYCONS		(FA1)	;TTYCONS
	0,0000,SRANDOM		(FA0)	;RANDOM
IFN USELESS,[
IFN ITS,[
	0,0000,SWHO1		(FA0)	;WHO1
	0,0000,SWHO2		(FA0)	;WHO2
	0,0000,SWHO3		(FA0)	;WHO3
	0,0000,SMAR		(FA0)	;MAR
	7,0000,GCWHO		(FA0)	;GCWHO
]		;END OF IFN ITS
]		;END OF IFN USELESS
	4,0000,EVPUNT		(FA0)	;PUNT
	4,0000,SUSFLS		(FA0)	;FLUSH
IFN USELESS*ITS, 0,3000,SCLI	(FA0)	;CLI
	0,0000,SNOINT		(FA0)	;NOINTERRUPT
	4,0000,USENDI		(FA0)	;SENDINTERPRETER
	4,0000,UCALLI		(FA0)	;CALLINTERPRETER
	4,0000,UUSRHNK		(FA0)	;USRHNK

IFN .-STBS-LSSTBA, WARN [WRONG LENGTH STATUS TABLE PART 1]
;

;;;	.FORMAT 37,002231104103

;;;	RADIX 4

;;; ***** STATUS FUNCTION TABLE ***** PART 2 (NON-SSTATUS ITEMS) *****

	4,0000,LDFNAM		(FA0)	;FASLNamelist
	0,3000,SPURSIZE		(FA1)	;PURSIZE
	0,3000,SPDLSIZE		(FA1)	;PDLSIZE
	0,0000,STIME		(FA0)	;DAYTIME
	0,0000,SDATE		(FA0)	;DATE
IFN USELESS,	0,0000,SDOW	(FA0)	;DOW (DAY OF WEEK)
	1,3000,STTYSIZE		(FA01)	;TTYSIZE
	0,0000,SUNAME		(FA0)	;UNAME
	0,0000,SUSERID		(FA0)	;USERID
	0,0000,SUSERID		(FA0)	;XUNAME
	0,0000,SJNAME		(FA0)	;JNAME
	0,0000,SSUBSYSTEM	(FA0)	;SUBSYSTEM
	0,0000,SJNUMBER		(FA0)	;JNUMBER
IT$	0,0000,SHOMED		(FA0)	;HOMEDIR
IT% 20%	4,0000,SUDIR		(FA0)	;HOMEDIR
20$ 	0,0000,SRCDIR 		(FA0) 	;
	1,3300,SHSNAME		(FA012)	;HSNAME
	0,0000,SLVRNO		(FA0)	;LISPVERSION
IT$	0,0000,SJCL		(FA0)	;JCL
IT%	4,0000,VNIL		(FA0)	;DECSYSTEM-10 HAS NO JCL
20$	WARN [TOPS-20 JCL?]
IT$	0,0000,SDDTP		(FA0)	;HACTRN
IFE D20\ITS	4,0000,SUDIR		(FA0)	;UDIR
IFN D20\ITS 	0,0000,SRCDIR 		(FA0) 	;
	7,0000,FXC2		(FA0)	;FXPDL
	7,0000,FLC2		(FA0)	;FLPDL
	7,0000,C2		(FA0)	;PDL
	7,0000,SC2		(FA0)	;SPDL
	7,0000,BPSL		(FA0)	;BPSL (ORIGINAL BPS LOW)
	7,0000,BPSH		(FA0)	;BPS HIGH
	7,0000,[SEGLOG]		(FA0)	;SEGLOG
	0,3000,SSYSTEM		(FA1)	;SYSTEM
	7,0000,IN10		(FA0)	;TABSIZE
	0,0000,SFILES		(FA0)	;FILESYSTEM-TYPE
	0,0000,SOPSYS		(FA0)	;OPSYSTEM-TYPE
	0,0000,SSITE		(FA0)	;SITE
	4,0000,[SPCNAMES]	(FA0)	;SPCNAMES
	4,0000,[PURSPCNAMES]	(FA0)	;PURSPCNAMES
	4,0000,[PDLNAMES]	(FA0)	;PDLNAMES
	0,3000,SSPCSIZE		(FA1)	;SPCSIZE
	0,3000,SPDLROOM		(FA1)	;PDLROOM
	0,0000,SMEMFREE		(FA0)	;MEMFREE
	7,0000,IN0+↑M		(FA0)	;NEWLINE
	0,3000,SFILEMODE	(FA1)	;FILEMODE
	1,3000,STTYTYPE		(FA01)	;TTYTYPE
IT$	1,3000,SOSPEED		(FA01)	;OSPEED
	4,0000,LDBSAR		(FA0)	;FASLOAD
IFN USELESS,[
IFN ITS,[
	0,0000,SITS		(FA0)	;ITS
]		;END OF IFN ITS
]		;END OF IFN USELESS
	1,1000,SSSS		(FA01)	;STATUS
	1,1000,SSSSS		(FA01)	;SSTATUS
	0,0000,SARRAY		(FA0)	;ARRAY
IFN .-STBS-LSTBA, WARN [WRONG LENGTH STATUS TABLE PART 2]

RADIX 8

.FORMAT 37,0	;MAKE FORMAT 37 ILLEGAL AGAIN
;;@ END OF STATUS 223
;CURSORPOS CRSRPS CRSR10 CRSFA5 CRSFAY CRSFA4 CRSFA2 CRSFAZ CRSRP8 CRSFA1 CRSRP0 CRSR20 CRSRP5 CRSRP7 CRSR71 CRSRP3 CRSRP6 CRSRP4 CRSR40 CRSRP9 ZZZ ZZZ CRSR11 CRSR12 CRSR13 CRSR14 CRSRP1 CRSRMP CRSRM1 CRSRN

SUBTTL	CURSORPOS FUNCTION

IFN USELESS,[

CURSORPOS:
	MOVEI D,QCURSORPOS	;LSUBR (0 . 3)
	CAMGE T,XC-3		;MORE THAN THREE ARGS LOSES
	 JRST WNALOSE
	JUMPE T,CRSRP0		;IF NO ARGS, IS FOR DEFAULT TTY
CRSRPS:	SKIPN AR1,(P)		;ELSE LAST ARG MAY BE TTY FILE ARRAY
	 JRST CRSRN
	MOVEI TT,(AR1)
	LSH TT,-SEGLOG
	SKIPGE ST(TT)
	 JRST CRSRMP
	CAIN AR1,TRUTH		;LAST ARG = T
	 HRRZ AR1,V%TYO		; MEANS THE DEFAULT TTY
CRSR10:	CAMN T,XC-3		;FOR THREE ARGS MUST HAVE A FILE ARRAY
	 JRST CRSRP8
	JSP TT,XFOSP		;FOR ONE OR TWO ARGS MAY OR MAY
	 JRST CRSRP0		; NOT HAVE A FILE ARRAY
IFN SFA,[
	 JRST CRSFA1		;FILE
CRSFA5:	SUB P,R70+1		;SFA
CRSFAY:	SETZ C,
	AOJE T,CRSFA2		;ONE LESS ARG; ONLY 1 ARG, ARG TO SFA IS NIL
	POP P,A			;LISTIFY THE ARGS
	PUSHJ P,NCONS		;GENERATE THE INITIAL LIST
	AOSN T			;TWO ARGS?
	 JRST CRSFA4
	POP P,B
	JSP T,%XCONS		;NOW THE LIST IS IN A
CRSFA4:	MOVEI C,(A)
CRSFA2:	MOVEI B,QCURSORPOS	;CURSORPOS OPERATION
	MOVEI A,(AR1)		;THE SFA ITSELF
	JRST ISTCSH

CRSFAZ:	HRRO AR1,V%TYO		;GET FILE AS SPECIFIED BY 'T'
	JSP TT,XFOSP		;CHECK FOR IT BEING A SFA
	 JRST (F)		;NOPE
	 JRST (F)
	SOJA T,CRSFAY		;A SFA, HANDLE SPECIALLY
]		;END IFN SFA
CRSRP8:
IFN SFA,[
	JSP TT,XFOSP		;CHECK IF FILE OR SFA
	 JFCL
	 SKIPA			;NOT SFA
	 JRST CRSFA5		;SFA
CRSFA1:	]	;END IFN SFA
	SUB P,R70+1		;IF WE HAVE ONE, IT MUST
	PUSH FXP,T		; BE A BONA FIDE TTY OUTPUT FILE
	PUSHJ P,TOFLOK
	UNLOCKI
	POP FXP,T
	AOSA T
CRSRP0:
SFA%	 HRRO AR1,V%TYO
SFA$	 JSP F,CRSFAZ
	JSP R,PDLA2(T)
	MOVEI TT,F.MODE
	MOVE D,@TTSAR(AR1)
	SKIPGE AR1		;IF FILE NOT EXPLICITLY GIVEN
	 SKIPN TTYOFF		; THEN ↑W NON-NIL => RETURN NIL
	  SKIPA
	   JRST FALSE
	JUMPE T,CRSRP1		;0 ARGS - GET POSITION
	AOJE T,CRSRP3		;1 ARG - SPECIAL HACKS (↑P CODES)
	SKOTT A,FX
	 JRST CRSR11

;2 ARGS
	MOVEI D,"V		;SET VERTICAL POSITION
	PUSHJ P,CRSRP5
CRSR20:	MOVEI D,"H		;SET HORIZONTAL POSITION
	MOVEI A,(B)
CRSRP5:	JUMPE A,TRUE		;NIL MEANS NO CHANGE
	JSP T,FXNV1
	SKIPGE TT
	 SETZ TT,		;NEGATIVE ARG NOT ALLOWED
	CAILE TT,167		;NOR ARG ABOVE 167
	 MOVEI TT,167
IFN ITS\D20,	HRLI D,10(TT)		;ADD MAGIC 10 TO AMOUNT FOR ↑P
.ELSE 	JRST FALSE


CRSRP7:	PUSHJ FLP,CNPCHK		;CHECK TO SEE IF CAPABILITY EXISTS?
	 JRST CRSR71
IFN ITS\D20,	MOVEI A,TRUTH		;RETURN TRUTH IF WE GOT THIS FAR
.ELSE	MOVEI A,NIL			;RIGHT NOW, D10 SYSTEMS CANT "DO IT"
	JRST CNPCUR			; THEN DO ACTION, AND EXIT WITH CZECHI

CRSR71: MOVEI A,NIL		;NO CAPABILITY, SO RETURN NIL
	JRST CZECHI

;1 ARG CASE
CRSRP3:	JSP T,SPATOM
	 JRST CRSRP4		;IF NO A SYMBOL, THEN BETTER BE FIXNUM
	PUSHJ P,CRSR40		;GET NUMERIC VALUE OF FIRST CHAR OF SYMBOL
CRSRP6:	MOVEI D,(TT)
	TRC TT,100
	TDNE TT,[-40]
	 JRST CRSRP2
	MOVE TT,GCBT(TT)	;Get a "1" bit in the position specified by TT
	TDNN TT,CRSRP9
	 JRST CRSRP2
	JRST CRSRP7

CRSRP4:	JSP T,FXNV1
	JRST CRSRP6

CRSR40:	JSP T,CHNV1
	CAIL TT,140
	 SUBI TT,40		;CONVERT TO UPPER CASE
	POPJ P,

CRSRP9:
ZZZ==0
IRPC X,,[ABCDEFKLMNPQRSTUXZ[\]↑←]
ZZZ==ZZZ\<SETZ←-<"X&37>>
TERMIN
	ZZZ		;BITS SPECIFYING VALID ↑P CODES
EXPUNGE ZZZ		;NOTE: H, I, AND V NOT VALID HERE!

;2 ARG CASE WITH NON-FIXNUM AS FIRST ARG
CRSR11:	JUMPE A,CRSR20
	JSP T,SPATOM
	 JRST CRSR12
	PUSHJ P,CRSR40
	JSP T,FXNV2
	SKIPGE D
	SETZ D,
	CAIE TT,"H
	 CAIN TT,"V
	  JRST CRSR13
	CAIN TT,"I
	 JRST CRSR14
CRSR12:	WTA [BAD CURSOR CODE - CURSORPOS!]
	JRST CRSR11


CRSR13:	CAILE D,167
	MOVEI D,167
	ADDI D,10		;H AND V RANDOMLY WANT 10 ADDED
CRSR14:	MOVSI D,400000(D)	.SEE CNPCD1	;KEEP LH FROM BEING ZERO
	HRRI D,(TT)
	JRST CRSRP7

;0 ARGS CASE
CRSRP1: PUSHJ P,FORCE1
	MOVEI TT,F.MODE
	MOVE F,@TTSAR(AR1)
	MOVEI TT,F.CHAN
IFE ITS\D20, 	JRST FALSE
IFN ITS\D20,[
	PUSHJ FLP,RCPOS
	TLNE F,FBT<EC>		;GET ECHO MODE POSITION
	 MOVE D,R		; IF FILE IS FOR ECHO AREA
	MOVEI TT,(D)		;CONS THEM UP FOR LOSER
	JSP T,FIX1A
	MOVEI B,(A)
	HLRZ TT,D
	JSP T,FIX1A
	JRST CONS
]	;END OF IFN ITS\D20

CRSRMP:	PUSH FXP,T
CRSRM1:	HLRZ A,@(P)
	MOVE T,(FXP)
	MOVEI TT,(T)
	ADDI TT,(P)
	PUSH P,1(TT)
	TRNE T,1
	 PUSH P,2(TT)
	PUSH P,A
	PUSHJ P,CRSRPS
	HRRZ A,@(P)
	MOVEM A,(P)
	JUMPN A,CRSRM1
	POP FXP,T
CRSRN:	MOVEI A,TRUTH
	JRST PROGN1

]		;END OF IFN USELESS

;%%FUNCTION .FUNC4 .FUNC1 .FUNC2 .FUNC3 AEVAL

SUBTTL	RANDOM ROUTINES TO HANDLE A PSEUDO ALIST

%%FUNCTION:	MOVEI D,Q%%FUNCTION
	JUMPE A,WNAFOSE
	HRRZ C,(A)
	JUMPN C,.FUNC1
	HLRZ B,(A)		;HALF-ASSED FUNARG BINDING
	HRROI TT,(SP)		;ONE LH AS GOOD AS ANOTHER
	JSP T,FIX1A
.FUNC4:	PUSHJ P,XCONS
	MOVEI B,QFUNARG
	JRST XCONS

.FUNC1:	HLRZ AR2A,(A)
	HLRZ AR1,(C)
	HRRZ C,(C)
	JUMPN C,WNAFOSE
.FUNC2:	JUMPE AR1,.FUNC3	;C STARTS OUT ()
	HLRZ A,(AR1)
	JSP T,SPATOM
	JSP T,PNGE1
	HLRZ B,(A)
	HRRZ B,@(B)
	PUSHJ P,CONS
	MOVEI B,(C)
	PUSHJ P,CONS
	MOVEI C,(A)
	HRRZ AR1,(AR1)
	JRST .FUNC2

.FUNC3:	MOVEI A,(C)
	MOVEI B,TRUTH
	PUSHJ P,NRECONC
	MOVEI B,(AR2A)
	JRST .FUNC4

AEVAL:	SKIPE A,(P)		;PURPOSELY CRIPPLING POWER OF ALIST
	JSP T,FXNV1		; ROUTINE: FOOEY! - GLS
	PUSHJ P,ALIST		;EVAL WITH AN ALIST
	SUB P,R70+1
	POP P,A
	SKIPE T			;ALIST RETURNING NON-ZERO IN T =>
	PUSH P,CAUNBIND		; TWO BIND BLOCKS WERE PUSHED
	PUSH P,CAUNBIND
	POPJ FXP,
;ALIST ALST1


;;; ALIST CREATES AN ENVIRONMENT AS SPECIFIED BY A GIVEN A-LIST.
;;; AN A-LIST MAY BE:
;;;	[1] NIL, MEANING THE TOP-LEVEL ENVIRONMENT.
;;;	[2] T, MEANING THE CURRENT ENVIRONMENT (SEE [4]).
;;;	[3] A FIXNUM REPRESENTING A SPECPDL POINTER, AS
;;;	    RETURNED BY THE EVALFRAME FUNCTION AS THE FOURTH
;;;	    ITEM. THIS INDICATES THE ENVIRONMENT AS OF
;;;	    THE SPECIFIED FRAME.
;;;	[4] ((<SYMBOL> . <VALUE>) . <A-LIST>)
;;;	    THAT IS, ONTO ONE OF THE OTHER THREE KINDS OF A-LIST
;;;	    ONE MAY CONS ADDITIONAL VARIABLE-VALUE PAIRS IN
;;;	    THE USUAL MANNER. THIS IS A "TRUE A-LIST".
;;; THIS ENVIRONMENT IS CREATED BY REBINDING ALL VARIABLES
;;; WHICH HAVE BEEN BOUND SINCE THEN BACK TO THEIR OLD VALUES,
;;; OR TO THE VALUES SPECIFIED BY THE TRUE A-LIST. IF A GIVEN
;;; VARIABLE WAS BOUND SEVERAL TIMES, ONLY ONE REBINDING IS DONE
;;; TO RECREATE THE OLD ENVIRONMENT. THIS IS DONE BY USING THE
;;; LEFT HALF OF A VALUE CELL TO INDICATE WHETHER OR NOT IT
;;; HAS ALREADY BEEN REBOUND. THIS HAS THE CONSEQUENCE THAT
;;; NOQUIT MUST BE TURNED ON DURING THIS OPERATION.
;;; EITHER ONE OR TWO SPECPDL BLOCKS ARE PUSHED, THE SECOND ONE
;;; BEING NECESSARY IF ANY TRUE A-LIST IS GIVEN. THERE ARE FOUR
;;; STEPS TO THE PROCESS:
;;;	[1] CHECK ARGUMENT THOROUGHLY FOR ERRORS. IF A TRUE
;;;	    A-LIST IS GIVEN, ALL SYMBOLS ON THE A-LIST ARE GIVEN
;;;	    VALUE CELLS IF THEY DON'T HAVE ANY ALREADY.
;;;	[2] TURN ON NOQUIT. IF A TRUE A-LIST IS GIVEN, BIND ALL
;;;	    THE SYMBOLS AS SPECIFIED, MARKING THE VALUE CELLS
;;;	    AS THEY ARE BOUND, AND NEVER BINDING A SYMBOL TWICE.
;;;	    WHEN DONE, PUSH THE TRUE A-LIST ONTO THE SPECPDL
;;;	    SO THAT AUNBIND CAN RESTORE THINGS CORRECTLY.
;;;	[3] SCAN THE SPECPDL FROM THE POINT SPECIFIED BY THE
;;;	    SPECPDL POINTER (FROM THE BOTTOM IF NIL), AND BIND
;;;	    ALL VALUES CELLS SEEN BACK TO THEIR OLD VALUES,
;;;	    MARKING THEM AS THEY ARE BOUND, NEVER BINDING ONE
;;;	    TWICE. WHEN DONE, PUSH A POINTER ON THE SPECPDL
;;;	    SO THAT AUNBIND CAN RESTORE THINGS CORRECTLY.
;;;	[4] SCAN BACK OVER ALL THE ITEMS PUSHED IN STEPS 2
;;;	    AND 3, RESTORING THE LEFT HALVES OF ALL THE VALUE
;;;	    CELLS. TURN OFF NOQUIT AND CHECK FOR INTERRUPTS.
;;; ON RETURN, A-LIST LEAVES T NON-ZERO IFF TWO BIND BLOCKS
;;; WERE PUSHED. IT IS UP TO THE CALLER TO MAKE SURE THAT THE
;;; BLOCK(S) ARE UNBOUND CORRECTLY WITH AUNBIND.
;;; NOTE THAT ERRPOP CAN RECOGNIZE THESE SPECIAL BIND BLOCKS AND
;;; CALL AUNBIND TO UNBIND THEM. THIS IS BECAUSE THE LAST WORD
;;; PUSHED HAS ZERO IN THE LEFT HALF.


ALIST:	SKIPN C,-1(P)		;MAKE COPY OF ENVIRONMENT GIVEN A-LIST
ALST1:	JUMPE C,ALST3		;STEP 1 - ERROR CHECKING
	CAIN C,TRUTH
	JRST ALST3		;T AND NIL ARE VALID A-LISTS
	SKOTT C,LS
	JRST ALST2		;NOPE - GO CHECK IT OUT
	HLRZ AR1,(C)		;YUP - CHECK ITS CAR
	HRRZ C,(C)
	SKOTT AR1,LS
	JRST ALST0
	HLRZ A,(AR1)
	SKOTT A,SY
	JRST ALST0
	CAIN A,TRUTH
	JRST ALST0
	HLRZ AR1,(A)
	HRRZ B,(AR1)
	MOVEI AR1,QUNBOUND
	CAIN B,SUNBOUND
	JSP T,.SET1
	JRST ALST1
;ALST2 ALST3 ALST3A ALST4 ALST4A ALST4C ALST5 ALST5A AL5AB


ALST2:	TLNN TT,FX		; - DARN WELL BETTER BE A FIXNUM
	JRST ALST0
	HRRZ TT,(C)		;MUST BE A VALID SPECPDL POINTER
	CAML TT,ZSC2
	CAILE TT,(SP)
	JRST ALST0
ALST3:	HLLOS NOQUIT		;TURN ON NOQUIT - MUSTN'T INTERRUPT
	HLLOS MUNGP		;ABOUT TO MUNG VALUE CELLS!
	MOVEM SP,SPSV		;STEP 2 - PUSH BLOCK FOR TRUE A-LIST
	SETZ T,			;T WILL BECOME NON-ZERO IF TRUE
	SKIPN C,-1(P)		; A-LIST IS PRESENT AT ALL
ALST3A:	JUMPE C,ALST4		;NIL FOUND
	CAIN C,TRUTH
	JRST ALST7		;T FOUND
	SKOTT C,LS
	JRST ALST4A		;FIXNUM FOUND
	HLRZ B,(C)
	HRRZ C,(C)
	HLRZ A,(B)		;A HAS ATOMIC SYMBOL
	HRRZ AR1,(B)		;AR1 HAS ASSOCIATED VALUE
	HLRZ B,(A)
	HRRZ A,(B)
	SKIPGE AR2A,(A)		;SKIP UNLESS VALUE CELL MARKED
	JRST ALST3A		;VALUE CELL ALREADY REBOUND
	HRLI AR2A,(A)		;PUSH <VALUE CELL,,CURRENT VALUE>
	PUSH SP,AR2A		; ONTO SPECPDL; THEN INSTALL
	HRROM AR1,(A)		; VALUE FROM ENVIRONMENT, MARKING CELL
	AOJA T,ALST3A		;T NON-ZERO => WE PUSHED SOMETHING

ALST4:	MOVEI C,SC2		;NIL => TOP LEVEL ENVIRONMENT
ALST4A:	HRRZ C,(C)		;FIXNUM => SPECIFIED ENVIRONMENT
	HRRZ B,SPSV
	JUMPE T,ALST4C		;IF ANYTHING PUSHED, START NEW BLOCK
	PUSH SP,-1(P)		;LEFT HALF BETTER BE ZERO!
	PUSH SP,SPSV		;FINISH OFF BLOCK FOR TRUE A-LIST
	MOVEM SP,SPSV		;START NEW BLOCK FOR FUNARG POINTER
ALST4C:	MOVEI TT,(C)		;STEP 3 - SCAN SPECPDL FROM ENVIRONMENT
ALST5:	CAIN TT,(B)		; BACK UP TO POINT WHEN ALIST CALLED
	JRST ALST6
	HRRZ AR1,(TT)		;GET VALUE FROM SPECPDL
	CAMGE AR1,ZSC2		;IGNORE SPECPDL POINTERS
	JRST ALST5A
	CAIGE AR1,(SP)
	AOJA TT,ALST5
ALST5A:	HLRZ A,(TT)		;GET VALUE CELL FROM SLOT
	JUMPE A,AL5AB		;IGNORE FROBS ALIST PUSHES!
	SKIPGE AR2A,(A)		;IGNORE MARKED VALUE CELLS
AL5AB:	AOJA TT,ALST5
	HRLI AR2A,(A)		;ELSE PUSH AS BEFORE
	PUSH SP,AR2A
	HRROM AR1,(A)
	AOJA TT,ALST5
;ALST7 ALST6 ALST6A ALST6B ALST7A AUNBIND AUNBN0 AUNBN1 AUNBN2 AUNBN3 AUNBN4 AUNBN5 AUNBN6 AUNBN7 IAP4A APFNG CAUNBIND APLBL APLBL1


ALST7:	HRRZ C,-1(P)		;T => CURRENT ENVIRONMENT
	SETZ T,			;ONLY ONE BLOCK PUSHED
	HRRZ B,SPSV
ALST6:	PUSH SP,C		;STEP 4 - RESTORE VALUE CELLS
ALST6A:	CAIN B,(SP)
	 JRST ALST7A
	HLRZ A,(B)
	JUMPE A,ALST6B
	CAMGE A,ZSC2
	 HRRZS (A)
ALST6B:	AOJA B,ALST6A

ALST7A:	PUSH SP,SPSV		;CLOSE BIND BLOCK
	HLLZS MUNGP		;VALUE CELLS UNMUNGED
	JRST CZECHI		;ALL DONE - CHECK INTERRUPTS

;;; AUNBIND UNDOES A FUNARG BIND BLOCK PUSHED BY ALIST.
;;; IT DOES SO BY SCANNING UP THE SPECPDL FROM THE POINT OF
;;; THE FUNARG ENVIRONMENT, OR BY SCANNING DOWN THE TRUE A-LIST,
;;; CLOBBERING CURRENT VALUES FROM VALUE CELLS INTO SPECPDL
;;; SLOTS OR A-LIST SLOTS AS APPROPRIATE, SO THAT ANY SETQ'S
;;; DONE IN THE CREATED COPY OF THE ENVIRONMENT WILL BE
;;; REFLECTED IN THE ORIGINAL ENVIRONMENT.

AUNBIND:
	POP SP,T
AUNBN0:	MOVEM TT,UNBND3
	MOVEM D,AUNBD
	MOVEM R,AUNBR
	MOVEM F,AUNBF
	MOVEI F,1(T)
	HRRZ R,(SP)
	CAMGE R,ZSC2
	 JRST AUNBN4
AUNBN1:	CAIN F,(SP)		;CLOBBER SETQ'S BACK INTO SPECPDL
	 JRST AUNBN3
	HLRZ D,(F)
AUNBN2:	HLRZ TT,(R)
	CAIE TT,(D)
	 AOJA R,AUNBN2
	HRRZ TT,(TT)
	HRRM TT,(R)
	AOJA F,AUNBN1

AUNBN3:	MOVE F,AUNBF
	MOVE R,AUNBR
	MOVE D,AUNBD
	SUB SP,R70+1
	JRST UNBND0

AUNBN4:				;CLOBBER SETQ'S BACK INTO TRUE A-LIST
AUNBN5:	CAIN F,(SP)
	 JRST AUNBN3
	HLRZ D,(F)
	JRST AUNBN7

AUNBN6:	HRRZ R,(R)
AUNBN7:	HLRZ TT,(R)
	HLRZ TT,(TT)
	HLRZ TT,(TT)
	HRRZ TT,(TT)
	CAIE TT,(D)
	 JRST AUNBN6
	HLRZ TT,(R)
	HRRZ D,(D)
	HRRM D,(TT)
	AOJA F,AUNBN5







IAP4A:	MOVEM TT,R	;AT THIS POINT, WE MAKE UP AN
	HRROI TT,(SP)
	JSP T,FIX1A
	PUSH P,A
	MOVE TT,R
	MOVNI R,2
	MOVNI T,1
	JRST IAP5

APFNG:	HRRZ A,(B)		;APPLY FUNARG
	HLRZ B,(B)
	HRRM B,(C)
	PUSH P,A
	MOVEM T,APFNG1
	PUSHJ P,ALIST
	PUSH P,.
	HRROI TT,-2(P)
	MOVE D,APFNG1
	POP TT,2(TT)
	AOJLE D,.-1
CAUNBIND:
	MOVEI D,AUNBIND
	MOVEM D,2(TT)
	SKIPN T
	 MOVEI D,CPOPJ
	MOVEM D,1(TT)
	MOVE T,APFNG1
	JRST IAPPLY


APLBL:	HLRZ A,(B)
	HRRZ B,(B)
	HLRZ AR1,(B)
	MOVEM AR1,(C)
	MOVEM SP,SPSV	;APPLY LABEL EXPRESSION
	PUSHJ P,BIND
	PUSHJ P,ABIND3
	MOVEI A,APLBL1
	EXCH A,-1(C)
	HLLM A,-1(C)
	PUSH FXP,A
	JRST IAPPLY
APLBL1:	PUSHJ P,UNBIND
	POPJ FXP,

;LISTIFY LFY3 LFY1 PNPUT $PNGET $PNG.R $PNG3 $PNG3A $PNG4 $PNG.D $PNGX DEPOSIT EXAMINE MAKNUM MUNKAM

SUBTTL	LISTIFY, PNPUT, AND PNGET

LISTIFY:
	SKIPN R,ARGLOC
	 JRST LFYER
	JSP T,FXNV1	;LISTIFY UP N ARGS FOR AN LSUBR
	MOVM D,TT
	CAMLE D,@ARGNUM
	 JRST LFY0
	JUMPGE TT,LFY3
	ADD R,@ARGNUM
	SUBI R,(D)
LFY3:	HRLOI TT,(D)		;SEE HAKMEM (A.I. MEMO 239) ITEM 156
	EQVI TT,(R)		;TT GETS <-N-1>,,<CONTENTS OF ARGLOC>
	AOBJP TT,FALSE		;ZERO ARGS
	PUSH P,R70
	MOVEI R,(P)		;T HOLDS LAST POINTER
LFY1:	MOVE A,(TT)		;GET ARG
	JSP T,PDLNMK
	PUSHJ P,NCONS
	HRRM A,(R)		;CLOBBER ONTO END OF LIST
	MOVEI R,(A)		;ADVANCE LAST POINTER
	AOBJN TT,LFY1
	JRST POPAJ


PNPUT:	JUMPE B,SYCONS
	PUSH P,A
	SETZM LPNF
	JRST INTRN1

$PNGET:	PUSHJ P,PNGET
	MOVE C,A
	JSP T,FXNV2
	MOVEI B,0
	CAIN TT+1,7
	POPJ P,
	CAIE TT+1,6
	LERR [SIXBIT \FEATURE NOT YET IMPLEMENTED - PNGET!\]
	TDZA D,D
$PNG.R:	PUSHJ P,CONSFX
	SETZ TT,
	MOVE R,[440600,,TT]
$PNG3:	TLNN D,760000
	JRST $PNG.D
$PNG3A:	TLNN R,740000
	JRST $PNG.R
$PNG4:	ILDB T,D		;GET NEXT ASCII BYTE
	JUMPE T,$PNGX
	CAIGE T,140		;CHECK FOR LOWER-CASE
	ADDI T,40		;CONVERT, AND STORE
	IDPB T,R
	JRST $PNG3
$PNG.D:	JUMPE C,$PNGX
	HLRZ F,(C)		;CONSTRUCT WORD OF ASCII, AND BPTR THERETO
	MOVE F,(F)
	HRRZ C,(C)
	MOVE D,[440700,,F]
	JRST $PNG3A
$PNGX:	JUMPE TT,.+2
	PUSHJ P,CONSFX
	JRST NREVERSE






SUBTTL	EXAMINE, DEPOSIT, MAKNUM, MUNKAM


DEPOSIT:			;FIRST ARG IS FIXNUM ADDRESS, 2ND IS VALUE
	EXCH A,B
	JSP T,FXNV2		;GET ADR INTO TT+1
	JSP T,FLTSKP		;GET DATA INTO TT
	JFCL
	MOVEM TT,(TT+1)		;PERFORM DEPOSIT
	JRST TRUE

EXAMINE:
	PUSH P,CFIX1
	JSP T,FXNV1
	MOVE TT,(TT)
	POPJ P,

MAKNUM:	MOVEI TT,(A)
	JRST FIX1

MUNKAM:	JSP T,FXNV1
	MOVEI A,(TT)
	POPJ P,
;$SLEEP ALARMCLOCK ALCK3 ALCK4 ALCK1 ALCK5 ALCK7 ALCK2 M30.

SUBTTL	SLEEP, LISTEN, ALARMCLOCK

;;; (SLEEP <N>) SLEEPS FOR <N> SECONDS.  <N> MAY BE A FIXNUM OR FLONUM.

$SLEEP:	JSP T,FLTSKP		;SUBR 1
IT%	CAIA
IT$	 JSP T,M30.
IT$	  FMPR TT,[30.0]
	  JSP T,IFIX
IT$	.SLEEP TT,		;SLEEP FOR <TT> 30TH'S OF A SECOND
10$	SLEEP TT,		;SLEEP FOR <TT> SECONDS
IFN D20,[
	IMULI TT,1000.
   SPECPRO INTSLP		;MUST PROTECT THIS IN CASE OF INTERRUPTS
	MOVE 1,TT		;(A) WE WANT TO ALLOW INTERRUPTS TO GO THROUGH
	DISMS			;(B) WE MUST BEWARE OF CRUD IN AC 1
   XCTPRO
	SETZ 1,
   NOPRO
]		;END OF IFN D20
	JRST TRUE

IFN ITS,[
ALARMCLOCK:
	EXCH A,B
	SETO TT,
	CAIE B,Q$RUNTIME
	 JRST ALCK1
	JUMPE A,ALCK3		;NIL => TURN OFF CLOCK
	JSP T,FLTSKP		;RUN TIME IN MICROSECONDS,
	JRST .+2		; ACCURATE TO 4. USEC JIFFIES
	JSP T,IFIX
	ASH TT,-2
ALCK3:	.SUSET [.SRTMR,,TT]
ALCK4:	JUMPL TT,FALSE
	JRST TRUE

ALCK1:	CAIE B,Q$TIME
	 JRST ALCK0
	JUMPE A,ALCK5		;NIL => TURN OFF CLOCK
	JSP T,FLTSKP		;REAL TIME IN SECONDS,
	 JSP T,M30.		; ACCURATE TO 30TH'S
	  FMPRI TT,(30.0)
	  JSP T,IFIX
	ASH TT,1
ALCK5:	MOVSI R,400000
	JUMPL TT,ALCK2
	JUMPN TT,ALCK7
	MOVEI TT,1		;IF 0 SPECIFIED, USE 1/30 SECOND
ALCK7:	MOVE R,[600000,,TT]
ALCK2:	.REALT R,
	JRST ALCK4

M30.:	IMULI TT,30.		;NOTE: DOUBLE SKIP RETURN
	JRST 2(T)

]		;END OF IFN ITS

;REMOB REMOB2 REMOB7 REMOB3 REMOB4 REMOB1 ARG ARGXX ARG3 SETARG ARGCOM

SUBTTL	REMOB, ARG, SETARG

REMOB:	JSP T,SPATOM		;SUBR 1 - REMOVE ATOMIC SYMBOL FROM OBARRAY
	 JSP T,PNGE		;ERROR IF ARG NOT A SYMBOL
	LOCKI
	PUSHJ P,INTERN
	JRST REMOB7

REMOB2:	LOCKI
REMOB7:	EXCH A,B	;OBTBL BUCKET # SHOULD BE IN TT
	MOVE R,TT
	HRRZ D,VOBARRAY
	HRRI TT,@TTSAR(D)
	PUSHJ P,ARYGT4
	HLRZ T,(A)
	CAIN T,(B)
	 JRST REMOB1
REMOB3:	MOVE D,A
	HRRZ A,(A)
	HLRZ T,(A)
	CAIE T,(B)
	 JRST REMOB3
	HRRZ T,(A)
	HRRM T,(D)
REMOB4:	HLRZ TT,(B)	;LEAVE ATOM HEADER IN T
	HRRZ TT,1(TT)	;LEAVE PNAME LINK IN TT
	JSP T,GCP8L	;CHECK TO SEE THAT SCOS ARE REMOVED FROM SCO TABLE.
	SETZB A,B
	UNLKPOPJ

REMOB1:	HRRZ A,(A)
	JSP T,.STOR0
	JRST REMOB4


ARG:	JUMPE A,ARG3		;SUBR 1 - FETCH LSUBR ARGUMENT
ARGXX:	JSP R,ARGCOM
	HRRZ A,(D)
	JRST PDLNKJ

ARG3:	SKIPN ARGLOC		;(ARG NIL) RETURNS NUMBER OF LSUBR ARGUMENTS
	 JRST ARGCM1
	HRRZ A,ARGNUM
	JRST PDLNKJ

SETARG:	JSP R,ARGCOM		;SUBR 2 - SET LSUBR ARGUMENT
	MOVE A,B
	JSP T,PDLNMK
	HRRM A,(D)
	POPJ P,

ARGCOM:	SKIPN D,ARGLOC
	 JRST ARGCM0
	JSP T,FXNV1
	JUMPLE TT,ARGCM8
	CAMLE TT,@ARGNUM
	 JRST ARGCM8
	ADD D,TT
	JRST (R)
;SBSYM VCLSYM VCSYM TLSYM TSYM PLSYM PSYM POF TOF PSYM1


SUBTTL	P.$X AND FRIENDS

10%	DEPURE:	JSR POFF	;DEPURIFY A PAGE
10%	REPURE:	JSR POFF	;REPURIFY A PAGE
	SBSYM:	JSR POFF	;FIND SUBR NAME (ADR IN RH OF .)
	VCLSYM:	JSR POFF	;FIND ATOM FOR VC (ADR IN LH OF .)
	VCSYM:	JSR POFF	;FIND ATOM FOR VALUE CELL
	TLSYM:	JSR POFF	;PRINT ST ENTRY OF LEFT HALF OF A CELL
	TSYM:	JSR POFF	;ST ENTRY OF RIGHT HALF
	PLSYM:	JSR POFF	;PRINT LEFT HALF OF A CELL
	PSYM:	JSR POFF	;PRINT RIGHT HALF OF A CELL
	POF:	JSR POFF	;PRINT ARG (POINTER AT LOC 40)
	TOF:	JSR POFF	;ST ENTRY OF ARG (POINTER IN 40)
IT$	P%OFF:	JSR POFF	;FOR % TYPEOUT MODE IN DDT
10%	PPTBL:	JSR POFF	;PRINT OUT PURTBL
10%	PPPAG:	JSR POFF	;PRINT OUT ACTUAL PAGE STATUSES
;POFF:	0
PSYM1:	SETOM PSYMF
	MOVEM T,PSMTS		;P.$X, DONE IN DDT,
	MOVEM R,PSMRS		; WILL PRINT CONTENTS
	MOVEI T,LPSMTB		; OF CURRENT OPEN CELL
	MOVE R,@PSMTB-1(T)	; IN LISP FORMAT.
	MOVEM R,PSMS-1(T)
	SOJN T,.-2
IFE ITS,[
10$	HRRZ T,.JBDDT"
10$	HRRZ T,@6(T)		;WHAT A KLUDGE!  6?!!
20$	MOVEI T,60		;TERRIBLE KLUDGE! 60
10$	CAIG R,POF
	 MOVEM T,PS.S
]		;END OF IFE ITS
	HRRZ T,POFF
10%	CAIG T,REPURE+1
10%	 JRST PUFY
	PUSH P,CPSYMX
	JSP T,ERSTP
	MOVEM P,ERRTN
	HRRZ R,POFF
IFN ITS,[
	MOVEI T,40
	MOVEM T,PS.S
	MOVEI T,THIRTY+7
	CAIN R,P%OFF+1
	MOVEM T,PS.S
	CAIG R,POF
	.BREAK 12,PSMST
]		;END OF IFN ITS
	JSP T,SPECBIND
		TTYOFF
		TAPWRT
		V.RSET
10%		V.NOPOINT	;FOR PPTBL
IFN USELESS,	SETZM TYOSW
	HRRZ AR1,V%TYO		;UPDATE OUR NOTION OF THE
	PUSHJ P,TTYBR1		; LINENUM AND CHARPOS OF THE TTY,
	MOVEI TT,AT.LNN		; SINCE DDT HAS SCREWED IT ALL UP.
	HLRZM D,@TTSAR(AR1)
	MOVEI TT,AT.CHS
	HRRZM D,@TTSAR(AR1)

;;; 	FALLS THRU

;PSYMP PSYMQ PSYMX CPSYMX PSYMP1 PSYMSB FCN.B

;;;	FALLS IN

	HRRZ T,POFF
10%	CAIL T,PPTBL+1
10%	 JRST PPTBL1
	MOVE T,PSMTS	;AT THIS POINT ALL ACS WILL HAVE BEEN
	MOVE R,PSMRS	; RESTORED SO THAT MOVE A,@ WILL WORK.
	MOVE A,PSMS
	MOVE AR1,PSMS+AR1-A
	MOVE A,@PS.S	;THUS THIS STUFF WORKS IF . IS AN AC.
	HRRZ T,POFF
IT$	CAIN T,P%OFF+1
IT$	 JRST PSYMP1
	CAIN T,POF+1
	 MOVEI T,PSYM+1
	CAIN T,TOF+1
	 MOVEI T,TSYM+1
	SUBI T,SBSYM
	TRNE T,1
	 TLZA A,-1
	  HLRZS A
	LSH T,-1
	JRST .+1(T)
	JRST PSYMSB	;SB.$X
	JRST PSYMVC	;VC.$X  AND  VCL.$X
	JRST PSYMT	;T.$X  AND  TL.$X  AND  TP FOO$X
PSYMP:	PUSHJ P,PRIN1	;P.$X  AND  PL.$X  AND  PP FOO$X
PSYMQ:	MOVEI A,TRUTH	;RETURN POINT TO GET OUT OF PSYM1
	JRST ERR2
PSYMX:	MOVEI T,LPSMTB
	MOVE R,PSMS-1(T)
	MOVEM R,@PSMTB-1(T)
	SOJN T,.-2
	MOVE T,PSMTS
	MOVE R,PSMRS
	SETZM PSYMF
CPSYMX:	POPJ P,PSYMX

IFN ITS,[
PSYMP1:	TLNN A,-1		;LISP MODE TYPEOUT - HACK TWO HALVES
	 JRST PSYMP
	PUSH P,A
	HLRZ A,A
	PUSHJ P,PRIN1
	MOVEI A,",		;SEPARATE HALVES WITH ",,"
REPEAT 2, PUSHJ P,TYO
	POP P,A
	TLZ A,-1
	JRST PSYMP
]		;END OF IFN ITS

PSYMSB:	MOVEI B,(A)
	PUSHJ P,ERRADR	;ERRADR DOES ALL THE DIRTY WORK!
	JRST PSYMQ

FCN.B:	SKIPE NOQUIT	;FAKE CONTROL-B INTERRUPT FROM DDT
	  POPJ P,
	SKIPGE INTFLG
	 POPJ P,

;;;	FALLS THRU
;TOF1 POF1 PSYMVC PSVC1 PSVC2 PSVC3 PUFY


;;; 	FALLS IN

	PUSH FXP,D
	MOVE D,INHIBIT		;CROCK SO THAT A .5LOCKI
	AOJE D,POPXDJ		; WON'T STOP US
	PUSH FXP,INHIBIT
	SETZM INHIBIT
	MOVE D,[TTYIFA,,400000+↑B]
	PUSHJ P,UINT
	POP FXP,INHIBIT
	POP FXP,D
	POPJ P,

TOF1:	SKIPA T,[TOF]
POF1:	MOVEI T,POF
	PUSH P,UUOH
	EXCH T,UUTSV
	JRST @UUTSV



PSYMVC:	MOVEI T,(A)
	MOVEI A,QUNBOUND
	CAIN T,SUNBOUND
	JRST PSYMP
	SKOTT T,LS
	JRST PSVC1
	JSP R,GCGEN
	   PSVC2
PSVC1:	MOVEI A,QM
	JRST PSYMP

PSVC2:	HLRZ A,(D)
	HLRZ B,(A)
	HRRZ A,(B)
	CAIN A,(T)
	JRST PSVC3
	HRRZ D,(D)
	JUMPN D,PSVC2
	JRST GCP8A

PSVC3:	HLRZ A,(D)
	JRST PSYMP

IFE D10,[
PUFY:
IT$	.BREAK 12,PSMST
	MOVEI TT,@PS.S		;PURIFY THE PAGE THAT . IS ON
	MOVE TT+1,TT		;USED BY DP≠X AND RP≠X
	MOVEI C,-REPURE(T)
	JSP R,IP0
	JRST PSYMX
]	;END OF IFE D10

;ZZ PSMTB LPSMTB P. PL. VC. VCL. T. TL. SB. BB PSYMT PSYMT1 PSYMT2 PSYMT3 PSYMTT PSYMTL


;;; TABLE OF CELLS TO SAVE OVER THE PSYM FUNCTIONS

ZZ==.		;BE SURE TO SEE PSMS IF YOU CHANGE THIS TABLE
PSMTB:		;ACCUMULATOR A MUST BE THE FIRST ITEM, AND AR1 THE FOURTH
IRP FOO,,[A,B,C,AR1,AR2A,TT,D,F,40,UUOH,UUTSV,UUTTSV,UURSV,ERBDF,FPTEM]
	FOO
	TERMIN
IFN USELESS,[
	PRINLV
	TYOSW
	ABBRSW
]		;END OF IFN USELESS
LPSMTB==.-ZZ	;FPTEM AND PCNT ARE SAME LOCATION

IT$ PSMST:	4,,PS.S-1	;READ VALUE OF . FROM DDT WITH .BREAK 12,

; PP - A UUO	;PP IS FOR PRINTING OUT AN ADDRESS AS AN S-EXPRESSION:
		;PP 34722$X IN DDT WILL PRINT OUT 34722 AS A
		;	POINTER IN LIST FORMAT.
; TP - A UUO	;TP IS LIKE PP BUT NICELY PRINTS ST ENTRY FOR
		;	THAT CELL
	P.=PUSHJ P,PSYM		;P.$X IS LIKE PP FOO$X WHERE FOO IS RH OF.
	PL.=PUSHJ P,PLSYM	;LIKE P., BUT FOR LH OF CURRENT CELL
IT$	P%=PUSHJ P,P%OFF	;LIKE P., BUT AS A DDT TYPEOUT MODE
	VC.=PUSHJ P,VCSYM	;FIND NAME OF VALUE CELL RH OF . ADDRESSES
	VCL.=PUSHJ P,VCLSYM	;A CROSS BETWEEN VC. AND PL.
	T.=PUSHJ P,TSYM	;A CROSS BETWEEN P. AND TP
	TL.=PUSHJ P,TLSYM	;A CROSS BETWEEN PL. AND TP
	SB.=PUSHJ P,SBSYM	;FIND NAME OF SUBR ADDRESSED BY RH OF .
10%	TBLPUR=PUSHJ P,PPTBL	;PRINT OUT PURTBL IN NICE FORM
10%	PAGPUR=PUSHJ P,PPPAG	;PRINT OUT ACTUAL STATUS OF PAGES
	BB=PUSHJ P,FCN.B	;FAKE CONTROL-B INTERRUPT FROM DDT
IT$	DP=PUSHJ P,DEPURE	;DEPURIFY PAGE . IS ON
IT$	RP=PUSHJ P,REPURE	;REPURIFY PAGE . IS ON

;	ENDCODE [P.$X]




SUBTTL	T.$X AND TBLPUR$X STUFF

PSYMT:	PUSHJ P,ITERPRI		;T.$X TYPEOUT, ETC.
	MOVEI TT,(A)
	ROT TT,-SEGLOG
	MOVE TT,ST(TT)
	SETZB T,C
	MOVNI R,22
PSYMT1:	LSHC T,1
	TRZN T,1
	 JRST PSYMT3
	MOVEI A,"+
	TROE C,1
	 PUSHJ P,TYO
	MOVEI B,PSYMTT+22(R)
	CAIL B,PSYMTT+PSYMTL
	 MOVEI B,[ASCII \??\]
	HRLI B,440700
PSYMT2:	ILDB A,B
	JUMPE A,PSYMT3
	PUSHJ P,TYO
	JRST PSYMT2
PSYMT3:	AOJL R,PSYMT1
	MOVEI A,",
REPEAT 2, PUSHJ P,TYO
	HLRZ A,TT
	PUSHJ P,PRINC
	JRST PSYMQ

.SEE LS		;THIS TABLE SHOULD BE KEPT CONSISTENT
.SEE ST		; WITH TWO OTHER PLACES
PSYMTT:
IRP TP,,[LS,$FS,FX,FL,BN,SY,SA,VC,$PDLNM,??,$XM,$NXM,PUR,HNK,DB,CX,DX]
	ASCII \TP\
TERMIN
PSYMTL==.-PSYMTT
;PPTBL1 PPTBL2 PPTBL6 PPTBL3 PPTBL4 PPTBL5 PPTBL7 PPTBL9 PPTBL8


IFN ITS+D20,[

PPTBL1:	MOVEI F,-PPTBL-1(T)		;0 => TBLPUR$X, 1 => PAGPUR$X
	JSP T,0PUSH-5
	MOVE R,[440200,,PURTBL]
	MOVEI T,1
PPTBL2:	MOVEM T,-4(FXP)
	ILDB TT,R
	JUMPE F,PPTBL6
IFN ITS,[
	.CALL PPTBL8
	.VALUE
	ASH TT,-41
	TRZ TT,1
	SKIPGE TT
	MOVEI TT,1	;0=NONX, 1=IMPURE, 2=PURE
]	;END OF IFN ITS
IFN D20,[
	MOVEI 1,-1(T)
	HRLI 1,.FHSLF
	RPACS
	SETZ TT,
	TLNN 2,(PA%PEX)
	 JRST PPTBL6
	AND 2,[PA%RD+PA%WT+PA%EX+PA%CPY]
	MOVEI TT,1
	TLNN 2,(PA%WT)
	 SKIPA TT,[2]
	MOVEI TT,1

]	;END OF IFN D20
PPTBL6:	MOVEI A,(FXP)
	SUBI A,(TT)
	AOS (A)
	MOVEI A,"0(TT)
	PUSHJ P,TYO
	MOVE T,-4(FXP)
	TRNE T,7
	 AOJA T,PPTBL2
	TRNN T,30
	 JRST PPTBL3
	MOVEI A,40
	PUSHJ P,TYO
	MOVE T,-4(FXP)
	TRNE T,10
	 AOJA T,PPTBL2
	PUSHJ P,TYO
	PUSHJ P,TYO
	JRST PPTBL4
PPTBL3:	PUSHJ P,ITERPRI
	MOVE T,-4(FXP)
	CAIN T,NPAGS
	 JRST PPTBL5
PPTBL4:	TLZ R,770000
	MOVE T,-4(FXP)
	AOJA T,PPTBL2

PPTBL5:	MOVEI R,TYO
	MOVNI TT,4
PPTBL7:	EXCH TT,(FXP)		;OKAY, QUUX, IF YOU EVER LOOK AT THIS CODE
	JUMPE TT,PPTBL9		; AGAIN YOU SHOULD HANG YOUR HEAD IN SHAME
	MOVEI A,↑I		; FOR EVER HAVING WRITTEN SUCH BARFUCIOUS
	PUSHJ P,TYO		; KLUDGY MEANDERINGS!  JUNE 16, 1979  -JONL-
	MOVE A,(FXP)
	ADDI A,"4
	PUSHJ P,TYO
	%NEG%
	MOVEI C,10.
	PUSHJ P,PRINI2
	POP FXP,TT
PPTBL9:	AOJL TT,PPTBL7
	POPI FXP,1
	JRST PSYMQ

IFN ITS,[
PPTBL8:	SETZ
	SIXBIT \CORTYP\
	1000,,-1(T)
	402000,,TT

]		;END OF IFN ITS
]		;END OF IFN ITS+D20
;XPURIFY PURIFY FPURF2 IPUR1 IPUR2

SUBTTL	PURIFY≠G ROUTINE

IFN ITS,[
XPURIFY:			;ENTRY POINT TO SETUP A PURQIX
	MOVE T,[SIXBIT \PURQIX\];CHANGE SYSFN1 TO BE A PURQIX
	MOVEM T,SYSFN1
	MOVE T,[SIXBIT \DSK\]	;NEW DEVICE NAME
	MOVEM T,SYSDEV
	MOVE T,[SIXBIT \LISP\]	;AND FINALLY, NEW SNAME
	MOVEM T,SYSSNM
	MOVEI T,FEATEX		;SPLICE 'EXPERIMENTAL' INTO FEATURES LIST
	MOVEM T,FEATURES
]		;END IFN ITS


IFN ITS+D20,[
PURIFY:
IFN ITS,[			;DOESN'T REALLY WORK FOR D10 YET
 	JRST NOTINIT		;CLOBBERED BY INIT TO "SETO AR1,"
	;SETO AR1,		;FOR PURIFY$G FROM DDT
	MOVE P,[-LFAKP-1,,FAKP-1]
	PUSHJ P,FPURF7
	PUSHJ P,FPURF2
	.VALUE [ASCIZ \:≠PURIFIED≠
\]
	JRST .-1
]		;END OF IFN ITS
FPURF2:	SETZB TT,PRSGLK		;ZERO PURE SEGMENT AOBJN PTR
	MOVE R,[NPFFS,,NPFFS+1]	;ZERO PURE FREE STORAGE COUNTERS
	SETZM NPFFS
	BLT R,NPFFY2
	SETZM LDXLPC		;CLEAR # WORDS FREE SO ALWAYS GRAB NEW SET
				; OF SEGMENTS THE FIRST TIME A LINK IS NEEDED
				; START NEW LIST OF SEGMENTS
	SETOM LDXPFG		;SET PURE FLAG
20$	HRLI TT,.FHSLF
	MOVNI R,NPAGS		;SO STEP THROUGH LOSING PURTBL
	MOVE D,[440200,,PURTBL]	; TO DECIDE HOW TO MUNG PAGES
IPUR1:	ILDB T,D		;GET BYTE FOR NEXT PAGE
	JRST .+1(T)
	 JRST IPUR3		;0 - DELETE
	 JRST IPUR4		;1 - IMPURIFY
	 JRST IPUR6		;2 - PURIFY
	MOVEI T,NPAGS(R)	;3 - HAIRY STUFF - DECODE FURTHER
	LSH T,PAGLOG
	CAMGE T,BPSL		;CODE 3 SHOULD NEVER APPEAR
	 .VALUE			; BELOW BINARY PROGRAM SPACE
	MOVE F,@VBPORG		;PAGIFY CURRENT VALUE OF
	ANDI F,PAGMSK		; BPORG DOWNWARD
	CAIGE T,(F)		;ANY CODE 3 PAGE BELOW THAT CAN
	 JRST IPUR6A		; BE PURIFIED
	CAMG T,BPSH		;ANY CODE 3 PAGE BETWEEN BPORG
	 JRST IPUR2		; AND BPSH IS LEFT AS IS
	CAMG T,HINXM		;ANY PAGE BETWEEN BPSH AND HINXM
	 .VALUE			; DAMN WELL BETTER BE 0!!!
	HRRZ F,PDLFL1		;ANYTHING BETWEEN HINXM AND
	LSH F,PAGLOG		; PDLS MUST BE PURE FREE STORAGE
	CAIGE T,(F)
	 JRST IPUR6A
	CAIGE T,BSCRSG		;SCRATCH PAGES ARE IGNORED
	 JUMPL AR1,IPUR3A	;PDL PAGES MAY OR MAY NOT BE FLUSHED, DEPENDING ON AR1
IPUR2:
IT$	ADDI TT,1001
20$	ADDI TT,1
	TLNN D,730000		;ONLY 20 2-BIT BYTES PER WORD, NOT 22
	 TLZ D,770000
	AOJL R,IPUR1
20$	SETZB B,C		;ZERO OUT CRUD
	MOVEI A,TRUTH
	JUMPGE AR1,CPOPJ
	MOVE T,[STDMSK]
	MOVEM T,IMASK
IT$	MOVE T,[STDMS2]
IT$	MOVEM T,IMASK2
	POPJ P,


;IPUR4 IPUR5 IPUR9 IPURE$ IPUR6A IPUR6 IPUR7 IPUR3A IPUR3

;;;	IFN ITS+D20

;;; VARIOUS PAGE FLUSHING AND PURIFYING ROUTINES FOR PURIFY


IPUR4:				;MAKE PAGE WRITABLE

IFN ITS,[
	.CALL IPUR9		;CHECK TYPE OF PAGE
	 .VALUE
	JUMPL T,IPUR2		;ALREADY IMPURE
	IOR TT,[4400,,400000]
	JUMPG T,IPUR5
	.CBLK TT,		;NON-EXISTENT - GET A FRESH PAGE
	 .VALUE
	JRST IPUR2
IPUR5:	TLZ TT,4000		;PURE - TRY TO DEPURIFY
	.CBLK TT,
	 JSP F,IP1		;IF WE LOSE, TRY COPYING
	JRST IPUR2

IPUR9:	SETZ
	SIXBIT \CORTYP\
	1000,,400(R)
	402000,,T
]		;END OF IFN ITS

IFN D20,[
	MOVE 1,TT
	JSP T,IPURE$			;MAKE SURE PAGE EXISTS
	TLZ 2,-1#(PA%RD+PA%WT+PA%EX+PA%CPY)
	TLNE 2,(PA%WT)			;SKIP IF NOT ALREADY WRITEABLE
	 JRST IPUR2
	TLON 2,(PA%CPY)			;SKIP IF ALREADY COPYABLE
	  SPACS
	JRST IPUR2

;ARG IN A IS PAGE NUMBER.  PRESERVE  A,TT,D,R
;MAKE SURE PAGE EXISTS.  IF NOT, CREATE SOME 0'S 
;LEAVE RESULT OF RPACS IN B, AND PUT .FHSLF IN LH OF A
IPURE$:	HRLI A,.FHSLF
	RPACS
	TLNE B,(PA%PEX)
	 JRST (T)
	HRL T,A				;SAVE PAGE NUMBER IN LH OF T
	MOVE F,B			;SAVE RPACS CALL IN F
	MOVSI B,.FHSLF			;SOURCE PAGE IS 0, WHICH MUST EXIST
	EXCH A,B
	MOVSI C,(PM%RD+PM%CPY)
	PMAP				;MAKE FOOOLISH PAGE EXIST
	LSH B,9				; [WHICH PROBABLY GOT LOST BY
	HRLI B,1(B)			; THE "SAVE" COMMAND] BY COPYING
	MOVEI C,777(B)			; THE FIRST PAGE OF THE JOB
	SETZM (B)
	MOVSS B
	BLT B,(C)			;FOO! A PAGE OF 0'S
	MOVE B,F
	HLR A,T
	HRLI 1,.FHSLF
	JRST (T)

]		;END OF IFN D20







;MAKE PAGE READ-ONLY

IPUR6A:	MOVEI T,2		;CHANGE PURTBL ENTRY TO 2
	DPB T,D
IPUR6:
IFN ITS,[
	.CALL IPUR9		;CHECK TYPE OF PAGE
	 .VALUE
	JUMPG T,IPUR2		;ALREADY PURE
	JUMPE T,IPUR7		;CAN'T PURIFY A NON-EXISTENT PAGE
	TLZ TT,4400		;PURIFY AN IMPURE PAGE
	TRO TT,400000
	.CBLK TT,
IPUR7:	 .VALUE
	JRST IPUR2
]		;END OF IFN ITS
IFN D20,[
	MOVE 1,TT
	JSP T,IPURE$			;MAKE SURE PAGE EXISTS
	TLZ 2,-1#(PA%RD+PA%WT+PA%EX+PA%CPY)
	TLZE 2,(PA%WT+PA%CPY)		;ALREADY READ-ONLY?
	 SPACS
	JRST IPUR2

]		;END OF IFN D20

;DELETE A PAGE

IPUR3A:	SKIPE NOPFLS		;NOPFLS NON-ZERO => DON'T FLUSH PAGES
	 JRST IPUR2
	DPB NIL,D		;ZERO OUT PURTBL ENTRY
IPUR3:
IFN ITS,[
	TRZ TT,400000
	.CBLK TT,
	 .VALUE
]		;END OF IFN ITS
IFN D20,[
	SETO 1,
	MOVE 2,TT
	HRLI 2,.FHSLF
	SETZ 3,
	PMAP
]		;END OF IFN D20
	JRST IPUR2

]		;END OF IFN ITS+D20

;RSXTB2 RCT0

SUBTTL	PURE COPY OF THE READ SYNTAX TABLE


	-1,,0	;FOR NEWRD WILL POINT TO MACRO CHAR LIST
RSXTB2:	PUSH P,CFIX1
	JSP TT,1DIMF
	   NIL		;SHOULD NEVER ACTUALLY CALL
	   0
RCT0:
IFE NEWRD,[		;OLD VERSION OF PURE READTABLE
IFN SAIL,[
		400500,,0	;NULL IS IGNORED
REPEAT 10,	2,,1+.RPCNT	;SAIL CHARS
		500500,,↑I	;TAB
		500500,,↑J
		400500,,↑K
		400500,,↑L
		500500,,↑M	;CR
REPEAT 22,	2,,↑N+.RPCNT	;SAIL CHARS
]		;END IFN SAIL
.ELSE,[
REPEAT 10,	400500,,.RPCNT		;↑@ ↑A ↑B ↑C ↑D ↑E ↑F ↑G
		2,,↑H			;↑H
		500500,,↑I		;TAB
		400500,,↑J		;LINE-FEED
		400500,,↑K
		400500,,↑L
		500500,,↑M		;CARRIAGE-RETURN
REPEAT 3,	400500,,↑N+.RPCNT	;↑N ↑O ↑P
		405540,,QCTRLQ		;↑Q
		400500,,↑R		;↑R
		405540,,QCTRLS		;↑S
REPEAT 7,	400500,,↑T+.RPCNT	;WORTHLESS
		2,,33			;ALT MODE
REPEAT 4,	400500,,↑\+.RPCNT	;WORTHLESS
]		;END IFE SAIL
		500500,,40		;SPACE
		2,,41 			;!
		404500,,Q%IDQM		;"
		404540,,QRDSHP		;#
REPEAT 3,	2,,"$+.RPCNT		;$ % &
		404500,,QRDQTE		;'
		440500,,"(		;(
		410500,,")		;)
		2,,"*			;*
		10,,"+			;+
		404500,,QI%C%F		;, (INTERNAL-COMMA-FUN)
		50,,"-			;-
		420700,,".		;.
		402500,,"/		;/
REPEAT 10.,	4,,"0+.RPCNT		;DECIMAL DIGITS
		2,,":			;:
		404540,,QRDSEMI		;;
REPEAT 5,	2,,"<+.RPCNT		;< = > ? @
REPEAT 26.,	1,,"A+.RPCNT		;ALPHABETIC
REPEAT 3,	2,,133+.RPCNT		;SQUARE BRACKTES
		22,,"↑			;CARET
		62,,"←			;UNDERSCORE
		404500,,QI%B%F		;GRAVE (INTERNAL-BACKQUOTE-FUN)
REPEAT 26.,	501,,"A+.RPCNT		;SMALL LETTERS
		2,,173			;LEFT BRACE
		404500,,QRDVBAR		;VERTICAL BAR
REPEAT 2,	2,,175+.RPCNT		;RIGHT BRACE, TILDE
		401500,,177		;RUBOUT
IFN .-RCT0-200,	WARN [READTABLE LOSSAGE]
		402500,,57		;PSEUDO SLASHIFIER CHARACTER
		440500,,50		;PSEUDO OPEN PARENS
		410500,,51		;PSEUDO CLOSE PARENS
		500540,,40		;PSEUDO SPACE
IFN SAIL,[
	 REPEAT 74, 400500,,204+.RPCNT	;SAIL CONTROLIFIED FUNNY CHARACTERS

REPEAT 2,	400500,,300+.RPCNT	;↑@ ↑A
		400500,,302		;↑B
REPEAT 5,	400500,,300+.RPCNT	;↑C ↑D ↑E ↑F ↑G
		2,,300+↑H		;↑H

		500500,,300+↑I		;TAB
		500500,,300+↑J		;LINE-FEED
		400500,,300+↑K
		400500,,300+↑L
		500500,,300+↑M		;CARRIAGE-RETURN
REPEAT 3,	400500,,300+↑N+.RPCNT	;↑N ↑O ↑P
		405540,,QCTRLQ		;↑Q
		400500,,300+↑R		;↑R
		405540,,QCTRLS		;↑S
REPEAT 7,	400500,,300+↑T+.RPCNT	;WORTHLESS
		2,,33			;ALT MODE
REPEAT 444,	400500,,300+↑\+.RPCNT	;WORTHLESS
IFN .-RCT0-1000, WARN [SAIL RCT0 LOSSAGE -- WRONG LENGTH TABLE]
]	;END IFN SAIL
]	;END OF IFE NEWRD

;;; MORE ON NEXT PAGE
;TLRCT ZZ .NOPOINT CTY TYOI CTYP TYO1C TYO1TB

IFN NEWRD,[		;NEW VERSION OF PURE READTABLE

REPEAT 11,	RS.BRK+RS.SL1+RS.SL9 + .RPCNT		;WORTHLESS CONTROL CHARS
		RS.BRK+RS.SL1+RS.SL9+RS.WSP + ↑I	;TAB
		RS.BRK+RS.SL1+RS.SL9+RS.WSP+RS.VMO + ↑J	;LINE-FEED
		RS.BRK+RS.SL1+RS.SL9 + ↑K 		;↑K (WORTHLESS)
		RS.BRK+RS.SL1+RS.SL9+RS.VMO + ↑L	;↑L (WORTHLESS)
		RS.BRK+RS.SL1+RS.SL9+RS.WSP + ↑M	;CARRIAGE-RETURN
REPEAT 3,	RS.BRK+RS.SL1+RS.SL9 + ↑N+.RPCNT	;WORTHLESS
		RS.BRK+RS.SL1+RS.SL9+RS.MAC+RS.FF + ↑Q	;↑Q (fun is QCTRLQ)
		RS.BRK+RS.SL1+RS.SL9 + ↑R 		;↑R (WORTHLESS)
		RS.BRK+RS.SL1+RS.SL9+RS.MAC+RS.FF + ↑S	;↑S (fun is QCTRLS)
REPEAT 7,	RS.BRK+RS.SL1+RS.SL9 + ↑T+.RPCNT	;WORTHLESS
		RS.XLT + 33				;ALTMODE
REPEAT 4,	RS.BRK+RS.SL1+RS.SL9 + 34+.RPCNT	;WORTHLESS
		RS.BRK+RS.SL1+RS.SL9+RS.WSP + 40	;SPACE
REPEAT 6,	RS.XLT + "!+.RPCNT			;! " # $ % &
		RS.BRK+RS.SL1+RS.SL9+RS.MAC + "'	;SINGLE-QUOTE
		RS.BRK+RS.SL1+RS.SL9+RS.LP + "(		;LEFT PAREN
		RS.BRK+RS.SL1+RS.SL9+RS.RP + ")		;RIGHT PAREN
		RS.XLT + "*				;ASTERISK
		RS.SL1+RS.SGN + "+			;PLUS
		RS.BRK+RS.SL1+RS.SL9+RS.WSP + ",	;COMMA
		RS.SL1+RS.SGN+RS.ALT + "-		;MINUS
		RS.BRK+RS.SL1+RS.SL9+RS.DOT+RS.PNT + ". ;DOT
		RS.BRK+RS.SL1+RS.SL9+RS.SLS + "/	;SLASH
REPEAT 10.,	RS.SL1+RS.DIG + "0+.RPCNT		;0 - 9
		RS.XLT + ":				;COLON
		RS.BRK+RS.SL1+RS.SL9+RS.MAC+RS.ALT + ";	;SEMI-COLON
REPEAT 5,	RS.XLT + "< + .RPCNT			;< = > ? @
REPEAT 4,	RS.LTR + "A+.RPCNT			;A-D
		RS.LTR + RS.SQX + "E			;E
REPEAT 21.,	RS.LTR + "F+.RPCNT			;F-Z
REPEAT 3,	RS.XLT + 133+.RPCNT			;LBRACK BSLASH RBRACK
		RS.ARR+RS.XLT + "↑			;UP-ARROW
		RS.ARR+RS.ALT+RS.XLT + #←		;UNDERSCORE
		RS.BRK+RS.SL1+RS.SL9+RS.MAC + "`	;BACK-QUOTE
REPEAT 4,	RS.LTR + "A+.RPCNT			;A-D L.C.
		RS.LTR+RS.SQX + "E			;E L.C.
REPEAT 21.,	RS.LTR + "F+.RPCNT			;F-Z L.C.
REPEAT 4,	RS.XLT + "{+.RPCNT			;LBRACE VBAR RBRACE TILDE
		RS.BRK+RS.SL1+RS.SL9+RS.RBO + 177	;RUBOUT
		RS.BRK+RS.SL1+RS.SL9+RS.SLS + "/	;PSEUDO SLASH
		RS.BRK+RS.SL1+RS.SL9+RS.LP + "(		;PSEUDO (
		RS.BRK+RS.SL1+RS.SL9+RS.RP + ")		;PSEUDO )
		RS.BRK+RS.SL1+RS.SL9+RS.WSP + 40	;PSEUDO SPACE
]		;END OF IFN NEWRD


TLRCT==<.-RCT0>
SA$ INFORM [READTABLE LENGTH = ]\LRCT
ZZ==LRCT-TLRCT
IFE NEWRD,[
IFL ZZ-1-2, INFORM READER-TABLE-DEFICIENCY,\<3-ZZ>
.ELSE	BLOCK ZZ-3
]		;END OF IFE NEWRD

		NIL,,NIL	;UNUSED
		TRUTH,,0	;(STATUS TTYREAD),,(STATUS ABBREVIATE)
		NIL,,TRUTH	;(STATUS TERPRI),,(STATUS ←)   

;;; TTYREAD=NIL => ONLY FORCE FEED CHARS LET READ SEE THE TTY BUFFER
;;; ABBREVIATE: 1.1 => ABBREV FILES, 1.2 => ABBREV FLATSIZE/EXPLODE
   ;;; THE FOLLOWING, "TERPRI",  MAY NO LONGER BE ACTIVE:  (11/01/79 - JONL)
   ;;; TERPRI=T => DO NOT OUTPUT AUTOMATIC NEWLINES
;;; ←=T => ALLOW PRIN1/PRINC TO OUTPUT FIXNUMS IN FORM M←N






SUBTTL TOP PAGE PGTOP, AND SOME INSRTS

	MOVEI 1,[.]		;THIS WASTEFUL HAC IS MERELY TO INSURE THAT THE LAST
	MOVEI 2,[.]		;FEW CONSTANTS ON THIS PART ARE WORTHLESS
	MOVEI 3,[.]		;IN CASE THERE ARE  MORE ON PASS2 THAN PASS1

PGTOP TOP,[TOPLEVEL, COMMON, AND RANDOM STUFF]


;;; HERE IS A SUNDER HAC - IT MUST BE ABLE TO FIND 
;;; <LF>$INSRT<SP>NAME<TABS-OR-SPACES>;COMMENTS ON FILE

;;@ PRINT 288		PRINT AND FILE-HANDLING FUNCTIONS
;;;   ***** MACLISP ****** PRINT AND FILE-HANDLING FUNCTIONS *******
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************


SUBTTL	FUNNY PRINTING ROUTINES

PGBOT PRT


.NOPOINT:
	PUSHJ P,NOTNOT
	HRRZM A,V.NOPOINT
	POPJ P,


COMMENT |	HERE IS A FINE HACK THAT GOT SUPERSEDED BY CTYP

CTY:	PUSHJ P,TYOI	;THIS IS ALWAYS DONE BY A XCT "Q,CTY - FOR RANDOM Q.
TYOI:	PUSH P,A	; USEFUL MAINLY BECAUSE IT SAVES A. WARNING!!!
	MOVE A,-1(P)	; THIS CODE IS VERY HACKISH, DEPENDENT ON THE OPCODE
	LDB A,[270600,,-1(A)]	; OF XCT (256). THIS ONLY WORKS FOR ASCII
	PUSHJ P,(R)	; CHARS IN THE RANGE 40-57. THUS Q MUST BE AMONG
	JRST POPAJ	;  [ !"#$%&'()*+,-./] (THE BRACKETS ARE META-CHARS!)

|		;END OF COMMENT


;;;	XCT N,CTYP
;;; CAUSES THE N'TH CHARACTER IN TYO1TB TO GET PRINTED VIA
;;; THE ROUTINE IN R.  SYMBOLS ARE DEFINED FOR THESE XCT'S.

CTYP:	PUSHJ P,TYO1C
TYO1C:	PUSH P,A
	HRRZ A,-1(P)
	LDB A,[270400,,-1(A)]
	MOVE A,TYO1TB(A)
	PUSHJ P,(R)
	JRST POPAJ

TYO1TB:
IRP X,,[#,(,),+,-,.,/,|,:,;, ,←,E,D,⊃,.]Z,,[NMBR,LPAR,RPAR,POS
NEG,DOT,SLSH,VBAR,CLN,SEMI,SPC,BAK,E,D,CTLQ,DCML]
%!Z!%=XCT .IRPCNT,CTYP
	"X
TERMIN
IFG .-TYO1TB-20, WARN [TOO MANY TYO1TB CHARACTERS]
;PRNARG PRNAR$ PRNAR0 PRNAR3 PRNAR7 PRNTTY PRNAR2 PRNAR4 PRNAR5 PRNAR6 PRNARA PRNAR8 PRNAR9 PNAGX CPNAGX



SUBTTL	NEWIO TYO FUNCTION AND RELATED ROUTINES

;;; CALLED BY FUNCTIONS LIKE PRINT WHICH TAKE AN ARG AND
;;; AN OPTIONAL ASCII OUTPUT FILE ARRAY. DOES ARGS CHECKING
;;; AND SETS UP AR1 WITH THE CORRECT OUTPUT FILE(S).
;;; IF ONE ARG IS GIVEN AND THERE ARE NO FILES TO OUTPUT TO
;;; (↑W IS NON-NIL, AND EITHER ↑R OR OUTFILES IS NIL),
;;; THEN A POPJ IS DONE, RETURNING FOR THE CALLING FUNCTION.
;;; LEFT HALF BITS IN AR1:
;;;	400000	RH OF AR1 HAS SINGLE FILE ARRAY (ELSE LIST)
;;;	200000	DO *NOT* OUTPUT TO TTY AS WELL
;;;		IFN SFA, THEN ALSO PRINT/PRINC/PRIN1/TYO BIT
;;;
;;; CALLED BY:
;;;		JSP F,PRNARG
;;;		   XXX,,[QPRINT]	;ATOM FOR WNA ERROR
;;;	-OR-	   XXX,,[<SFA-BIT>,,QPRINT] ;IFN SFA
;;; XXX IS TYPICALLY JFCL.  IF XXX IS NEGATIVE, THE RETURN VALUE
;;; FOR THE FUNCTION IS NIL INSTEAD OF T.

PRNARG:	AOJN T,PRNAR2
	POP P,A
PRNAR$:	SAVE AR1 AR2A CPNAGX
PRNAR0:	SKIPE AR1,TAPWRT	;IF ↑R NOT SET, USE NIL
	 HRRZ AR1,VOUTFILES	;OTHERWISE USE OUTFILES
	JUMPN AR1,PRNAR3
	SKIPE TTYOFF
	 JRST PRNAR8
PRNAR3:
SFA$	HLRZ T,@(F)		;PLACE OPERATIONS FLAG IN AR1
SFA$	TLO AR1,(T)
	TRNN AR1,-1
SFA$	 JRST PRNTTY		;GOING TO THE TTY
SFA%	 JRST 1(F)
	PUSHJ P,MPFLOK
	 JRST 1(F)
PRNAR7:	PUSHJ P,OFCAN
	EXCH A,AR1
	PUSHJ P,[IOL [LOSING OUTPUT FILE SPECS!]]
	EXCH A,AR1
	JUMPE T,PRNAR0
	JRST PRNAR4

IFN SFA,[
PRNTTY:	TLNE AR1,200000		;REALLY GOING TO THE TTY?
	 JRST 1(F)		;NOPE, SO RETURN
	MOVSI T,AS.SFA		;IS C(TYO) AN SFA?
	MOVE R,V%TYO
	TDNN T,ASAR(R)
	 JRST 1(F)		;NOPE, SO ALL IS OK
	HLLZ T,@(F)		;SFA OPERATION MASK
	MOVEI TT,SR.WOM
	TDNN T,@TTSAR(R)	;CAN THE SFA DO THIS OPERATION DIRECTLY?
	 JRST 1(F)		;NOPE, IT WILL HANDLER A LOWER-LEVEL THING
	MOVEI C,(A)		;ARG IS THING TO PRINT/PRINC/PRIN1
	MOVEI AR1,(R)		;THE SFA
	JRST ISTCAL		;DO AN INTERNAL SFA CALL
]		;END IFN SFA

PRNAR2:	CAME T,XC-1
	 JRST PRNAR9
	MOVE A,-1(P)
	MOVEM AR1,-1(P)
	EXCH AR2A,(P)
	PUSH P,CPNAGX
	SKIPN AR1,AR2A
	 AOJA T,PRNAR0
PRNAR4:	JSP T,PRNARK
	 JRST PRNARA		;ERRONEOUS FILE
	 JRST PRNAR6		;LIST OF SOME KIND
SFA$	 SKIPA			;NORMAL RETURN
SFA$	 JRST PRNAR8		;HANDLED THE SFA
PRNAR5:	TLO AR1,600000		;VALID FILE OBJECT
	HLRZ T,@(F)
	TLO AR1,(T)
	JRST 1(F)

PRNAR6:	TLO AR1,200000
	JRST PRNAR3

PRNARA:	TLO AR1,200000		;MAKE ERROR MESSAGE PRINT CORRECTLY
	JRST PRNAR7

PRNAR8:	SKIPGE (F)
	 JRST FALSE
	JRST TRUE

PRNAR9:	HRRZ D,@(F)
	JRST S1WNAL

PNAGX:	RSTR AR2A AR1
CPNAGX:	POPJ P,PNAGX
;MPFLOK MPFLO1 MPFLO3 MPFLO2 PRNARK PRNRK3 PRNRK1 PRNRK2 PRTSTO PRTSO1 PRTSTR PRTST1 PRTST2 PRTSTL

;;; CHECK LIST OF FILES IN AR1 FOR VALIDITY.
;;; SKIPS ON *FAILURE*.

MPFLOK:	PUSH P,AR1		;MUST PRESERVE LH OF AR1
	MOVEI AR2A,(AR1)
MPFLO1:	JUMPE AR2A,MPFLO2
	HLRZ AR1,(AR2A)
	JSP T,PRNARK
	 JRST MPFLO3		;ERROR
	 JRST MPFLO3		;LIST (NOT ALLOWED WITHIN ANOTHER LIST)
SFA$	 SKIPA			;NORMAL
SFA$	 JFCL			;HANDLED THE SFA
	HRRZ AR2A,(AR2A)
	JRST MPFLO1

MPFLO3:	AOS -1(P)		;ERROR - SKIP
MPFLO2:	POP P,AR1
	POPJ P,

;;; CHECK OUT OBJECT IN AR1.
;;;	SKIP 3 IF AN SFA, AND HANDLED IT
;;;	SKIP 2 IF A VALID, OPEN, NON-BINARY, OUTPUT FILE OBJECT.
;;;	SKIP 1 IF A LIST (ELEMENTS ARE NOT CHECKED).
;;;	SKIP 0 OTHERWISE.

PRNARK:	CAIN AR1,TRUTH		;ARG CHECK FOR PRNARG
	 HRRZ AR1,V%TYO		;FOR T, ASSUME CONTENTS OF TYO
	JSP TT,XFOSP		;MUST BE FILE ARRAY OR SFA
	 JRST PRNRK2
IFN SFA,[
	  JRST PRNRK1
	PUSH P,T		;SAVE T
	MOVEI TT,SR.WOM		;AN SFA
	HLLZ T,@(F)		;THE APPROPRIATE FUNCTION
	TDNN T,@TTSAR(AR1)	;CAN THE SFA DO IT?
	 JRST PRNRK3		;NOPE, RESTORE T AND PROCEED
	PUSHJ FXP,SAV5		;SAVE THE 'WORLD'
	PUSHJ P,SAVX5
	MOVEI C,(A)		;ARGUMENT TO SFA
	PUSHJ P,ISTCAL
	PUSHJ P,RSTX5
	PUSHJ FXP,RST5
	POP P,T
	JRST 3(T)		;TRIPLE-SKIP RETURN
PRNRK3:	POP P,T
	JRST 2(T)		;DOUBLE-SKIP RETURN, LOWER-LEVEL WILL HANDLE IT
PRNRK1:	]	;END IFN SFA
	MOVE TT,TTSAR(AR1)
	TLNE TT,TTS.IO		;MUST BE OUTPUT FILE
	 TLNE TT,TTS<BN+CL>	;MUST NOT BE CLOSED, NOR BINARY
	  JRST (T)		;ERROR
	JRST 2(T)		;SUCCESS - VALID FILE OBJECT

PRNRK2:	MOVEI TT,(AR1)
	LSH TT,-SEGLOG
	SKIPGE ST(TT)
	 JRST 1(T)		;OKAY IF LIST (CALLER USUALLY WILL USE MPFLOK)
	JRST (T)		;ELSE ERROR

IFN SFA,[
;;; FILE-ARRAY OR LIST IN AR1: IF ZERO USE V%TYO
PRTSTO:	PUSH P,PRTSO1		;IN CASE PRTSTR POPJS
	PUSH FXP,F
	PUSH FXP,A
	MOVEI A,(FXP)		;GIVE IT A PDL NUMBER
	JSP F,PRTSTR		;DO SFA CHECKING
	[SO.TYO,,]
	POP FXP,A
	POPI P,1
PRTSO1:	POPJ FXP,.+1		;RETURN TO CALLER
	POPI FXP,2		;HANDLED ALL WE NEEDED TO
	POPJ P,

PRTSTR:	JUMPE AR1,PRTST1	;HANDLE DEFAULT CONDITION SPECIALLY
	JSP T,PRNARK		;CHECK OUT C(AR1)
	 JFCL			;PROBABLY BAD OUTFILES
	 JRST PRTSTL		;A LIST
	 JRST 1(F)		;A FILE ARRAY OR UNHANDLED SFA
	 POPJ P,		;A HANDLED SFA

PRTST1:	HRRZ AR1,V%TYO
	MOVEI TT,SR.WOM		;AN SFA
	HLLZ T,@(F)		;THE APPROPRIATE FUNCTION
	TDNN T,@TTSAR(AR1)	;CAN THE SFA DO IT?
	 JRST PRTST2		;NOPE, RETURN NORMALLY
	PUSHJ FXP,SAV5		;SAVE THE 'WORLD'
	PUSHJ P,SAVX5
	MOVEI C,(A)		;ARGUMENT TO SFA
	PUSHJ P,ISTCAL
	PUSHJ P,RSTX5
	PUSHJ FXP,RST5
	POPJ P,			;RETURN
PRTST2:	SETZ AR1,		;MAKE SURE AR1 IS STILL ZERO
	JRST 1(F)		;THEN RETURN TO CALLER

PRTSTL:	PUSHJ P,MPFLOK		;CHECK THE LIST IN AR1
	 JRST 1(F)		;RETURN IF ALL OK
	PUSHJ P,OFCAN
	EXCH A,AR1
	PUSHJ P,[IOL [LOSING OUTPUT FILE SPECS!]]
	EXCH A,AR1
	JRST PRTSTR
]		;END IFN SFA
;TYO$ %TYO %TYO1 TYO $TYO TYOPR TYO1 TYO6 STRTYO TYO6A TYO6B TYO5 TYO2 TYO2A TYO2Z TYO2B TYO4 TYOARG


TYO$:	JSP F,PRNAR$			;USER'S "*TYO" ENTRY
SFA$		[SO.TYO,,QTYO$]
SFA%		[QTYO$]
	JRST %TYO1

%TYO:	JSP F,PRNARG			;USER'S "TYO" ENTRY
SFA%	 JFCL [Q%TYO]
SFA$	 JFCL [SO.TYO,,Q%TYO]
%TYO1:	JSP T,GTRDTB
	PUSHJ P,TYO1
	JRST TRUE

TYO:	SKIPE AR1,TAPWRT		;ENTRY FOR SINGLE-ENTER INTERNALS
	 HRRZ AR1,VOUTFILES		;TEMP ??
SFA$	JSP F,PRTSTO			;DO SFA CHECKING STUFF

$TYO:	PUSH FXP,T			;ENTRY FOR PRIN1, PRINC, GC-PRINTOUT,
	PUSH FXP,TT			;  AND MULTIPLE-ENTER INTERNALS
	PUSH P,[PXTTTJ]	
	JSP T,GTRDTB
TYOPR:	SKIPA TT,A			;MUST SAVE R FOR PRINT
TYO1:	 JSP F,TYOARG
;AT THIS POINT: CHAR IN TT, FILE(S) IN AR1, READTABLE IN AR2A
;MUST SAVE A,B,C,AR1,R
TYO6:	.5LKTOPOPJ
STRTYO:	JUMPGE AR1,TYO5
	TLNN AR1,200000
	 SKIPE TTYOFF
	  JRST TYO6A
	SKIPLE TYOSW
	 JRST TYO6A
	PUSH P,AR1
	HRR AR1,V%TYO
	TLZ AR1,600000	
	PUSHJ P,TYOF
	POP P,AR1
TYO6A:	MOVEI T,(AR1)
	CAIE T,TRUTH
	 JRST TYO6B
	HRR AR1,V%TYO		;T MEANS SAME AS VALUE OF TYO,
	SKIPN TTYOFF		; BUT CAN BE SILENCED BY ↑W
TYO6B:	 SKIPGE TYOSW
	  POPJ P,
	JRST TYOF

TYO5:
REPEAT 2, PUSH P,AR1
	HRRZS -1(P)
	TLNN AR1,200000
	 SKIPE TTYOFF
	  JRST TYO2
	HRR AR1,V%TYO
	SKIPG TYOSW
	 PUSHJ P,TYOF
TYO2:	SKIPL TYOSW
TYO2A:  SKIPN AR1,-1(P)
	  JRST TYO4
	HLRZ AR1,(AR1)
	CAIN AR1,TRUTH
	 JRST TYO2Z
	HLL AR1,(P)
	JRST TYO2B
TYO2Z:	HRRZ AR1,V%TYO
	HLL AR1,(P)
	SKIPN TTYOFF
TYO2B:	 PUSHJ P,TYOF
	HRRZ AR1,@-1(P)
	MOVEM AR1,-1(P)
	JRST TYO2A

TYO4:	POP P,AR1		;PRESERVE AR1
	JRST POP1J

TYOARG:	JSP T,FXNV1
IFN SAIL\ITS, TDNN TT,[777777,,770000]	;UP TO 12. BITS OKAY
IFE SAIL\ITS, TDNN TT,[777777,,777400]	;UP TO 8 BITS OKAY
	 JRST (F)
	JRST TYOAGE
;TYOFA TYOFIL TYOF TYOFS1 TYOFS0 TYOF0D TYOF0E TYOF0G TYOF2 TYOFXL TYOFE


;;; TYO ONE CHARACTER TO ONE FILE.  MUST PRESERVE AR1,AR2A
;;;	USER INTERRUPTS LOCKED OUT. (??)
;;;	FILE ARRAY IN AR1.
;;;	READTABLE IN AR2A.
;;;	CHARACTER IN TT (MUST BE PRESERVED).
;;; TYOF HANDLES ALL CHARPOS, LINENUM, AND PAGENUM PROCESSING,
;;; CONTROL CHARACTERS, SAIL MODE OUTPUT, ETC.
;;; ALL CR'S NOT FOLLOWED BY LF'S HAVE LF'S SUPPLIED FOR THEM.
;;; MUST SAVE R FOR PRINT.

TYOFA:	MOVE TT,A
TYOFIL:	.5LKTOPOPJ
TYOF:	TRNN AR1,-1
	 JRST TYOFE
IFN SFA,[
	MOVSI T,AS.SFA		;AN SFA?
	TDNN T,ASAR(AR1)
	 JRST TYOFS0		;NOPE
	PUSHJ FXP,SAV5		;SAVE THE 'WORLD'
	PUSHJ P,SAVX5
	SKIPGE TT		   ;DO A CONVERSION ON FORMAT INFO
	 MOVNI TT,(TT)
	JSP T,FXCONS		;CONS UP A FIXNUM
	HLLZ T,AR1		;HAS THIS SFA BEEN HACKED AT A HIGHER LEVEL?
	TLZ T,600000		;BITS NOT OF INTEREST TO THE SFA
	MOVEI TT,SR.WOM
	TDNE T,@TTSAR(AR1)	;CHECK THE OPERATIONS MASK
	 JRST TYOFS1		;ALRADY DONE IT, SO RETURN
	HRRZS INHIBI		;REALLY DIDN'T WANT THAT .5LKTOPOPJ
	MOVEI C,(A)		;AS THE ARGUMENT TO THE SFA
	MOVEI B,Q%TYO		;A TYO OPERATION
	MOVEI A,(AR1)		;THE SFA ITSELF
	PUSHJ P,ISTCSH		;DO SHORT INTERNAL SFA CALL
TYOFS1:	PUSHJ FXP,RST5
	JRST RSTX5		;RESTORE ACS AND RETURN
TYOFS0:	]	;END IFN SFA
	MOVE T,TTSAR(AR1)
	JUMPL TT,TYOF7		;NEGATIVE => FORMAT INFO
	SKIPGE ATO.LC(T)
	 PUSHJ P,TYOFXL
IT%	CAIN TT,177		;RUBOUT HAS NO PRINT WIDTH
IT%	 JRST TYOF4
	CAIN TT,7		;<BELL> HAS NO PRINT WIDTH
	 JRST TYOF0G
IT$	CAIE TT,177		;ITS RUBOUT PRINTS AS TWO CHARACTERS
	 CAIGE TT,40		;CONTROL CHARACTERS HAVE WIDTH
	  JRST TYOF2		; OF 1 OR 2, OR ELSE ARE FUNNY
TYOF0D:	AOS D,AT.CHS(T)		;INCREMENT CHARPOS
	SKIPE ATO.LC(T)		;SKIP UNLESS LAST CHAR WAS /
	 JRST TYOF0G
	SKIPLE FO.LNL(T)	;ZERO OR NEGATIVE LINEL => INFINITY
	 TLNE T,TTS<IM>		.SEE STERPRI
	  JRST TYOF0E		;FOR IMAGE OUTPUT, NO EXTRA CHARS
	CAMLE D,FO.LNL(T)
	 SKIPE V%TERPRI
	  JRST TYOF0E
	HRLM TT,(P)		;NEW LINE NEEDED BEFORE THIS CHAR
	MOVEI TT,↑M		;BECAUSE OF AUTO-TERPRI
	PUSHJ P,TYOF4
	PUSHJ P,TYOFXL
	MOVEI TT,1
	MOVEM TT,AT.CHS(T)		;SO THIS CHAR WILL BE AT CHARPOS 1
	HLRZ TT,(P)
TYOF0E:	MOVE D,@TTSAR(AR2A)		;GET READTABLE ENTRY FOR THIS
	TLNE D,2000	.SEE SYNTAX	;IF THIS IS A /, SET FLAG
	 HLLOS ATO.LC(T)		; FOR NEXT TIME AROUND
	JRST TYOF4

TYOF0G:	SETZM ATO.LC(T)		;RESET / FLAG
	JRST TYOF4		;OUTPUT CHAR, IGNORING LINEL

TYOF2:	CAIG TT,↑M		;FOUND CONTROL CHAR
	 CAIGE TT,↑H
	  JRST TYOF3		;REGULAR CONTROL CHAR
	JRST @.+1-↑H(TT)	;FORMAT EFFECTOR - PECULIAR
		TYOFBS		;↑H	BACKSPACE
		TYOFTB		;↑I	TAB
		TYOFLF		;↑J	LINE FEED
		TYOF3		;↑K	<NOT REALLY FORMAT CHAR>
		TYOFFF		;↑L	FORM FEED
		TYOFCR		;↑M	CARRIAGE RETURN

TYOFXL:	SETZM ATO.LC(T)		;LINE FEED NEEDED BEFORE THIS CHAR
	CAIE TT,↑J		;FORGET IT IF THIS CHAR IS LF
	 TLNE T,TTS<IM>		;DON'T GENERATE LF FOR IMAGE FILE
	  POPJ P,
	HRLM TT,(P)
	MOVEI TT,↑J
	PUSHJ P,TYOFLF
	HLRZ TT,(P)
	POPJ P,

TYOFE:	EXCH A,AR1
	%WTA [SIXBIT \NOT A FILE - TYO!\]

;TYOF3 TYOFBS TYOFTB TYOFLF TYOFFF TYOF7 TYOFCR

TYOF3:	CAIN TT,33		;ALTMODES ARE ALWAYS 1 WIDE
	 JRST TYOF0D
	MOVE D,F.MODE(T)	;RANDOM CONTROL CHAR
IFE SAIL,[
IT$	CAIE TT,177		;RUBOUT PRINTS TWO POSITIONS EVEN IN SAIL MODE
	 TLNN D,FBT<SA>		;SKIP IF SAIL MODE FILE
	  AOS AT.CHS(T)		;OTHERWISE CONTROL CHARS ARE 2 WIDE
]	;END OF IFE SAIL
	JRST TYOF0D

TYOFBS:	SKIPLE AT.CHS(T)	;BACKSPACE - UNLESS AGAINST LEFT MARGIN,
	 SOS AT.CHS(T)		; DECREMENT CHARPOS
	SETZM ATO.LC(T)		;CLEAR / FLAG
	JRST TYOF4

TYOFTB:	MOVEI D,7		;TAB FOUND - JUMP TO NEXT
	IORM D,AT.CHS(T)	;MULTIPLE-OF-8 CHARPOS
	JRST TYOF0D

TYOFLF:	AOS D,AT.LNN(T)		;INCREMENT LINENUM
	SKIPLE FO.PGL(T)	;ZERO PAGEL => INFINITY
	 CAMGE D,FO.PGL(T)	;SKIP IF OVER PAGE LENGTH
	  JRST TYOF4
TYOFFF:	SETZM AT.LNN(T)		;ZERO LINE NUMBER
	AOS AT.PGN(T)		;INCREMENT PAGE NUMBER
	TLNN T,TTS.TY		;IF TTY THEN DON'T GIVE END PAGE INT ON ↑L
	 SKIPN FO.EOP(T)	;IF IT HAS AN ENDPAGEFN, THEN
	  JRST TYOF4		; WANT TO GIVE USER INTERRUPT
	PUSHJ P,TYOF4
	MOVEI D,200000+2*FO.EOP+1
	HRLI D,(AR1)
	JRST UINT

TYOF7:	SKIPLE FO.LNL(T)	;INFINITE LINEL
	 TLNE T,TTS<IM>		; OR IMAGE MODE TTY
	  POPJ P,		; => IGNORE FORMAT DATA
	SKIPN V%TERPRI
	SKIPN AT.CHS(T)		;CAN'T DO ANY BETTER THAN TO BE
	 POPJ P,		; AT THE BEGINNING OF A LINE
	MOVEI D,(TT)
	ADD D,AT.CHS(T)
	CAMG D,FO.LNL(T)
	 POPJ P,
	SETZM AT.CHS(T)
	PUSH FXP,TT
	MOVEI TT,↑M		;IF TOO LONG, DO AN AUTO-TERPRI
	PUSHJ P,TYOFCR
	POP FXP,TT
	POPJ P,

TYOFCR:	SETZM AT.CHS(T)		;CR - SET CHARPOS TO ZERO
	PUSHJ P,TYOF4
	SETOM ATO.LC(T)		;SET LF FLAG (MUSTN'T DO UNTIL AFTER IOT
	POPJ P,			; OF CR BECAUSE A **MORE** MIGHT OCCUR)
;TYOF4 TYOF6 TYOF4A TYOXCT C$ INTTYR TYOF5 TYOF5Y TYOF4C TYOF4J

TYOF4:				.SEE PTYO
IT$	TLNE T,TTS.TY
IT$	 JRST TYOF4C
TYOF6:
TYOF4A:	SKIPL F.MODE(T)		.SEE FBT.CM
	 JRST TYOF5
IFN ITS,[
	MOVE D,F.CHAN(T)	;CHARMODE (UNIT MODE)
	LSH D,27		;TYI USES THIS CODE TOO (SAVES F)
	IOR D,[.IOT TT]
   SPECPRO INTTYX
TYOXCT:	XCT D
   NOPRO
]		;END OF IFN ITS
IFN D10,[
SA$	 OUTCHR TT
IFE SAIL,[
	TLNE T,TTS.IM
	 TLNN T,TTS.TY
	  JRST .+3
	   IONEOU TT		;DO THIS IF IMAGE MODE TTY
	   JRST .+5
	CAIE TT,33		;NON-SAIL MONITORS LOSE ALTMODES
	 OUTCHR TT
	CAIN TT,33		;FOR THEM, WE OUTPUT ALTMODE AS $
	 OUTCHR C$		; (ON THE TTY ONLY!)
]		;END OF IFE SAIL
]		;END OF IFN D10
IFN D20,[
	PUSHJ FXP,SAV2
	HRRZ 1,F.JFN(T)
	MOVEI 2,(TT)
	BOUT			;OUTPUT THE BYTE
	 ERJMP OIOERR
	PUSHJ FXP,RST2
]		;END OF IFN D20
	AOS F.FPOS(T)		;ADJUST FILE POSITION (DOESN'T HURT IF F.FLEN NEG)
C$:	POPJ P,"$

INTTYR:	HRROS INHIBIT		.SEE $IWAIT	;COME HERE AFTER INTERRUPT
	MOVE T,TTSAR(AR1)	;FILE ARRAY MAY HAVE MOVED
	POPJ P,			.SEE TYIXCT TYICAL

TYOF5:				;BLOCK MODE
IFN ITS+D20,[
	IDPB TT,FB.BP(T)	;PUT BYTE IN BUFFER
	SOSLE FB.CNT(T)		;DECREMENT COUNT
]		;END OF IFN ITS+D20
IFN D10,[
	MOVE D,FB.HED(T)	;FOR D10, BYTE POINTER AND COUNT ARE IN BUFFER HEADER
	IDPB TT,1(D)		;PUT BYTE IN BUFFER
	SOSLE 2(D)		;DECREMENT COUNT
]		;END OF IFN D10
	 POPJ P,
	HRLM TT,(P)
	MOVE TT,T
	PUSH FXP,F
	PUSHJ P,IFORCE
	POP FXP,F
	HLRZ TT,(P)
TYOF5Y:	MOVE T,TTSAR(AR1)
	POPJ P,

IFN ITS,[
TYOF4C:	TLNN T,TTS.IM		;DO NOT HACK THIS FOR IMAGE MODE
	 CAIE TT,↑P		;↑P IS THE DISPLAY ESCAPE CODE, AND
	  JRST TYOF4A		; MUST BE TREATED SPECIALLY
	SKIPGE F.MODE(T)	.SEE FBT.CM
	 JRST TYOF4J
	MOVE TT,FB.CNT(T)	;FOR BLOCK MODE, BE CAREFUL
	PUSH FXP,F
	CAIGE T,2		; ABOUT SPLITTING A ↑P-CODE
	 PUSHJ P,IFORCE		; ACROSS A BLOCK BOUNDARY
	POP FXP,F
TYOF4J:	MOVE T,TTSAR(AR1)	;OUTPUT ↑P AS ↑P P
	MOVEI TT,↑P
	PUSHJ P,TYOF4A
	MOVE T,TTSAR(AR1)
	MOVEI TT,"P
	PUSHJ P,TYOF4A
	JRST TYOF5Y
]		;END OF IFN ITS

;%TERPRI TRP$ TERPRI TERP1 ITERPRI PTYO PTYO1 PTYO3 PTYO2

SUBTTL	TERPRI AND PTYO FUNCTIONS


%TERPRI:
	JUMPN T,.+3
	PUSH P,R70
	MOVNI T,1
	PUSH P,(P)		;EVEN THOUGH LSUBR (0 . 1)
	SOS T			;PRETEND TO BE (1 . 2) FOR PRNARG'S SAKE
	JSP F,PRNARG		;PRNARG MAY DO A POPJ FOR US - BEWARE!
SFA%	   400000,,[Q%TERPRI]	;BIT 4.9 => RETURN VALUE IS NIL
SFA$	   400000,,[SO.TRP,,Q%TERPRI]	;BIT 4.9 => RETURN VALUE IS NIL
	JRST TERP1

TRP$:	JSP F,PRNAR$
SFA%	   400000,,[QTRP$]
SFA$	   400000,,[SO.TRP,,QTRP$]
	JRST TERP1

TERPRI:	SKIPE AR1,TAPWRT	;1/4-INTERNAL TERPRI
	 HRRZ AR1,VOUTFILES
SFA$	JSP F,PRTSTR		;DO SFA CHECKING STUFF
SFA$	[SO.TRP,,]
TERP1:	JSP T,GTRDTB		;SEMI-INTERNAL TERPRI
	MOVEI A,NIL
ITERPRI:
	PUSH P,A		;INTERNAL TERPRI - SAVES A,B,C
	MOVEI TT,↑M		;MUST HAVE FILE ARRAY IN AR1,
	PUSHJ P,TYO6		; READTABLE IN AR2A
	MOVEI TT,↑J
	PUSHJ P,TYO6
	JRST POPAJ

PTYO:	SKIPE V.RSET		; +TYO: SUBR 2
	 JRST PTYO2
PTYO1:	MOVE TT,(A)		;FIRST ARG IS ASCII VALUE
	CAIN B,TRUTH		;IF T
	 MOVE B,V%TYO
IFN SFA,[
	MOVSI T,AS.SFA		;CHECK IF AN SFA
	TDNE T,ASAR(B)		;SFA BIT SET IN ASAR?
	 JRST PTYO3		;YUP, CALL AS AN SFA
]		;END IFN SFA
	.5LKTOPOPJ
	MOVE T,TTSAR(B)		;SECOND ARG IS FILE
	MOVEI A,TRUTH		;RETURNS T
	JRST TYOF4

IFN SFA,[
PTYO3:	MOVEI C,(A)		;THIRD ARG IS THE FIXNUM
	MOVEI A,(B)		;FIRST ARG IS SFA ITSELF
	MOVEI B,Q%TYO		;TYO OPERATION
	JRST ISTCSH		;DO FAST INTERNAL CALL
]		;END IFN SFA

PTYO2:
IFN SFA,[
	JSP TT,AFOSP		;CHECK FOR AN SFA
	 JFCL
	 SKIPA			;NOPE
	  JRST PTYO3		;YUP, SO CALL IT
]		;END IFN SFA
	JSP T,FXNV1
	MOVEI AR1,(B)
	PUSHJ P,ATOFOK
	UNLOCKI			;MARGINAL DANGER THAT FILE COULD
	JRST PTYO1		; GET SCEWED BY INTERRUPT HERE

;PRINT %PRO PRINTOBJECT %PRO3 %PROX %PRINT $PRINT CTY1 CTY2 PRIN1B PRIN1 %PRIN1 %PR1 $PRIN1 %PR1A PRINC %PRINC %PRC $PRINC X X

SUBTTL	PRINT, PRIN1, PRINC, PRINT-OBJECT

PRINT:	SKIPE AR1,TAPWRT	;INTERNAL "SUBR" VERSION OF PRINT
	 MOVE AR1,VOUTFILES
SFA$	JSP F,PRTSTR		;DO SFA CHECKING STUFF
SFA$	[SO.PRT,,]
	JRST $PRINT

IFN HNKLOG,[
%PRO:				;PRINT-OBJECT SUBR (4 . 5)
PRINTOBJECT:
	JSP TT,LWNACK		;Check number of arguments
	  LA45,,Q%PRO
	CAMN T,IN0-5		;5 arguments?
	  POP P,AR1		;  Ignore it for LISPM compatability
	POP P,B			;STREAM
	POP P,AR1		;SLASHIFY-P
	POP P,C			;I-PRINLEVEL
	POP P,A			;Object
	PUSH P,[TRUE]		;Arrange to return T
	PUSH P,C		;Save these two values
	PUSH P,AR1		;From PRNARG harm and the GC
	PUSH FXP,P		;Remember our stack pointer
	PUSH P,A		;Now pretend we're a standard LSUBR (1 . 2)
	PUSH P,B
	MOVNI T,2		;Called with 2 args
	JSP F,PRNARG
SFA%	  JFCL [Q%PRO]
SFA$	  JFCL [SO.OUT,,Q%PRO]
	MOVE R,[PR.ATR,,$TYO]	;AR1 SHOULD BE SET UP BEFORE COMING HERE
	POP FXP,P		;Flush cruft PRNARG pushed
	MOVEI D,%PRO3		;Come back to %PRO3 after checking PRINLEVEL
	SKIPE V%TERPRI
	 TLZ R,PR.ATR		;TERPRI NON-NIL => NEVER AUTO-TERPRI
	JRST PRINT0

%PRO3:	POP P,A
	POP P,TT		;SLASHIFY-P
	SKIPN TT		;Is this really PRINC
	  TLO R,PR.PRC		;  Note the fact
	POP P,TT		;I-PRINLEVEL
	MOVE TT,(TT)
	MOVEM TT,PRINLV

	PUSH P,A
	JRST PRINT1		;Print it as if called by PRIN1
%PROX:

] ; END of IFN HNKLOG,

%PRINT:	 JSP F,PRNARG		;LSUBR (1 . 2)
SFA%	  JFCL [Q%PRINT]
SFA$	  JFCL [SO.PRT,,Q%PRINT]
$PRINT:	JSP T,GTRDTB		;AR1 SHOULD BE SET UP BEFORE COMING HERE
	PUSHJ P,ITERPRI
CTY1:	PUSHJ P,$PRIN1
CTY2:	%SPC%
	POPJ P,

PRIN1B:	MOVE A,B
PRIN1:	SKIPE AR1,TAPWRT	;INTERNAL "SUBR" VERSION OF PRIN1
	 MOVE AR1,VOUTFILES
SFA$	JSP F,PRTSTR
SFA$	[SO.PR1,,]
	JRST $PRIN1
%PRIN1:	
%PR1:	 JSP F,PRNARG		;LSUBR (1 . 2)
SFA%	  JFCL [Q%PR1]
SFA$	  JFCL [SO.PR1,,Q%PR1]
$PRIN1:	MOVE R,[PR.ATR,,$TYO]	;AR1 SHOULD BE SET UP BEFORE COMING HERE
%PR1A:	JSP T,GTRDTB
	PUSHJ P,PRINTY
	JRST TRUE

PRINC:	SKIPE AR1,TAPWRT	;INTERNAL "SUBR" VERSION OF PRINC
	 MOVE AR1,VOUTFILES
SFA$	JSP F,PRTSTR
SFA$	[SO.PRC,,]
	JRST $PRINC
%PRINC:	
%PRC:	JSP F,PRNARG		;LSUBR (1 . 2)
SFA%	  JFCL [Q%PRC]
SFA$	  JFCL [SO.PRC,,Q%PRC]
$PRINC:	MOVE R,[PR.PRC,,$TYO]	;AR1 SHOULD BE SET UP BEFORE COMING HERE
	JRST %PR1A

;;;	SUBR VERSIONS - *PRINT, *PRIN1, *PRINC 
IFE SFA,[
IRPS X,,[PRT$:PR1$:PRC$:]Y,,[$PRINT,$PRIN1,$PRINC]
X:	JSP F,PRNAR$
		[Q!X]

	JRST Y
TERMIN
]		;END IFE SFA

IFN SFA,[
IRPS X,,[PRT$:PR1$:PRC$:]Y,,[$PRINT,$PRIN1,$PRINC]Z,,[SO.PRT,SO.PR1,SO.PRC]
X:	JSP F,PRNAR$
		[Z,,Q!X]
	JRST Y
TERMIN
]		;END IFN SFA

;PR.PRC PR.ATR PR.NUM PR.NVB PR.EFC PR.NLS PRINTY PRINTF PRINTA PRINT3 PRINT4 PRINH6 PRIN7A PRIN8A

SUBTTL	MAIN PRINTOUT ROUTINE

;;; ***** OKAY, OUTPUT LOVERS, HERE'S YOUR MAIN PRINT ROUTINE *****

;;; CALLED WITH OBJECT TO PRINT IN A, ADDRESS OF "TYO" ROUTINE IN R.
;;; CLOBBERS A (RETURNS GARBAGE); TO SAVE A OVER PRINTY, USE APRINT.
;;; VARIOUS BITS ARE KEPT IN THE LEFT HALF OF R.
;;; SOME ARE PASSED IN, AND OTHERS ARE INITIALIZED AND USED INTERNALLY.
PR.PRC==400000		;MUST BE SIGN BIT! 0 => PRIN1, 1 => PRINC. (PASSED IN)
PR.ATR==200000		;1 => DO AUTO-TERPRI HACKS
PR.NUM==4000		;SYMBOL LOOKS LIKE A NUMBER SO FAR
PR.NVB==2000		;NOT PROVEN YET THAT VERTICAL BAR NEEDED
PR.EFC==1000		;EMBEDDED FUNNY CHARACTER IN SYMBOL FLAG (1 => NONE SEEN)
PR.NLS==400		;NOT PROVEN YET THAT LEADING SLASH NEEDED
;;; PRINTA EXPECTS B,C,T,TT,R SAFE OVER THE "TYO" ROUTINE.
;;; THE "TYO" ROUTINE GENERALLY EXPECTS AR1 AND AR2A SAFE OVER PRINTA.
;;; USES DIRECTLY OR INDIRECTLY A,B,C,T,TT,D,R,F.
;;; IN THE USELESS VERSION OF LISP, THERE ARE ABBREVIATION HACKS:
;;; PRINTY IS THE ENTRY FOR PRIN1/PRINC; ABBREVIATION IS CONTROLLED
;;; BY BIT 1.1 OF (STATUS ABBREVIATE). TYOSW INDICATES WHETHER
;;; A CHAR IS MEANT FOR TTY, FILES, OR BOTH (IN THIS WAY THE TTY
;;; CAN RECEIVE ABBREVIATIONS WHILE FILES RECEIVE FULL S-EXPRS).
;;; PRINTF IS THE ENTRY FOR FLATSIZE/EXPLODE; ABBREVIATION IS
;;; CONTROLLED BY BIT 1.2 OF (STATUS ABBREVIATE).
;;; PRINTA IS THE ENTRY FOR ALL OTHER PRINT HACKERS; IT
;;; NEVER ABBREVIATES.

IFE USELESS,[
PRINTY:	SKIPE V%TERPRI		;TERPRI NON-NIL => NEVER AUTO-TERPRI
PRINTF:			;ENTRY FOR FLATSIZE/EXPLODE
PRINTA:  TLZ R,PR.ATR	;OTHER GUYS DON'T WANT AUTO-TERPRI HACKS
PRINT3:	PUSH P,A	;MAIN RECURSIVE ENTRY FOR PRINTING
	ROT A,-SEGLOG	;NOTE THAT A IS SAFE ON PDL
 	SKIPL TT,ST(A)	;MUST DO A ROT, NOT LSH! SEE PRINX
	 JRST PRINX
	%LPAR%		;PRINT A LIST. FIRST TYO A (
PRINT4:	HLRZ A,@(P)
IFN HNKLOG,[
	TLNE TT,HNK
	 JRST PRINH0
PRINH6:
]		;END OF IFN HNKLOG
	PUSHJ P,PRINT3	;NOW PRINT CAR OF THE LIST
	HRRZ A,@(P)
	JUMPE A,PRIN8A	;IF CDR IS NIL, NEED ONLY A )
PRIN7A:	MOVEM A,(P)
	%SPC%		;ELSE SPACE IN BETWEEN
	LSH A,-SEGLOG	;WE KNOW A IS NON-NIL!
 	SKIPGE TT,ST(A)
	 JRST PRINT4	;IF CDR IS NON-ATOMIC, LOOP
	%DOT%		;ELSE DOTTED LIST
	%SPC%
	PUSHJ P,PRIN1A	;SO PRINT THE ATOM AFTER THE LISP DOT
PRIN8A:	%RPAR%		;NOW TYO A )
	JRST POP1J
]		;END OF IFE USELESS

;PRINTY PRINTF APRINT PRINTA PRINT0 PRIN0A PRINT1 PRIN1Q PRINT2

IFN USELESS,[

PRINTY:	MOVEI D,PRINT1		;ENTRY FOR PRIN1/PRINC
	SKIPE V%TERPRI
	 TLZ R,PR.ATR		;TERPRI NON-NIL => NEVER AUTO-TERPRI
	JRST PRINT0

PRINTF:	MOVEI D,PRINT2		;ENTRY FOR FLATSIZE/EXPLODE
	TLZ R,PR.ATR
	JRST PRINT0

APRINT:	PUSH P,A
	PUSH P,CPOPAJ
PRINTA:	MOVEI D,PRIN3A	;ENTRY FOR NO ABBREVIATIONS
	TLZ R,PR.ATR
PRINT0:	PUSH P,A	;CLOBBERS ARG (RETURNS GARBAGE)
	SKIPN V.RSET	;IF IN *RSET MODE, CHECK VALUES OF
	 JRST PRIN0A	; PRINLEVEL AND PRINLENGTH
IRP X,,[%LEVEL,%LENGTH]Y,,[%LV,%LN]
Y!CHK:	SKIPN A,V!X	;NIL IS A VALID VALUE
	 JRST PRT!Y
	SKOTT A,FX
	 JRST Y!ERR
	SKIPGE (A)
	 JRST Y!ERR
PRT!Y:
TERMIN
PRIN0A:	SETOM PRINLV	;PRINLV HAS <ACTUAL PRINT LEVEL>-1
	SETZM ABBRSW	;ASSUME ABBRSW ZERO
	JSP T,RSXST
	MOVEI A,LRCT-2	;GET (STATUS ABBREVIATE)
NW%	HRRZ T,@RSXTB
NW$	LDB T,[001120,,RSXTB]	;PICK UP CHTRAN
	HRRZ A,(P)	;MUST LEAVE ARG IN A FOR PRINT3, %PRO3
	SETZM PRPRCT
	JRST (D)	;DISPATCH TO PRINT1, PRINT2, PRINT3, %PRO3

PRINT1:	SETOM ABBRSW	;PRIN1/PRINC
	 SKIPE TAPWRT	;OPEN FILES? WHETHER OR NOT TO ABBREVIATE THEM
	  JRST PRIN1Q
	SKIPN TTYOFF	;IF NO FILES OPEN, THEN ABBREVIATE FOR TTY
	 JRST PRIN3A
PRIN1Q:	TRNN T,1	;ULTIMATE DECISION ON FILE ABBREVIATION
	 HRRZS ABBRSW	; COMES FROM (STATUS ABBREVIATE)
	JRST PRIN3A

PRINT2:	TRNE T,2	;FLATSIZE/EXPLODE - DECIDE WHETHER IT
	 SETOM ABBRSW	; WANTS ABBREVIATION OR NOT
	JRST PRIN3A
;PRINT3 PRIN3A FLTHNK SENDFL SENDPR SENDP1 SNDPR0 PRN3NH PRIN3F PRINT4 PRINT5 PRINT6 PRINT7 PRINH6 PRIN7A PRIN7B PRINT8 PRIN8A PRINT9

PRINT3:	PUSH P,A	;MAIN RECURSIVE ENTRY FOR PRINTING
PRIN3A:	ROT A,-SEGLOG	;NOT LSH! SEE PRINX
	SKIPL TT,ST(A)
	 JRST PRINX	;IF SO, USE AN ATOM PRINTER
IFN HNKLOG,[
	TLNN TT,HNK	;Is this a hunk?
	  JRST PRN3NH	;  Nope...
	PUSH FXP,PRPRCT
	PUSH FXP,FLAT1	;If for some totally random reason it called FLATSIZE..
	MOVE A,(P)
	PUSH P,TT 	;TT get's used WAY WAY below!
	PUSHJ P,USRHNP	;Is this a user hunk?
	POP P,TT
	POP FXP,FLAT1
	POP FXP,PRPRCT
	JUMPE T,PRN3NH	;If not, just print an ordinary hunk
	MOVEI T,FLAT2
	MOVEI B,FLATO2
	CAIE B,(R)	;Is this really a FLATSIZE hack?
	  CAIN T,(R)
	    JRST FLTHNK	;  Yes, just get the FLATSIZE and add it in
	MOVEI B,TRUTH	;Say this comes from PRINT
	PUSH FXP,PRINLV ;Don't let calls to FLATSIZE screw us!
	PUSHJ P,SENDFL	;Send the message to the frob
	POP FXP,PRINLV
	MOVE T,(A)	;Get the size
	PUSHJ P,PRINLP	;print all necessary lparens
	MOVE A,(P)	;Recover the object
	PUSHJ P,SENDPR	;Send it to the frob
	JRST POP1J

FLTHNK:	SETZ T,
	PUSHJ P,PRINLP	;Be sure to get any needed parens out there
	PUSH FXP,FLAT1	;Remember how much we got so far
	MOVEI A,FLATO2	;For test
	SETZ B,		;We are really comming from FLATSIZE
	CAIN A,(R)	;Is this from FLATSIZE-OBJECT with PRINTP T?
	  MOVEI B,TRUTH	;  Yes, we're really a recursive call from PRINT
	MOVE A,(P)	;Recover our object from the stack
	PUSHJ P,SENDFL	;Send the message to the frob
	MOVE TT,(A)	;Get the result
	POP FXP,FLAT1	;Recover flatsize-so-far
	ADDM TT,FLAT1	;and add them up
	JRST POP1J

SENDFL:	PUSH P,AR1
	MOVE AR1,B		;Get whether from PRINT
	MOVEI B,QFLATSIZE
	JRST SENDP1

SENDPR:	PUSH P,AR1
	MOVEI B,Q%PRINT
SENDP1:	SAVE AR2A R
	PUSH FXP,PRPRCT	;Save pending RPAREN count
	PUSH FXP,PRINLV	;And paren level
	PUSH P,[SNDPR0]	;LSUBR return (I hate this sequence)
	PUSH P,A	;Object
	PUSH P,B	;Message
	MOVEI AR1,(AR1)	;Eliminate flags from left half
	PUSH P,AR1	;stream or printp if FLATSIZE
	MOVEI A,(FXP)	;Fixnum level
	PUSH P,A
	PUSH P,NIL	;No slashification
	MOVEI T,TRUTH
	SKIPL R		;Are we doing PRIN1 instead of PRINC?
	  MOVEM T,(P)	;  Then say to do slashification
	MOVNI T,5
	XCT SENDI	;Ask the SEND interpreter
SNDPR0:	POP FXP,PRINLV
	POP FXP,PRPRCT
	RSTR R AR2A AR1
	POPJ P,

PRN3NH:
]; END IFN HNKLOG,

	MOVE T,TYOSW	;Save old value of TYOSW
	HRLM T,-1(P)	; (I.E. that of previous level)
	JUMPN T,PRINT4	;If previous level was non-abbrev,
	SKIPN ABBRSW	; Or if we don't ever want abbrev,
	 JRST PRINT4	; Then needn't try to abbrev!
	AOS T,PRINLV	;Else increment level count
	SKIPE V%LEVEL	;If PRINLEVEL=NIL, or if actual level
	 CAMGE T,@V%LEVEL  ; Is less, then don't abbrev
	  JRST PRINT4
	SKIPL ABBRSW
	 SETOM TYOSW
	CAME T,@V%LEVEL	;If we're exactly equal to PRINLEVEL,
	 JRST PRIN3F
	MOVEI T,1
	PUSHJ P,PRINLP
	%NMBR%		; SHOOT OUT LEVEL ABBREVIATION
PRIN3F:	SKIPGE ABBRSW	;IF WE ONLY WANT ABBREVIATION,
	 JRST PRINT9	; NEEDN'T GROVEL OVER THE SUBLIST
	HRRZS TYOSW	;ELSE SIGNAL NON-ABBREV ONLY MODE
PRINT4:	PUSH FXP,PRPRCT	;SAVE PARENS COUNTS
	HLLOS PRPRCT	;CLEAR RIGHT PARENS COUNT, AND
	AOS PRPRCT	; INCREMENT LEFT PARENS COUNT
	PUSH FXP,XC-1	;<ACTUAL PRINT LENGTH>-1 FOR THIS LEVEL
	MOVE T,TYOSW	;SAVE CURRENT TYOSW (DETERMINES WHETHER
	HRLM T,(P)	; ABBREV MODE OUTPUT WANTS A ) AT END)
PRINT5:	SKIPN TYOSW	;IF WE ARE IN NON-ABBREV ONLY MODE,
	 SKIPN ABBRSW	; OR IF WE NEVER WANT ABBREV,
	  JRST PRINT7	; THEN DON'T TRY TO ABBREV!
	AOS T,(FXP)	;ELSE INCREMENT PRINT LENGTH
	SKIPE V%LENGTH	;IF PRINLENGTH=NIL, OR IF WE'RE LESS
	 CAMGE T,@V%LENGTH	; THAN IT, THEN DON'T ABBREV
	  JRST PRINT7
	SKIPL ABBRSW
	 SETOM TYOSW
	CAME T,@V%LENGTH
	 JRST PRINT6	;IF WE'RE EXACTLY EQUAL, THEN ABBREV
	MOVEI T,3
	PUSHJ P,PRINLP
REPEAT 3, %DOT%
PRINT6:	SKIPGE ABBRSW	;IF WE DON'T WANT NON-ABBREV ONLY MODE,
	 JRST PRINT8	; THEN CAN IGNORE REST OF LIST
	HRRZS TYOSW	;ELSE SIGNAL NON-ABBREV ONLY MODE
PRINT7:	HRRZ A,(P)
	HRRZ B,(A)
	HLRZ A,(A)
	HRRZ T,-1(FXP)
	ADDI T,1
	SKIPN B
	 HRRM T,PRPRCT
IFN HNKLOG,[
	TLNE TT,HNK
	 JRST PRINH0
PRINH6:
]		;END OF IFN HNKLOG
	PUSHJ P,PRINT3	;SO PRINT THE CAR OF THE LIST
	SETZM PRPRCT
	HRRZ A,(P)
	HRRZ A,(A)
	JUMPE A,PRINT8	;IF CDR IS NIL, NEED ONLY A ) NOW
PRIN7A:	HRRM A,(P)
	%SPC%		;ELSE SPACE BETWEEN
	LSH A,-SEGLOG
	SKIPL TT,ST(A)
	 JRST PRIN7B		; IF AN ATOM, THEN NEED A DOT
	TLNN TT,HNK		; IF NOT A HUNK, THEN A CDR WHICH IS A LIST,
	 JRST PRINT5		;  SO LOOP.  ELSE, WE HAVE A DOTTED LIST
PRIN7B:	%DOT%
	%SPC%
	HRRZ T,-1(FXP)
	ADDI T,1
	MOVEM T,PRPRCT
	HRRZ A,(P)      ;SET UP A WITH CDR-OBJECT TO PRINT (HUNK OR ATOM)
	PUSHJ P,PRINT3	;JUMP TO GENERAL RECURSIVE PRINTER
PRINT8:	HLRZ T,(P)	;THIS WILL TELL TYO WHAT TO
	MOVEM T,TYOSW	; DO WITH THE )
PRIN8A:	%RPAR%		;TYO A ) TO END THE LIST

IFE USELESS, PRIN8B:	;A normally useless symbol

	SUB FXP,R70+1
	POP FXP,PRPRCT
PRINT9:	HLRZ T,-1(P)	;RESTORE TYOSW TO WHAT IT WAS
	MOVEM T,TYOSW	; ON LAST (RECURSIVE!) ENTRY
	JUMPN T,POP1J	;IF AND ONLY IF WE AOS'ED PRINLV,
	SKIPE ABBRSW	; WE MUST NOW SOS IT, AND THEN POP1J
	 SOS PRINLV
	JRST POP1J
]		;END OF IFN USELESS
;PRINH0 PRINH8 PRINH2 PRHN2B PRINH3 PRHN3A PRHN3B

SUBTTL	PRINT A HUNK

IFN HNKLOG,[

PRINH0:	SKIPN VHUNKP			;IF HUNKP IS NIL, THEN PRINT A HUNK
	 JRST PRINH6			; AS IF IT WERE A LIST CELL

IFE USELESS,[
	PUSHJ P,USRHNP		;Is this a user's extended hunk?
	JUMPE T,PRINH8

	PUSHJ P,SENDPR
	JRST PRIN8B

PRINH8:
]; -- END of IFE USELESS,

	HRRZS TT		   ;Flush left half
	CAIN TT,QHUNK0
	 CAIE A,-1
	  JRST .+2
	   JRST PRHN3B
	PUSH FXP,TT
	PUSHJ P,PRINT3			;PRINT FIRST ELT
IFN USELESS,	SETZM PRPRCT
	POP FXP,TT
	MOVSI T,-1
   2DIF [LSH T,(TT)]0,QHUNK0
	HRR T,(P)
	ADD T,R70+1
	JUMPGE T,PRHN3A			;"HUNK2" CASE, WITH 2 ELEMENTS
	PUSH P,T
PRINH2:	MOVEM T,(P)
PRHN2B:	HRRZ A,(P)
	HRRZ A,(A)
	CAIN A,-1
	 JRST PRINH3
	%SPC%
	%DOT%
	%SPC%
	PUSHJ P,PRINT3
	HRRZ A,(P)
	HLRZ A,(A)
	CAIN A,-1
	 JRST PRINH3
	%SPC%
	%DOT%
	%SPC%
	PUSHJ P,PRINT3
	MOVE T,(P)
	AOBJN T,PRINH2
PRINH3:	SUB P,R70+1		;FINISHED WITH HUNK (EXCEPT FOR CDR)
PRHN3A:	%SPC%
	%DOT%
	%SPC%
PRHN3B:	HRRZ A,(P)
	HRRZ A,(A)
	PUSHJ P,PRINT3
	%SPC%
	%DOT%
	JRST PRIN8A


]		;END OF IFN HNKLOG
;PRINX PRIN1A PRIN1Z PRINA1 PRINA2 PRINA3 PRINA4 PRINX5 PRINL4

SUBTTL	PRINT ATOM DISPATCH, AND PRINT AN ARRAY OR A RANDOM

PRINX:	PUSH P,CPOP1J		;PRINT AN ATOM (ON THE PDL)
PRIN1A:				;TT HAS ST ENTRY
	HRRZ A,-1(P)		;NIL IS SYMBOL, NOT RANDOM!!!
	JUMPE A,PRINIL
   2DIF JRST (TT),.,QLIST	.SEE STDISP	;TT MUST HAVE ST ENTRY
PRIN1Z:	JRST PRINI	;FIXNUM
	JRST PRINO	;FLONUM
DB$	JRST PRINDB	;DOUBLE
CX$	JRST PRINCX	;COMPLEX
DX$	JRST PRINDX	;DUPLEX
BG$	JRST PRINB	;BIGNUM
	JRST PRINN	;SYMBOL
HN$  REPEAT HNKLOG+1, .VALUE	;HUNKS
	JFCL		;RANDOM
IFN .-PRIN1Z-NTYPES+2, WARN [WRONG LENGTH TABLE]
IFN USELESS,[
	MOVEI T,25.
	PUSHJ P,PRINLP
	SETZM PRPRCT
]		;END OF IFN USELESS
	%NMBR%		;ARRAY (AND RANDOM)
	TLNN TT,SA
	 JRST PRINX5
	HRRZ A,-1(P)
	MOVE TT,ASAR(A)
	CAIE TT,ADEAD
	 JRST PRINA2
	SKIPA TT,[440700,,[ASCIZ \DEAD-ARRAY\]]
PRINA1:	 PUSHJ P,(R)
	ILDB A,TT
	JUMPN A,PRINA1
	POPJ P,

PRINA2:	TLNE TT,AS<FIL>
	 JRST PRNFL
	TLNE TT,AS<JOB>
	 JRST PRNJB
SFA$	TLNE TT,AS.SFA		;SFA?
SFA$	 JRST PRNSR
	JFFO TT,.+1
	HRRZ A,ARYTYP(D)
	TLC TT,AS<SX>		;CROCK FOR NSTORE ARRAYS
	TLNN TT,AS<SX+GCP>
	 SETZ A,
	PUSHJ P,PRINSY
	%NEG%
	HRRZ A,-1(P)
	LDB F,[TTSDIM,,TTSAR(A)]
PRINA3:	HRRZ A,-1(P)
	MOVNI TT,(F)
	MOVE TT,@TTSAR(A)
IFE USELESS,	MOVE C,@VBASE		;BETTER BE A FIXNUM!
IFN USELESS,[
	HRRZ C,VBASE
	CAIE C,QROMAN
	 SKIPA C,(C)
	  PUSHJ P,PROMAN
]		;END OF IFN USELESS
	   PUSHJ P,PRINI9
	SOJE F,PRINA4
	%CLN%
	JRST PRINA3
PRINA4:	%NEG%
PRINX5:	HRRZ TT,-1(P)
PRINL4:	MOVEI C,10	;N BASE 8
	JRST PRINI3
;PRNSR PRNJB PRNFL PRNF5 PRNF6 PRNJ2 PRNF1 PRNSTO PRNJ1 PRNSR1


SUBTTL	PRINT A FILE OBJECT, PRINT A JOB OBJECT, PRINT AN SFA

;;; PRINT A JOB OBJECT AS #JOB-|<NAME>|-<ADDRESS>
;;; PRINT A FILE OBJECT AS #FILE-<DIR>-|<NAME>|-<ADDRESS>
;;; PRINT AN SFA AS #SFA-|<SFA-PRINTNAME>|-<ADDRESS>
;;; WHERE <DIR> IS "IN" OR "OUT", <NAME> IS THE TRUENAME,
;;; <SFA-PRINTNAME> IS THE THING GIVEN AS THE THIRD ARG TO CREATE-SFA
;;; AND <ADDRESS> IS THE OCTAL ADDRESS OF THE SAR.

IFN SFA,[
PRNSR:	MOVEI T,[ASCIZ \SFA-\]
	JRST PRNF5
]		;END IFN SFA
PRNJB:	MOVEI T,[ASCIZ \JOB-\]
	JRST PRNF5
PRNFL:	MOVEI T,[ASCIZ \FILE-\]
PRNF5:	PUSHJ P,PRNSTO
	HRRZ A,-1(P)
	MOVE TT,ASAR(A)
SFA$	TLNE TT,AS.SFA		;SFA?
SFA$	 JRST PRNSR1		;YES, PRINT DIFFERENTLY
	PUSH FXP,TT
	TLNE TT,AS.JOB		;DON'T PRINT DIR FOR JOB ARRAY
	 JRST PRNF6
	MOVE TT,TTSAR(A)
;FORMERLY, THIS ROUTINE USED PRINSY TO PRINT IN OR OUT.  BUT, SINCE THIS
;ROUTINE CAN BE CALLED FROM THE GARBAGE COLLECTOR, THE POINTERS COULD BE
;MARKED AND THEREFORE INVALID.  TO AVOID PRINTING LOSSAGE, PRINTING IS DONE
;MANUALLY.
	MOVEI T,[ASCII \IN\]	;ASSUME INPUT FILE
	TLNE TT,TTS<IO>
	 MOVEI T,[ASCII \OUT\]
	PUSHJ P,PRNSTO
	%NEG%
PRNF6:	%VBAR%
	POP FXP,T		    ;SAVED ASAR
	MOVNI TT,LPNBUF
	PUSH FXP,PNBUF+LPNBUF(TT)   ;UNFORTUNATELY, SOMEONE MIGHT BE USING 
	AOJL TT,.-1		    ; PNBUF, SO WE MUST SAVE IT
	HRRZ A,-1(P)
	PUSH FXP,R
20$	MOVE TT,TTSAR(A)	;FOR D20 CLOSED FILE NEEDS SPECIAL HANDLING
20$	TLNN TT,TTS.CL		;CLOSED? (ASAR SAVED IN T)
	TLNE T,AS.JOB		;DON'T GET TRUENAME FOR JOB ARRRAYS
	 JRST PRNJ1
	PUSHJ P,TRU6BT		;GET TRUENAME OF FILE ON FXP
PRNJ2:	PUSHJ P,6BTNSL		;CONVERT THAT TO A NAMESTRING IN PNBUF
	POP FXP,R
	MOVEI TT,-LPNBUF+1(FXP)
	MOVSI T,-LPNBUF
PRNF1:	MOVE D,PNBUF(T)		;SWAP PNBUF WITH COPY ON PDL
	EXCH D,(TT)
	MOVEM D,PNBUF(T)
	ADDI TT,1
	AOBJN T,PRNF1
	MOVEI T,-LPNBUF+1(FXP)
	PUSHN FXP,1			;BE SURE STRING ENDS WITH ZEROS
	PUSHJ P,PRNSTO
	POPI FXP,LPNBUF+1		;POP THE CRUD
	%VBAR%
	JRST PRINA4

PRNSTO:	HRLI T,440700
	ILDB A,T
	JUMPE A,CPOPJ
	PUSHJ P,(R)
	JRST .-3

PRNJ1:	HRRZ TT,TTSAR(A)
	HRLI TT,-L.F6BT
20%	PUSH FXP,F.RDEV(TT)
20$	PUSH FXP,F.DEV(TT)
	AOBJN TT,.-1
	JRST PRNJ2
IFN SFA,[
PRNSR1:	%VBAR%
	MOVEI TT,SR.PNA		;GET THE PNAME
	HRRZ A,-1(P)		;PICK UP ARRAY POINTER
	HRRZ A,@TTSAR(A)
	PUSH FXP,R		;REMEMBER R OVER RECURSIVE CALL TO PRINT
	TLO R,PR.PRC
	PUSHJ P,PRINTA		;PRINT THE NAME
	POP FXP,R
	%VBAR%
	JRST PRINA4
]		;END IFN SFA
;PRINSY PRINN PRINIL PRNN1 PRNN2A PRNN2B PRNN2C PRNN2 PRNN3 PRNN3A PRNN3B PRNN3C

SUBTTL	PRINT AN ATOMIC SYMBOL

;PRINIL:
;IFN USELESS, PUSHJ P,PLP1
;	MOVEI A,"(		;PRINT () FOR NIL
;	PUSHJ P,(R)
;	MOVEI A,")
;	JRST (R)

PRINSY:	PUSH P,A
	PUSH P,CPOP1J
	JUMPE A,PRINIL
PRINN:	SKIPA A,-1(P)
PRINIL:	 MOVEI A,[$$$NIL,,]
	JSP C,MAPNAME
	JUMPGE R,PRNN2		.SEE PR.PRC
IFN USELESS,	PUSHJ P,PLP1
PRNN1:	JSP C,(C)		;FOR PRINC, JUST OUTPUT THE CHARS
	 POPJ P,
	MOVEI A,(TT)
	PUSHJ P,(R)
	JRST PRNN1

PRNN2A:
IFN USELESS,[
	HLRZ T,PRPRCT
PRNN2B:	SOJL T,PRNN2C
	%LPAR%
	JRST PRNN2B
PRNN2C:	HRRZS PRPRCT
]	;END OF IFN USELESS
	%VBAR%			;FOR NULL PNAME, PRINT ||
	%VBAR%
	JRST PLP1

PRNN2:	JSP C,(C)		;GET FIRST CHAR
	 JRST PRNN2A		;FOR NULL PNAME, JUST PRINT HANGING LEFT PARENS
	TLO R,PR.NVB+PR.NUM+PR.EFC+PR.NLS
	SETZ F,			;F COUNTS: <# SLASHES,,# CHARS>
	HRRZ A,VREADTABLE
	MOVE D,@TTSAR(A)
	TLNN D,14		;IF NOT A DIGIT OR A SIGN,
	 TLZ R,PR.NUM		; THEN IT ISN'T NUMBER-LIKE
	TLNN D,400		;IF NOT SLASHIFIED AS FIRST CHAR,
	 AOJA F,PRNN3A		; JUST BUMP CHAR COUNTER
	TLZ R,PR.EFC		;ELSE ONE FUNNY CHAR SEEN ALREADY
	TLNE D,171000		;REAL WEIRDIES FORCE VERTICAL BARS
	 TLZ R,PR.NVB
PRNN3:	ADD F,R70+1		;BUMP CHAR COUNT AND SLASH COUNT
PRNN3A:	JSP C,(C)		;GET NEXT CHAR
	 JRST PRNN4
	MOVE D,@TTSAR(A)
	TLNN D,24		;IF IT LOOKS LIKE A NUMBER SO FAR
	 TLZN R,PR.NUM		; BUT THIS NEXT CHAR ISN'T DIGIT OR ARROW,
	  JRST PRNN3B
	TRNE F,777770		; THEN WE NEED A LEADING SLASH IF THERE WERE
	 TLZ R,PR.NLS		; MORE THAN SEVEN LEADING NUMBER-LIKE CHARS
PRNN3B:	TLNN D,100		;IF NOT SLASHIBLE IN FIRST POSITION,
PRNN3C:	 AOJA F,PRNN3A		; JUST BUMP CHAR COUNTER
	TLNN D,2000		;VERTICAL BARS CAN'T HELP A SLASH
	 CAIN TT,"|		; OR VERTICAL BAR, SO COUNT THEM AS
	  AOJA F,PRNN3C		; TWO CHARACTERS AND NO SLASHES
	TLNN D,171000		;REAL WEIRDIES
	 TLZN R,PR.EFC		; OR TWO EMBEDDED FUNNY CHARS
	  TLZ R,PR.NVB		; FORCE VERTICAL BARS
	JRST PRNN3
;PRNN4 PRNN4A PRNN4B PRNN5 PRNN5A VBARPOPJ PRNN6 PRNN6A

PRNN4:	CAIN F,1		;A SIGN WITH NO FOLLOWING
	 TLNN D,10		; DIGITS DOESN'T NEED A SLASH
	  CAIA
	   JRST PRNN4A
	TLNE R,PR.NUM		;IF THE WHOLE THING IS NUMBER-LIKE,
	 TLZ R,PR.NLS		; THEN DEFINITELY NEED A LEADING SLASH
PRNN4A:	MOVEI T,2(F)
	TLNN R,PR.NVB
	 JRST PRNN4B
	HLRZ T,F		;WE AREN'T USING VERTICAL BARS
	ADDI T,1(F)		; SO MUST COMPUTE UP ROOM TAKEN BY
	TLNN R,PR.NLS		; CHARS AND SLASHES, PLUS ONE FOR THE SPACE
	 ADDI T,1		; WHICH MAY FOLLOW
PRNN4B:	PUSHJ P,PRINLP
	SKIPN A,-1(P)
	 MOVEI A,[$$$NIL,,]
	JSP C,MAPNAME
	TLNE R,PR.NVB
	 JRST PRNN6
	%VBAR%			;DO THE VERTICAL BAR THING
PRNN5:	JSP C,(C)
	 JRST VBARPOPJ
	CAIE TT,↑M
	 CAIN TT,"|
	  JRST PRNN5A
	MOVE A,VREADTABLE
	MOVE D,@TTSAR(A)
	TLNE D,2000
PRNN5A:	 %SLSH%
	MOVEI A,(TT)
	PUSHJ P,(R)
	JRST PRNN5

VBARPOPJ: %VBAR%
	POPJ P,

PRNN6:	MOVEI F,400
PRNN6A:	JSP C,(C)
	 POPJ P,
20$	PUSH P,B		;B MUST BE PRESERVED
	MOVE A,VREADTABLE
	MOVE D,@TTSAR(A)
	TLOE R,PR.NLS
	 TLNE D,(F)
	  %SLSH%
	MOVEI A,(TT)
	PUSHJ P,(R)
20$	POP P,B
	MOVEI F,100
	JRST PRNN6A
;MAPNAME MAPNM1 MAPNM2 MAPNM3 PRINLP PLP1 PRINLQ

;;; COROUTINE TO DELIVER UP CHARACTERS OF A PRINT NAME.
;;; USES JSP C,(C) TO CALL.  USES B, T; YIELDS CHARS IN TT.
;;; SETUP USES A.  SKIPS UNLESS NO MORE CHARS.

MAPNAME:
	HLRZ B,(A)
	HRRZ B,1(B)
	JSP C,(C)
MAPNM1:	HLRZ T,(B)
	MOVE T,(T)
	TRZ T,1			;FORCE OFF LOW ORDER BIT, IS UNUSED IN ASCII
MAPNM2:	SETZ TT,
	ROTC T,7
	SKIPN T			;ONLY CHECK FOR NULLS IF AT THE END OF THE WORD
	 JUMPE TT,MAPNM3
	JSP C,1(C)
	JRST MAPNM2

MAPNM3:	HRRZ B,(B)
	JUMPN B,MAPNM1
	JRST (C)


;;; ROUTINE TO FEED FORMATTING INFORMATION TO TYO IF DESIRED,
;;; THEN PRINT ANY PENDING LEFT PARENTHESES.
;;; THE LENGTH OF THE ATOM TO BE PRINTED IS IN T.
;;; USES ONLY A AND T.

PRINLP:	TLNN R,PR.ATR
	 JRST PLP1
IFN USELESS,[
	MOVSI T,(T)
	ADD T,PRPRCT
	HLRZ T,T
	ADD T,PRPRCT
]		;END OF IFN USELESS
	TRNE T,777000
	 MOVEI T,777
	HRROI A,1(T)		;ALLOW FOR FOLLOWING SPACE
	 PUSHJ P,(R)
PLP1:				.SEE PRNN1
IFE USELESS,	POPJ P,
IFN USELESS,[
	HLRZ T,PRPRCT
PRINLQ:	SOJL T,CPOPJ
	%LPAR%
	JRST PRINLQ
]		;END OF IFN USELESS
;PRINI PRI2D PRI2C PRI2Q PRI2A PRINI2 PRINI9 PRINI3 FP7A1 FP7B PRINI5 PRINI7 PRI.

SUBTTL	PRINT A FIXNUM

PRINI:	MOVE A,VBASE
IFN USELESS,	CAIN A,QROMAN
IFN USELESS,	 JRST PRINRM
	SKOTT A,FX
	 JRST BASER
	MOVE C,(A)		;TRUE VALUE OF BASE IN C
	CAIG C,36.
	 CAIGE C,2
	  JRST BASER
PRI2D:	HRRZ A,-1(P)
	JSP T,FXNV1		;THE TYO ROUTINE MUST SAVE TT HERE
IFN USELESS,[
	MOVMS TT		;ESTIMATE LENGTH OF FIXNUM
	JFFO TT,.+2		; ASSUMING OCTAL BASE
	 MOVEI D,43
	MOVNI T,3
	IDIVM D,T		;AVOID CLOBBERING EXTRA ACS
	ADDI T,14
	SKIPGE @-1(P)		;ALLOW FOR MINUS SIGN
	 ADDI T,1
	PUSHJ P,PRINLP
	MOVE TT,@-1(P)
]		;END OF IFN USELESS
	CAIN C,8		;FOR OCTAL NUMBERS, WE MAY WANT
	 JRST PRI2B		; TO USE A FUNNY SHIFTED FORMAT
PRI2C:	JUMPL TT,PRI2Q
	SKIPE V.NOPOINT
	 JRST PRINI2		;HAPPY PRATT?
	CAILE C,10.
	 %POS%
	JRST PRINI2

PRI2Q:	%NEG%
PRI2A:	MOVNS TT
PRINI2:	JSP T,PRI.		;INSERT DECIMAL POINT IF NECESSARY
PRINI9:	MOVEI T,1		;MUST SAVE F - SEE GCPNT1, GCWORRY
	TLZN TT,400000		;IF NUMBER COULD BE MOBY, THEN MOVE HIGH ORDER BIT
PRINI3:	 SETZ T,		.SEE FP4B1	;MUSTN'T DISTURB B
	JSP D,PRINI5
	SKIPE TT,T
	 PUSHJ P,PRINI3
FP7A1:	HLRZ A,(P)
FP7B:	MOVEI A,"0(A)
	CAIE A,".
	 JRST (R)
	%DCML%
	POPJ P,

PRINI5:	DIVI TT-1,(C)
	CAILE TT,9
	 ADDI TT,"A-"9-1	;KLUDGY DIGITS GREATER THAN 9 ARE "A, B, C, ..., Y, Z"
PRINI7:	HRLM TT,(P)
	JRST (D)

PRI.:	CAIN C,10.		;IF THE RADIX IS 10.
	 SKIPE V.NOPOINT	; AND *NOPOINT IS NOT SET,
	  JRST (T)		; THEN KLUDGILY ARRANGE
	HRLI T,".-"0		; TO PRINT A "." AFTER THE
	HLLM T,(P)		; DIGITS ARE PRINTED
	PUSH P,[FP7A1]
	JRST (T)
;PRI2B PRI2B3 PROMAN PRINRM PRINR0 PRINR1 PRINR2 PRINR3 PRINR4 PRINR5 PRINR6 PRINR9

PRI2B:	MOVM D,TT
	TRNN D,777
	 TLNN D,-1
	  JRST PRI2C
	MOVEI T,(C)
	MOVE C,VREADTABLE
	MOVE D,TT
	MOVEI TT,LRCT-1		;RH OF LAST RCT ENTRY IS (STATUS ←)
	HRRZ C,@TTSAR(C)
	EXCH T,C
	MOVE TT,D
	JUMPE T,PRI2C
	MOVNI D,11		;PRINT OUT AS ONE OF:
	TRNE TT,777000		;	NNNNNNNNN←11
	 JRST PRI2B3		;	NNNNNN←22
	MOVNI D,22		;	NNN←33
	TLNN TT,777		;	N←41
	 MOVNI D,33		; IN ORDER THAT LOSERS NEED NOT
	TLNN TT,77777		; COUNT ALL THE ZEROS OF AN
	 MOVNI D,41		; OCTAL NUMBER.
PRI2B3:	ASH TT,(D)
	PUSH FXP,D
	PUSHJ P,PRI2C
	%BAK%
	POP FXP,TT
	JRST PRI2A

IFN USELESS,[
PROMAN:	AOS (P)
	JRST PRINR0

PRINRM:	HRRZ A,-1(P)
	JSP T,FXNV1
PRINR0:	MOVEI C,10.
	JUMPLE TT,PRI2D
	CAIL TT,4000.
	JRST PRI2D
	MOVEI T,15.
	PUSHJ P,PRINLP
	SETZ T,
PRINR1:	IDIVI TT,10.
	HRLM D,(P)
	ADDI T,1
	JUMPE TT,PRINR2
	PUSHJ P,PRINR1
PRINR2:	HLRZ TT,(P)
	SUBI T,1
	JUMPE TT,CPOPJ
	CAIE TT,9
	JRST PRINR3
	HLRZ A,PRINR9(T)
	PUSHJ P,(R)
	HLRZ A,PRINR9+1(T)
	JRST (R)

PRINR3:	CAIE TT,4
	JRST PRINR4
	HLRZ A,PRINR9(T)
	PUSHJ P,(R)
	HRRZ A,PRINR9(T)
	JRST (R)

PRINR4:	CAIGE TT,5
	JRST PRINR6
	SUBI TT,5
	HRRZ A,PRINR9(T)
PRINR5:	PUSHJ P,(R)
PRINR6:	SOJL TT,CPOPJ
	HLRZ A,PRINR9(T)
	JRST PRINR5

PRINR9:	"I,,"V
	"X,,"L
	"C,,"D
	"M,,
]		;END OF IFN USELESS
;PRINDB DFP0 PRINO FP0 FP0A FP0B FP1 FP3 FP3A FP3A1 FPX0

SUBTTL	PRINT A FLONUM (SINGLE OR DOUBLE PRECISION)

IFN DBFLAG,[
PRINDB:	
IFN USELESS,[
	MOVEI T,30.		;GROSS ESTIMATE OF LENGTH OF DOUBLE
	PUSHJ P,PRINLP
]		;END OF IFN USELESS
KA	HRRZ A,-1(P)
KA	MOVE T,(A)
KA	MOVE TT,1(A)
KIKL	DMOVE T,@-1(P)
DFP0:
KA	MOVEI B,66		;PRECISION OF "SOFTWARE FORMAT" DOUBLE
KIKL	MOVEI B,76		;PRECISION OF "HARDWARE FORMAT" DOUBLE
	JRST FP0A
]		;END OF IFN DBFLAG

PRINO:
IFN USELESS,[
	MOVEI T,17.		;GROSS ESTIMATE OF LENGTH OF FLONUM
	PUSHJ P,PRINLP
]		;END OF IFN USELESS
	MOVE T,@-1(P)
;A FLONUM TO PRINT IS IN T
FP0:
DB$	MOVEI B,33		;PRECISION OF A FLONUM IN BITS
DB$	SETZ TT,
FP0A:	JUMPGE T,FP0B
	%NEG%
DB%	MOVNS T
DB$ KA	DFN T,TT
DB$ KIKL  DMOVN T,T
FP0B:
;A POSITIVE FLONUM TO PRINT IS IN T (DB$: AND TT); IF DB$, PRECISION IN BITS IS IN B
FP1:
IFN DBFLAG,[
	MOVE F,T		;MAKE A COPY OF NUMBER WITH JUST THE
	AND F,[777400,,]	; MOST SIGNIFICANT BIT SET (ASSUME ARG NORMALIZED)
	PUSH FXP,F		;THIS WILL BE USED FOR A MASK AFTER SCALING
	PUSH FXP,R70		; DOWN BY THE CONTENTS OF B (PRECISION)
	SETZ F,			;F WILL BE THE EXPONENT TO PRINT FOR E/D NOTATION
	CAMGE T,[0.1]
]		;END OF IFN DBFLAG
DB%	SETZB TT,F		;TT IS SECOND WORD FOR T; F WILL BE EXPONENT
DB%	CAMGE T,[0.01]
	 JRST FP4		;0.01 (OR 0.1) AND 1.0↑8 ARE CHOSEN SO THAT THE
	CAML T,[1.0↑8]		; FRACTIONAL PART WILL HAVE AT LEAST ONE
	 JRST FP4E0		; BIT, BUT NOT LOSE ANY OFF THE RIGHT END
DB$	CAILE B,33		;FOR DOUBLE PRECISION, MUST ARRANGE TO PRINT "D0"
DB$	 JRST FP4B1		; AT THE END OF THE NUMBER
IFE DBFLAG,[
;A POSITIVE FLONUM BETWEEN .01 AND 1.0↑8 IS IN T
FP3:	SETZB TT,D
	ASHC T,-33		;SPLIT EXPONENT PART OFF - MANTISSA IN TT
	ASHC TT,-243(T)		;SPLIT NUMBER INTO INTEGRAL AND FRACTIONAL PART
	MOVSI F,200000		;COMPUTE POSITION OF LAST SIGNIFICANT BITS
	ASH F,-243+<43-33>(T)	;F GETS A VALUE EQUAL TO 1/2 LSB
	PUSH FXP,F
	PUSH FXP,D		;SAVE FRACTION
	MOVEI C,10.		;PRINT INTEGER PART AS A DECIMAL FIXNUM
	PUSHJ P,PRINI3
	%DCML%			;PRINT DECIMAL POINT
	POP FXP,TT
;NOW TT HAS FRACTION INFO BITS, AND (FXP) HAS SLIDING MASK BIT (TOLERANCE)
FP3A:	MOVE T,TT		;REMAINING INFO BITS IN TT
	MULI T,10.		;T GETS NEXT DIGIT TO PRINT, MORE OR LESS
	POP FXP,F
	JFCL 8,.+1		;CLEAR OVERFLOW
	IMULI F,10.		;OVERFLOW ON (FSC 231400000001 0) AND (FSC 175631463150 0)
	JFCL 8,FP3A1		;CUT OFF WHEN MASK BIT OVERFLOWS
	CAMGE TT,F
	 JRST FP3A1		; OR WHEN REMAINING INFO BITS ARE BELOW MASK
	MOVN D,F
	TLZ D,400000
	CAMLE TT,D
	 AOJA T,FPX0		;LAST SIG DIGIT, BUT ROUND UPWARDS
	PUSH FXP,F
	PUSHJ P,FPX0		;OUTPUT A DIGIT, AND GO AROUND FOR ANOTHER
	JRST FP3A

FP3A1:	TLNE TT,200000		;SIZE OF REMAINDER DETERMINES ROUNDING
	 ADDI T,1
FPX0:	MOVEI A,"0(T)		;COME HERE TO OUTPUT A DIGIT IN T
	JRST (R)
]		;END OF IFE DBFLAG
IFN DBFLAG,[

;FALLS THROUGH
;FP3

;;;	IFN DBFLAG

;FALLS IN

;A POSITIVE FLONUM BETWEEN 0.1 AND 10.0↑8 IS IN T AND TT; PRECISION IN BITS IS IN B
; ON FXP, A TWO-WORD MASK VALUE, AS YET UNSCALED BY THE CONTENTS OF B
FP3:
KA	ASH TT,10		;PUT NUMBER IN HARDWARE FORMAT
	LDB F,[331000,,T]	;GET EXPONENT (CANNOT BE LARGER THAN 200+33)
	TLZ T,377000		;CLEAR EXPONENT FROM FRACTION
	PUSH FXP,TT
	SETZ D,
	ASHC TT,-233(F)		;CALCULATE LOW ALIGNED FRACTION WORD
	PUSH FXP,D
	MOVE TT,-1(FXP)
	ASHC T,-233(F)		;CALCULATE HIGH ALIGNED FRACTION WORD
	MOVEM TT,-1(FXP)	;INTEGER PART IS IN T
	SKIPE KA10P
	 JRST .+3
	  DMOVE TT,-3(FXP)
	  JRST .+4
	MOVE TT,-3(FXP)		;GET MASK INTO TT AND D
	MOVE D,-2(FXP)
	ASH D,10		;CONVERT TO HARDWARE FORMAT
	LDB F,[331000,,TT]	;GET EXPONENT
	TLZ TT,377000		;CLEAR EXPONENT, LEAVING FRACTION
	SUBI F,(B)
	ASHC TT,-200+4(F)	;CALCULATE MASK FRACTION VALUE, BINARY POINT BELOW BIT 4.5
	SKIPE KA10P
	 JRST .+3
	  DMOVEM TT,-3(FXP)
	  JRST .+4
	MOVEM TT,-3(FXP)	;SAVE IT BACK ON FXP
	MOVEM D,-2(FXP)
	MOVE TT,T		;PUT INTEGER PART IN TT
	MOVEI C,10.		;PRINT INTEGER PART IN RADIX 10.
	PUSHJ P,PRINI3		;PRESERVES B
	%DCML%
	POP FXP,TT
	POP FXP,T
	ASHC T,-4		;ALIGN FRACTION SO BINARY POINT IS BELOW BIT 4.5

;FALLS THROUGH
;DFP3A DFP3A1 DFP3A2 DFP3A8 DFP3A9

;;;	IFN DBFLAG

;FALLS IN

;FRACTION IN T,TT WITH BINARY POINT BELOW BIT 4.5; MASK IN -1(FXP),(FXP)
DFP3A:
	IMULI T,10.		;MULTIPLY FRACTION BY 10.
	MULI TT,10.
	ADD T,TT
	MOVE TT,D
	LDB A,[370400,,T]	;GET NEXT DIGIT (BITS 4.8-4.5) IN A
	MOVEI A,"0(A)		;MAKE IT ASCII
	TLZ T,360000		;FORM REMAINDER IN TT,D
	EXCH T,-1(FXP)		;EXCHANGE FRACTION WITH MASK
	EXCH TT,(FXP)
	IMULI T,10.		;MULTIPLY MASK BY 10.
	MULI TT,10.
	ADD T,TT
	MOVE TT,D
	CAMGE T,-1(FXP)
	 JRST DFP3A1
	CAMG T,-1(FXP)
	 CAMLE TT,(FXP)
	  JRST DFP3A8		;LAST DIGIT IF MASK > FRACTION
DFP3A1:
KA	SETCM D,T		;NEGATE MASK
KA	MOVN F,TT
KA	TLZ F,400000
KA	SKIPN F
KA	 ADDI D,1
KIKL	MOVE D,T
KIKL	MOVE F,TT
KIKL	DMOVN T,T
KA	TLZ D,760000		;FORM 1-MASK
KIKL	TLZ T,760000
KA	CAMLE D,-1(FXP)
KIKL	CAMLE T,-1(FXP)
	 JRST DFP3A2
KA	CAML D,-1(FXP)
KIKL	CAML T,-1(FXP)
KA	 CAMGE F,(FXP)
KIKL	 CAMGE TT,(FXP)
	  AOJA A,DFP3A9		;LAST DIGIT, ROUNDED UP, IF FRACTION > 1-MASK
DFP3A2:
KA	EXCH T,-1(FXP)		;EXCHANGE BACK MASK FOR FRACTION
KA	EXCH TT,(FXP)
KIKL	DMOVE T,-1(FXP)
KIKL	MOVEM D,-1(FXP)
KIKL	MOVEM F,(FXP)
	PUSHJ P,(R)		;OTHERWISE OUTPUT DIGIT AND
	JRST DFP3A		; GO AROUND AGAIN

DFP3A8:	MOVE TT,-1(FXP)		;ROUND LAST DIGIT UP IF FRACTION >= 1/2
	TLNE TT,10000
	 ADDI A,1
DFP3A9:	SUB FXP,R70+2
	JRST (R)

]		;END OF IFN DBFLAG
;FP4 FP4A FP4E0 FP4E1

;HERE ON FLONUMS < 0.01 (DB%) OR < 0.1 (DB$)
FP4:	JUMPN T,FP4E		;FLOATING POINT "E" FORMAT
DB$	CAILE B,33		;FOR DOUBLE PRECISION,
DB$	 PUSH P,[[%D% ? JRST FP4A]]	;PRINT "0.0D0" CLEVERLY
	PUSHJ P,FP4A		;CLEVER WAY TO PRINT OUT "0.0" QUICKLY
	%DCML%
FP4A:	MOVEI A,"0
	JRST (R)

;HERE ON FLONUMS >= 1.0E8
FP4E0:	SKIPN KA10P
	 JRST .+5
	FDVL T,D1.0E8		;BE DOUBLY PRECISE IN DIVIDING
	FDVR TT,D1.0E8		; BY 10↑8 TO GET NUMBER IN RANGE
	FADL T,TT
	JRST .+2
	 DFDV T,D1.0E8
IFN DBFLAG,[
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
	SKIPE KA10P
	 JRST .+3
	  DFDV T,D1.0E8
	  JRST .+4
	FDVL T,D1.0E8		;DIVIDE MASK TOO
	FDV TT,D1.0E8		;UNROUNDED!
	FADL T,TT
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
]		;END OF IFN DBFLAG
	ADDI F,8
	CAML T,D1.0E8
	 JRST FP4E0		;KEEP DIVIDING UNTIL < 10↑8
FP4E1:	CAMGE T,D10.0
	 JRST FP4B
	SKIPN KA10P
	 JRST .+5
	FDVL T,D10.0		;NOW REDUCE UNTIL < 10.0
	FDVRI TT,(10.0)
	FADL T,TT
	JRST .+2
	 DFDV T,D10.0
IFN DBFLAG,[
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
	SKIPE KA10P
	 JRST .+3
	  DFDV T,D10.0
	  JRST .+4
	FDVL T,[10.0]		;DIVIDE MASK TOO
	FDV TT,[10.0]		;UNROUNDED!
	FADL T,TT
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
]		;END OF IFN DBFLAG
	AOJA F,FP4E1

;FP4E FP4E2 FP4E2A FP4B


;HERE FOR NON-ZERO FLONUMS < 0.01 (DB%) OR < 0.1 (DB$)
FP4E:	CAML T,[1.0↑-8]		;BE DOUBLY PRECISE IN MULTIPLYING BY 10↑8
	 JRST FP4E2A
	SKIPN KA10P
	 JRST .+7
	FMPR TT,D1.0E8
	MOVEM TT,D
	FMPL T,D1.0E8
	UFA TT,D
	FADL T,D
	JRST .+2
	 DFMP T,D1.0E8
IFN DBFLAG,[
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
KA	FMP TT,[1.0↑8]		;UNROUNDED!  MULTIPLY MASK TOO
KA	MOVEM TT,D
KA	FMPL T,[1.0↑8]
KA	UFA TT,D
KA	FADL T,D
KIKL	DFMP T,D1.0E8
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
]		;END OF IFN DBFLAG
	SUBI F,8
	JRST FP4E

FP4E2:	SKIPN KA10P
	 JRST .+7
	FMPRI TT,(10.0)		;NOW INCREASE UNTIL >= 1.0
	MOVEM TT,D
	FMPL T,D10.0
	UFA TT,D
	FADL T,D
	JRST .+2
	 DFMP T,D10.0
IFN DBFLAG,[
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
KA	FMP TT,[10.0]		;UNROUNDED!  MULTIPLY MASK TOO
KA	MOVEM TT,D
KA	FMPL T,[10.0]
KA	UFA TT,D
KA	FADL T,D
KIKL	DFMP T,D10.0
	EXCH T,-1(FXP)
	EXCH TT,(FXP)
]		;END OF IFN DBFLAG
FP4E2A:	CAMGE T,[1.0]
	 SOJA F,FP4E2
;HERE WHEN NUMBER BETWEEN 1.0 (INCL) AND 10.0 (EXCL); F IS THE EXPONENT TO BE PRINTED.
FP4B:
IFE DBFLAG,[
	SKIPE KA10P
	 JRST .+6

	TLNN TT,200000		;DECIDE WHETHER ROUNDING WILL HAVE ANY EFFECT
	 JRST FP4B1
	HLLZ TT,T		;IF SO, CREATE A FLONUM WHOSE VALUE IS
	TLZ TT,777		; 1/2 LSB OF FRACTION IN T
	ADD TT,[777000,,1]

	FADR T,TT		;ADD LOW PART TO HIGH PART, ROUNDING
	CAMGE T,D10.0		;ROUNDING UP MAY TAKE US OUT OF RANGE AGAIN
	 JRST FP4B1
	FDVRI T,(10.0)
	ADDI F,1		;ADJUST EXPONENT FOR THE DIVISION
]		;END OF IFE DBFLAG
;FOR DB$, JUST LET THE EXTRA INFO BITS SIT THERE, EVEN FOR SINGLE PRECISION!
; AFTER ALL, THE MASK HAS ALSO BEEN COMPUTED TO DOUBLE PRECISION
;FP4B1

;; FALLS THRU

FP4B1:	PUSH FLP,F		;DON'T USE FXP!  WILL CONFLICT WITH MASK FOR DB$
	PUSHJ P,FP3		;NUMBER HAS BEEN NORMALIZED FOR  1.0 .LE. X < 10.0
DB$	CAILE B,33
DB$	 %D%			;FOR DOUBLE PRECISION, "D" INDICATES EXPONENT
DB$	CAIG B,33
	 %E%			;FOR SINGLE PRECISION, "E" INDICATES EXPONENT
	POP FLP,TT		;POP EXPONENT
	SKIPLE TT		;PRINT SIGN (BUT PRINT NO SIGN FOR 0)
	 %POS%
	SKIPGE TT
	 %NEG%
	MOVEI C,10.
	MOVMS TT
	JRST PRINI3		;PRINT EXPONENT AS A DECIMAL INTEGER


;PRINCX PRNCX2 PRNCX3 PRNCX4 PRINDX PRNDX2 PRNDX5

SUBTTL	PRINT A COMPLEX OR A DUPLEX

IFN CXFLAG,[
PRINCX:
IFN USELESS,[
	MOVEI T,35.
	SKIPN @-1(P)
	 MOVEI T,18.
	PUSHJ P,PRINLP
]		;END OF IFN USELESS
	SKIPE T,@-1(P)		;DON'T PRINT REAL PART IF 0
	 PUSHJ P,FP0
KA	HRRZ A,-1(P)
KA	MOVE T,(A)
KA	MOVE TT,1(A)
KIKL	DMOVE T,@-1(P)
	JUMPE T,PRNCX2
	SKIPL TT
	 %POS%
PRNCX2:	JUMPE TT,PRNCX4
	SKIPGE TT
	 %NEG%
	MOVM T,TT
	PUSHJ P,FP0
PRNCX3:	MOVEI A,"J		;CROCK
	JRST (R)

PRNCX4:	MOVEI A,"0
	PUSHJ P,(R)
	JRST PRNCX3
]		;END OF IFN CXFLAG

IFN DXFLAG,[
PRINDX:
IFN USELESS,[
	MOVEI T,60.
	SKIPN @-1(P)
	 MOVEI T,30.
	PUSHJ P,PRINLP
]		;END OF IFN USELESS
KA	HRRZ A,-1(P)
KA	MOVE T,(A)
KA	MOVE TT,1(A)
KIKL	DMOVE T,@-1(P)
	SKIPE T			;DON'T PRINT REAL PART IF 0
	 PUSHJ P,DFP0
	HRRZ A,-1(P)
KA	MOVE T,2(A)
KA	MOVE TT,3(A)
KIKL	DMOVE T,2(A)
	SKIPN @-1(P)
	 JRST PRNDX2
	SKIPL T
	 %POS%
PRNDX2:	JUMPE T,PRNCX4
	SKIPGE T
	 %NEG%
	JUMPGE T,PRNDX5
KA	DFN T,TT
KIKL	DMOVN T,T
PRNDX5:	PUSHJ P,DFP0
	JRST PRNCX3
]		;END OF IFN DXFLAG
;PRINB PRINB0 PRINBQ PRINBZ PRBAB PRINB3 PNFBLP

IFN BIGNUM,[

SUBTTL	PRINT A BIGNUM

PRINB:
IFN USELESS,[
	HRRZ B,@-1(P)
	MOVEI T,1
PRINB0:	ADDI T,12.
	HRRZ B,(B)
	JUMPN B,PRINB0
	PUSHJ P,PRINLP
]		;END OF IFN USELESS
	HRRZ A,-1(P)
	SKIPGE A,(A)
	JRST PRINBQ
IFE USELESS,	HRRZ D,@VBASE
IFN USELESS,[
	HRRZ D,VBASE
	CAIE D,QROMAN
	SKIPA D,(D)
	MOVEI D,10.
]		;END OF IFN USELESS
	CAILE D,10.
	 %POS%
	JRST PRINBZ
PRINBQ:	%NEG%		;NEGATIVE BIGNUM
PRINBZ:	MOVEM R,RSAVE
	HRRZM P,FSAVE	;STORE PDL POSITION SO AR1 AND AR2A CAN BE FOUND
	PUSH P,AR1
	PUSH P,AR2A
	PUSHJ P,YPOCB
	PUSH P,A
	PUSH P,[PRINB4]
	MOVE B,VBASE
IFN USELESS,[
	CAIN B,QROMAN
	SKIPA D,[10.]
]		;END OF IFN USELESS
	JSP T,FXNV2
	MOVE C,D
	JSP T,PRI.
	MOVE R,D
	MOVEI F,1
	MOVE T,D
PRBAB:	MUL T,D
	JUMPN T,.+4
	MOVE T,TT
	MOVE R,TT
	AOJA F,PRBAB
	MOVEM F,NORMF
	MOVE D,R
PRINB3:	MOVE C,A
	HLRZ B,(C)
	MOVE F,(B)
	MOVEI R,0
PNFBLP:	DIV R,D
	MOVEM R,(B)
	MOVE B,(C)
	TRNN B,-1
	JRST PRBFIN
	MOVE C,(C)
	MOVE R,F
	HLRZ B,(C)
	MOVE F,(B)
	JRST PNFBLP

;PRBFNA PRBFIN PRINBI PRINBJ PRBNUF PRINB4

PRBFNA:	HLR A,B
PRBFIN:	MOVS B,(A)
	TLNE B,-1
	SKIPE (B)
	JRST .+2
	JRST PRBFNA
	PUSH FXP,F
	MOVE R,(A)
	TRNN R,-1
	JRST PRBNUF
	PUSHJ P,PRINB3
PRINBI:	POP FXP,TT
	MOVE F,NORMF
	MOVE R,RSAVE
PRINBJ:	SETZ T,
	JSP D,PRINI5
	SOJE F,FP7A1
	MOVE TT,T
	PUSHJ P,PRINBJ
	JRST FP7A1

PRBNUF:	HLRZ A,R
	MOVE TT,(A)
	MOVE AR2A,FSAVE
	MOVE AR1,1(AR2A)	;RESTORE AR1 AND AR2A
	MOVE AR2A,2(AR2A)
	HRRZ C,VBASE
IFN USELESS,	CAIN C,QROMAN
IFN USELESS,	SKIPA R,[10.]
	JSP T,FXNV3
	MOVE C,R
	MOVE R,RSAVE
	SKIPE TT
	PUSHJ P,PRINI3
	JRST PRINBI

PRINB4:	POP P,A
	MOVEI B,TRUTH
	PUSHJ P,RECLAIM
	POP P,AR2A
	POP P,AR1
	POPJ P,
]		;END OF IFN BIGNUM
;FLATSIZE FLAT5 FLAT4 FLAT3 FLAT2 CFLAT2 %FLO FLATOBJECT FLATO2 FLATC FLAT7 FLATC1 FLTC1A FLATC2 FLATC3 FLAT7A $EXPLODEC $$EXPU $$EXPLODEN $$EXSN $$EXP0 $$EXP1 EXPLY1 EXPLY2 EXPLY3 EXPLY4 EXPLY9

SUBTTL	FLATSIZE, FLATC, EXPLODEC, EXPLODEN, EXPLODE

FLATSIZE:
	PUSH P,CFIX1		;SUBR 1
	SKOTTN A,LS
IFN HNKLOG,[
	 TLNN TT,HNK
	  JRST FLAT5
	PUSHJ P,USRHNP		;Is this a user's extended hunk?
	JUMPE T,FLAT5
	SETZ B,			;Say we aren't PRINT
	SETZ R,			;Say to do slashification
	PUSHJ P,SENDFL
	MOVE TT,(A)		;Get the result
	POPJ P,			;And make it into a FIXNUM
] ; End of IFN HNKLOG,

FLAT5:	SKIPA R,CFLAT2		;POPJ IS POSITIVE
FLAT4:	 HRROI R,FLAT2
FLAT3:	SETZM FLAT1
	PUSHJ P,PRINTF
	SKIPA TT,FLAT1
FLAT2:	 AOS FLAT1
CFLAT2:	POPJ P,FLAT2

IFN HNKLOG,[
%FLO:				;(FLATSIZE-OBJECT object printp i-depth slash)
FLATOBJECT:			;LSUBR (4 . 5)
	JSP TT,LWNACK		;Check number of arguments
	  LA45,,Q%FLO
	CAMN T,IN0-5		;5 args?
	  POP P,AR1		;  Yes, throw one away
	POP P,AR1
	POP P,C
	POP P,B
	POP P,A
	PUSH P,CFIX1
	MOVE TT,(C)
	MOVEM TT,PRINLV
	MOVE R,[PR.ATR,,FLAT2]
	SKIPE B			;Is this from inside print?
	  HRRI R,FLATO2		;  Yes, fake out PRINT to think it's from print
	SKIPN AR1		;Slashify?
	  TLO R,PR.PRC		;  Nope, tell PRINT not to.
	SETZM FLAT1
	PUSHJ P,PRINTF
	MOVE TT,FLAT1
	POPJ P,

FLATO2: AOS FLAT1
	POPJ P,
]; END of IFN HNKLOG,

FLATC:	PUSH P,CFIX1		;SUBR 1
	SKOTTN A,LS
IFN HNKLOG,[
	 TLNN TT,HNK
	  JRST FLAT7
	PUSHJ P,USRHNP		;Is this a user-extend HUNK?
	JUMPE T,FLAT7		;Maybe not
	SETZ AR1		;Say not from PRINT
	SETO R,			;Say no slashification
	SETZ B,			;Say we aren't print
	PUSHJ P,SENDFL		;Send it the message to get value to return
	MOVE TT,(A)		;Get result (better be fixnum)
	POPJ P,			;We'll definately return a fixnum! (we cons it)
] ; End of IFN HNKLOG,

FLAT7:	TLNN TT,SY
	 JRST FLAT7A
FLATC1:	HLRZ TT,(A)		;FAST-FLATC FOR SYMBOLS
	HRRZ A,1(TT)
FLTC1A:	SETZ TT,
FLATC2:	HRRZ B,(A)		;COUNT 5 CHARS PER PNAME WORD
	ADDI TT,BYTSWD
	JUMPE B,FLATC3
	HRRZ A,(B)
	ADDI TT,BYTSWD
	JUMPN A,FLATC2
	MOVEI A,(B)
FLATC3:	HLRZ A,(A)		;LAST PNAME WORD MAY BE PARTIAL
	SKIPN T,(A)		;WATCH OUT FOR NULL PNAME!
	 SUBI TT,1
	TRNE T,177←1
	 POPJ P,
	TRNE T,177←10
	 SOJA TT,CPOPJ
	SUBI TT,3
	TDNE T,[177←17]
	 AOJA TT,CPOPJ
	TLNN T,(177←26)
	 SUBI TT,1
	POPJ P,

FLAT7A:	JUMPN A,FLAT4
	HRRZ A,$$$NIL+1
	JRST FLTC1A

$EXPLODEC:
	PUSHJ P,USRHPP		;Is this a user hunk?
	JUMPN T,$$EXPU		;If so, send an EXPLODEC message
	MOVE R,EXPL0		;SUBR 1	;HRRZI IS NEGATIVE!!!
	JRST $$EXP1

$$EXPU:	PUSH P,A
	PUSH P,[QEXPLODE]
	PUSH P,NIL		;SLASHIFY-P
	PUSH P,NIL		;NUMBER-P
	JRST $$EXSN

$$EXPLODEN:
	PUSHJ P,USRHPP		;Is this a user hunk?
	JUMPE T,$$EXP0		;Nope, hack normally
	PUSH P,A
	PUSH P,[QEXPLODE]
	PUSH P,NIL		;SLASHIFY-P
	PUSH P,[TRUTH]		;NUMBER-P
$$EXSN:	MOVNI T,4
	XCT SENDI		;Never returns
	
$$EXP0:	HRROI R,EXPL2		;SUBR 1
$$EXP1:	SKOTT A,SY
	JRST EXPL4
	HLRZ T,(A)
	HRRZ A,1(T)
	PUSH P,R70		;FORMING LIST OF CHARS
	MOVEI B,(P)
	PUSH P,A
	PUSH P,B
	XOR R,EXPL0
	PUSH FXP,R
EXPLY1:	SKIPN A,-1(P)
	JRST EXPLY9
	HLRZ B,(A)
	MOVE D,(B)
	HRRZ A,(A)
	MOVEM A,-1(P)
EXPLY2:	JUMPE D,EXPLY1
	SETZ TT,
	LSHC TT,7
	SKIPE (FXP)
	JRST EXPLY3
	PUSH FXP,D
	PUSHJ P,RDCH2
	POP FXP,D
	JRST EXPLY4
EXPLY3:	MOVEI A,IN0(TT)		.SEE HINUM
EXPLY4:	PUSHJ P,NCONS
	HRRM A,@(P)
	HRRZM A,(P)
	JRST EXPLY2

EXPLY9:	SUB P,R70+2
	SUB FXP,R70+1
	JRST POPAJ
;EXPLODE EXPL0 EXPL4 EXPL1 EXPL3 EXPL6 EXPL2

EXPLODE:
	PUSHJ P,USRHPP		;Is it a USERHUNK?
	JUMPE T,EXPL0
	PUSH P,A
	PUSH P,[QEXPLODE]
	PUSH P,[TRUTH]		;SLASHIFY-P
	PUSH P,NIL		;NUMBER-P
	JRST $$EXSN

EXPL0:	HRRZI R,EXPL1		;SUBR 1
EXPL4:	PUSH P,R70
	HRRZM P,EXPL5
	PUSHJ P,PRINTF
	JRST POPAJ

EXPL1:	SAVE B C
	SAVEFX TT R
	ANDI A,177
	PUSHJ P,RDCH3
	POP P,C
EXPL3:	PUSHJ P,NCONS
	HRRM A,@EXPL5
	HRRZM A,EXPL5
EXPL6:	RSTRFX R TT
	JRST POPBJ

EXPL2:	PUSH P,B
	SAVEFX TT R
	MOVEI A,IN0(A)
	JRST EXPL3

;BAKTRACE BAKLIST BKTR0 BKTR3 BKTR2 BKTR1 BKTR2X

SUBTTL	BAKTRACE

BAKTRACE:			;PRINT A BAKTRACE
	JSP TT,LWNACK
	LA01,,QBAKTRACE
	MOVNI TT,1
	JRST BKTR0
BAKLIST:			;RETURN A LIST (SIMILAR TO PRINTED FORMAT)
	JSP TT,LWNACK
	LA01,,QBAKLIST
	MOVSI TT,400000
BKTR0:	MOVEM TT,BACTYF		;TYPE FLAG FOR BAKTRACE/BAKLIST
	MOVEI A,NIL		;START WITH NIL
	SKIPE T			;OR USER SUPPLIED ARG
	 POP P,A
	JSP R,GTPDLP		;GET APPROPRIATE PDL POINTER
		0
	 JFCL
	MOVEI A,(D)		;SAVE PDL POINTER IN A
	MOVE B,(A)		;GET TOP OF STACK
	CAME B,[QBAKTRACE,,CPOPJ]
	 CAMN B,[QBAKLIST,,CPOPJ]
	  SOS A			;SKIP FIRST SLOT IF CALL TO US
	MOVEI R,60		;LOOK AT ABOUT 60 STACK LOCATIONS
	HRRZ TT,C2		;GET PDL ORIGION
	SUBM A,TT		;SAVE PDL OFFSET IN TT
	CAIG TT,(R)		;FEWER THAN 60 LOCATIONS TO LOOK AT?
	 MOVE R,TT		;YES, SO LOOK AT THAT MANY
	MOVE T,A
	SETZM CPJSW		;ASSUME *RSET HAS BEEN OFF
	MOVEI B,CPOPJ
BKTR3:	MOVE TT,(T)		;CUT OUT STUFF FROM *RSET LOOP, IF USED
	CAIN B,(TT)
	 TLNN TT,-1
	  SKIPA
	   SETOM CPJSW		;APPARENTLY *RSET HAS BEEN ON
	TLZ TT,-1#10000
	CAMN TT,[10000,,LSPRET]
	 MOVEI A,-1(T)
	SOS T
	SOJG R,BKTR3
	MOVEM A,BKTRP		;SET UP FOR BAKTRACE LOOP AND GO THERE
	MOVE A,BACTYF
	AOJE A,BKTR2		;IF TRACING THEN SKIP LIST HACKING STUFF
	PUSH P,R70		;SET UP LIST TO HOLD BAKLISTING
	HRLM P,(P)		;SET UP LAST-OF-LIST POINTER
BKTR2:	HRRZ A,C2		;THE PDL-HUNTING LOOP
	ADDI A,1
	CAML A,BKTRP
	 JRST BKTR2X		;EXIT WHEN BACKED UP TO BOTTOM OF PDL
	AOSN BACTYF
	 STRT [SIXBIT \↑MBAKTRACE↑M!\]
	HRRZ A,@BKTRP
	CAIN A,CPOPJ		;IN *RSET MODE, THIS IS A TAG
	 JRST BKTR1C		;PUT ON PDL UPON ENTRY TO A FUNCTION
	CAIN A,ILIST3
	 JRST BKTR1B
	MOVE D,@BKTRP
	TLNE D,10000#-1		;TO BE A PUSHJ RETURN ADDR, THERE MUST 
	 CAIN A,BKCOM1		; BE PC FLAGS IN LH
	  JRST BKTR1
	CAIL A,BEGFUN
	 CAIL A,ENDFUN
	  JRST BKTR1A
	CAIE A,CON2
	 CAIN A,CON3
	  JRST BKTR1G
	CAIN A,PG0A
	 JRST BKTR1E
	CAIN A,LMBLP1
	 JRST BKTR1
	CAILE A,BRLP1
	 CAILE A,BRLP2
	  SKIPA
	   JRST BKTR1H
	 CAIN A,REKRD1
	  JRST BKTRR3
	CAIE A,UNBIND
	 JRST BKTR1A
BKTR1:	SOS BKTRP
	JRST BKTR2
BKTR2X:	AOSE BACTYF
	 SKIPL BACTYF
	  JRST TERPRI
	POP P,A
	JRST RHAPJ
;BKTR1A BK1A2 BK1A4 BK1A1 BK1A1C BK1A3 BK1A1B

BKTR1A:	CAMGE A,@VBPORG		;LETS HOPE THAT BPORG ISN'T SCREWED UP
	 CAIGE A,BBPSSG
	  JRST BKTR1
BK1A2:	MOVEI AR1,-1(A)
BK1A4:	HLRZ B,-1(A)		;SOMEWHERE IN BINARY PROGRAMS
	MOVEI R,PRIN1B		;IF "CALL", THEN SUBR ATOM NAME WILL BE IN B
	TRC B,37		;LIKELY NOT AN INSTRUCTION IF ALL THE INDIRECT,
	TRCE B,37		; AND INDEXING BITS ARE ONES
	 CAIGE B,(CALL )
	  JRST BKTR1
	CAIG B,(JCALLF 17,)
	 JRST BK1A1
	CAIE B,(XCT)		;MIGHT BE A XCT OF A CALL, JRST, PUSHJ TO SUBR
	 JRST .+3
	   HRRZ A,-1(A)		;IF SO, CYCLE TO TRY TO FIND CALLED SUBR NAME
	   AOJA A,BK1A4
	MOVEI R,ERRADR		;HA! MAYBE  PUSHJ OR JRST, SO NOW WE HAVE 
	CAIN B,(JRST 0,)	; ONLY BEGINNING ADDRESS OF SUBR.  HENCE
	 JRST BK1A1		; IT HAS TO BE DECODED INTO ATOM NAME.
	CAIE B,(PUSHJ P,)
	 JRST BKTR1		;LOSE, DON'T KNOW WHAT KIND OF INST THIS IS
	HLLZ B,@BKTRP
	TLNN B,10000		;USER MODE FLAG - STOPS RANDOM
	 JRST BKTR1		; DATA NOT ENTERED BY PUSHJ

BK1A1:	MOVE B,-1(A)		;EITHER "(J)CALL(F)", "JRST", OR "PUSHJ P,"
	TLNE B,7777760		;LET INDIRECTION HAPPEN, BUT CAN'T CHANCE 
	 TLNE B,((17))		;  DOING IT IF THE UUO IS INDEXED, OR 
	  JRST BK1A1B		;  ADDRESSES AN AC
	MOVEI B,@-1(A)		;LET INDIRECT DO ITS THING
BK1A1C:	PUSH P,AR1		;ORIGINAL PC WHEREFROM SUBR WAS CALLED
	SKIPGE BACTYF
	 JRST BK1A3
	PUSHJ P,(R)		;R HAS EITHER PRIN1B OR ERRADR
	STRT [SIXBIT \←!\]	;  DEPENDING ON WHETHER "CALL" OR "PUSHJ P,"
	POP P,B
	PUSHJ P,ERRADR
	STRT [SIXBIT \ !\]
	JRST BKTR1

BK1A3:	CAIE R,ERRADR
	 SKIPA A,B
	  PUSHJ P,ERRDCD	;"ERRDCD" DECODES ADDRESS IN B, GETS ATOM IN A
	EXCH A,(P)
	PUSHJ P,ERRDCD
	PUSH P,[QLA]
	PUSH P,A
	MOVNI T,3
	JRST BKT1F2

BK1A1B:	CAIN R,ERRADR
	 TDZA B,B
	  MOVEI B,QM
	JRST BK1A1C
;BKTR1B BKTR1C BKTR1F BKT1B1 BKT1F1 BKT1F2 BKTR1H BKTR1E BKTR1D BKTR1G BKTR1I BKTRR3 BKTRR5 UREAD UREAD2 UREAD1 UREOF UCLOSE

BKTR1B:	MOVE D,BKTRP
	HRRZ B,-1(D)	;PROBABLY FOR ENTRY TO SOME SUBR, LSUBR, OR EXPR
	CAIE B,ELSB1	;LISTING TINGS UP ON THE PDL
	 CAIN B,ESB1
	  JRST .+3
	CAIE B,IAPPLY
	 JRST BKTR1
	HLRE B,-1(D)
	ADDI B,-3(D)
	HLRZ A,(B)
	JUMPE A,BKTR1
	HRRZM B,BKTRP
	SKIPGE BACTYF
	 JRST BKT1B1
	STRT [SIXBIT \(!\]
	PUSHJ P,PRIN1
	STRT [SIXBIT \ EVALARGS) !\]
	JRST BKTR1

BKTR1C:	HLRZ A,@BKTRP	;PROBABLY ENTERED AN F-TYPE FUNCTION
	JUMPE A,BKTR1	;WELL, NIL ISN'T REALLY A FUNCTION
BKTR1F:	SKIPGE BACTYF
	JRST BKT1F1
	PUSHJ P,PRIN1
	STRT [SIXBIT \← !\]
	JRST BKTR1

BKT1B1:	SKIPA B,[QEVALARGS]
BKT1F1:	 MOVEI B,QLA
	PUSH P,A
	PUSH P,B
	MOVNI T,2
BKT1F2:	PUSHJ FXP,LISTX
	PUSHJ P,NCONS
	HLRZ B,(P)
	HRRM A,(B)	;NCONC MOST RECENT GOODIE ONTO END OF LIST
	HRLM A,(P)	;UPDATE LAST-OF-LIST POINTER
	JRST BKTR1

BKTR1H:	MOVNI T,LERSTP+5-1	;2 FROM BREAK, 2 FROM EDERRL, 1 FROM BRLP = 5
	MOVEI A,QBREAK		;-1 SINCE BKTR1 WILL TAKE OFF ONE MORE
	JRST BKTR1D
BKTR1E:	MOVNI T,LPRP		;BACK UP OFF A PROG
	MOVEI A,QPROG
BKTR1D:	ADDM T,BKTRP
	JRST BKTR1I

BKTR1G:	MOVEI A,QCOND		;FOUND A COND ENTRY
BKTR1I:	SKIPE CPJSW
	 JRST BKTR1		;IF *RSET WAS ON, ENTRY IS BE MARKED BY CPOPJ
	JRST BKTR1F

BKTRR3:	SKIPA T,XC-3
BKTRR5:	 MOVNI T,5
	ADDM T,BKTRP
	JRST BKTR1


PGTOP PRT,[PRINT,TYO,EXPLODE,FLATC,BAKTRACE,ETC]
;;@ END OF PRINT 288

;;@ ULAP 142		UTAPE, LAP, AND AGGLOMERATED SUBRS
;;;   ***** MACLISP ****** UTAPE, LAP, AND AGGLOMERATED SUBRS ******
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************



	PGBOT [UIO]



SUBTTL	OLD I/O FUNCTIONS IN TERMS OF NEW I/O PRIMITIVES

;;;	(DEFUN UREAD FEXPR (FILENAME)
;;;	       (UCLOSE)
;;;	       ((LAMBDA (FILE)
;;;			(EOFFN UREAD
;;;			       (FUNCTION
;;;				  (LAMBDA (EOFFILE EOFVAL)
;;;					  (UCLOSE)
;;;					  EOFVAL)))
;;;			(INPUSH (SETQ UREAD FILE))
;;;			(DEFAULTF FILE))
;;;		(OPEN (*UGREAT FILENAME) 'IN)))

UREAD:	PUSH P,A		;FEXPR
	PUSHJ P,UCLOSE
	POP P,A
	PUSHJ P,UGREAT
	PUSH P,[UREAD2]
	PUSH P,A
	MOVNI T,1
	JRST $EOPEN
UREAD2:	MOVEM A,VUREAD
	PUSH P,[UREAD1]
	PUSH P,A
	PUSH P,[QUREOF]
	MOVNI T,2
	JRST EOFFN
UREAD1:	HRRZ A,VUREAD
	PUSHJ P,INPUSH
	PUSHJ P,DEFAULTF
	HRRZ A,VUREAD
	JRST TRUENAME		;RETURN TRUENAME OF FILE TO USER

UREOF:	PUSH P,B		;+INTERNAL-UREAD-EOFFN - SUBR 2
	PUSHJ P,UCLOSE
	JRST POPAJ


;;;	(DEFUN UCLOSE FEXPR (X)
;;;	       (COND (UREAD
;;;		      ((LAMBDA (OUREAD)
;;;				(AND (EQ OUREAD INFILE) (INPUSH -1))
;;;				(SETQ UREAD NIL)
;;;				(CLOSE OUREAD))
;;;			   UREAD))
;;;		     (T NIL)))

UCLOSE:	SKIPN A,VUREAD		;FEXPR
	 POPJ P,
	CAMN A,VINFILE
	 PUSHJ P,INPOP		;SAVES A
	SETZM VUREAD
	JRST $CLOSE
;UAPPEND UWRITE UWRT0 UWRT1 UWRT2


;;;	(DEFUN UWRITE FEXPR (DEVDIR)
;;;	       (OR DEVDIR (SETQ DEVDIR (CAR (DEFAULTF NIL))))
;;;	       (*UWRITE (CONS DEVDIR
;;;			      (COND ((STATUS FEATURE DEC10)
;;;				     (CONS (STATUS JNAME) '(OUT)))
;;;				    ((STATUS FEATURE DEC20)
;;;				     '(MACLISP OUTPUT))
;;;				    ((STATUS FEATURE ITS)
;;;				     '(.LISP. OUTPUT))))
;;;			'OUT
;;;			(LIST DEVDIR)))
;;;
;;;	(DEFUN UAPPEND FEXPR (FILENAME)
;;;	       (SETQ FILENAME (*UGREAT FILENAME))
;;;	       (*UWRITE FILENAME 'APPEND FILENAME))
;;;
;;;	(DEFUN *UWRITE (NAME MODE NEWDEFAULT)	;INTERNAL ROUTINE
;;;	       (COND (UWRITE
;;;		      (SETQ OUTFILES (DELQ UWRITE OUTFILES))
;;;		      (CLOSE UWRITE)
;;;		      (SETQ UWRITE NIL)))
;;;	       ((LAMBDA (FILE)
;;;			(SETQ OUTFILES
;;;			      (CONS (SETQ UWRITE FILE)
;;;				    OUTFILES))
;;;			(CAR (DEFAULTF NEWDEFAULT)))
;;;		(OPEN NAME MODE)))

UAPPEND:	PUSHJ P,UGREAT	;FEXPR
	MOVEI C,(A)
	MOVEI B,QAPPEND
	JRST UWRT1

UWRITE:	JUMPN A,UWRT0		;FEXPR
	PUSHJ P,DEFAULTF
	HLRZ A,(A)
UWRT0:	PUSHJ P,NCONS
IFN ITS+D20,[
	MOVEI C,(A)
	HLRZ A,(C)
	MOVEI B,QLSPOUT
	PUSHJ P,CONS
]		;END OF IFN ITS+D20
IFN D10,[
	PUSH P,A
	PUSHJ P,SJNAME
	MOVEI B,Q$OUT
	PUSHJ P,CONS
	POP P,C
	HLRZ B,(C)
	PUSHJ P,XCONS
]		;END OF IFN D10
	MOVEI B,Q$OUT
UWRT1:	PUSH P,C		;*UWRITE BEGINS HERE
	PUSH P,[UWRT2]
	PUSH P,A
	PUSH P,B
	SKIPE VUWRITE
	 PUSHJ P,UFILE5
	MOVNI T,2
	JRST $OPEN
UWRT2:	MOVEM A,VUWRITE
	HRRZ B,VOUTFILES
	PUSHJ P,CONS
	MOVEM A,VOUTFILES
	POP P,A
	PUSHJ P,DEFAULTF
	JRST $CAR
;UFILE0 UFILE UFILE5 SCRUNIT CRUNIT


;;;	(DEFUN UFILE FEXPR (SHORTNAME)
;;;	       (COND ((NULL UWRITE)
;;;		         (ERROR 'NO/ UWRITE/ FILE
;;;				(CONS 'UFILE SHORTNAME)
;;;				'IO-LOSSAGE))
;;;		     (T (PROG2 NIL
;;;			       (DEFAULTF (RENAMEF UWRITE (*UGREAT SHORTNAME)))
;;;			       (SETQ OUTFILES (DELQ UWRITE OUTFILES))
;;;			       (SETQ UWRITE NIL)
;;;			       (OR OUTFILES (SETQ ↑R NIL))))))

UFILE0:	MOVEI B,QUFILE
	PUSHJ P,XCONS
	IOL [NO UWRITE FILE!]

UFILE:	SKIPN VUWRITE		;FEXPR
	 JRST UFILE0
	PUSHJ P,UGREAT
	MOVEI B,(A)
	SETZ A,
	EXCH A,VUWRITE
	PUSH P,A
	PUSH P,B
	HRRZ B,VOUTFILES
	PUSHJ P,.DELQ
	MOVEM A,VOUTFILES
	SKIPN VOUTFILES
	 SETZM TAPWRT
	POP P,B
	POP P,A
	PUSHJ P,$RENAME		;CLOSES THE FILE AS WELL AS RENAMES IT
	PUSHJ P,DEFAULTF
	POPJ P,

UFILE5:	HRRZ A,VUWRITE
	HRRZ B,VOUTFILES
	PUSHJ P,.DELQ
	MOVEM A,VOUTFILES
	HRRZ A,VUWRITE
	PUSHJ P,$CLOSE
	SETZM VUWRITE
	SKIPN VOUTFILES
	 SETZM TAPWRT
	POPJ P,


;;;	(DEFUN CRUNIT FEXPR (DEVDIR)
;;;	       (CAR (DEFAULTF (AND DEVDIR (LIST DEVDIR)))))

SCRUNIT:	SETZ A,
CRUNIT:	SKIPE A			;FEXPR
	PUSHJ P,NCONS
	PUSHJ P,DEFAULTF
	JRST $CAR
;UGREAT UGRT1 UPROBE UKILL


;;;	(DEFUN *UGREAT (NAME)		;INTERNAL ROUTINE
;;;	       (MERGEF NAME
;;;		       (COND ((STATUS FEATURE ITS) '(* . >))
;;;			     ('(* . LSP)))))



UGREAT:	PUSH P,[6BTNML]
UGRT1:	PUSHJ P,FIL6BT
IFN ITS+D10,[
REPEAT 3,	PUSH FXP,[SIXBIT \*\]
IT$	PUSH FXP,[SIXBIT \>\]
SA$	PUSH FXP,[SIXBIT \←←←\]
SA% 10$	PUSH FXP,[SIXBIT \LSP\]
10$	SETOM -2(FXP)		;FOR D10 DEFAULT PPN IS -1
]		;END OF IFN ITS+D10
IFN D20,[
	PUSHN FXP,L.F6BT
	MOVE T,[ASCII \LSP\]
	MOVEM T,-L.6EXT-L.6VRS+1(FXP)
]		;END OF IFN D20
	JRST IMRGF


;;;	(DEFUN UPROBE FEXPR (FILENAME)
;;;	       (SETQ FILENAME (MERGEF (*UGREAT FILENAME) NIL))
;;;	       (PROBEF FILENAME))

UPROBE:	PUSHJ P,UGRT1		;FEXPR
	JRST PROBF0


;;;	(DEFUN UKILL FEXPR (FILENAME)
;;;		    (DEFAULTF (DELETEF FILENAME))))

UKILL:	PUSHJ P,$DELETEF
	JRST DEFAULTF

;TTSR TTSR1


SUBTTL	SYMBOL MANIPULATION AND SQUOZE FUNCTIONS

;;; (TTSR| <SYMBOL>) GETS THE ARRAY PROPERTY OF <SYMBOL>,
;;; OR GIVES IT AN ARRAY PROPERTY WITH A DEAD SAR;
;;; IT MARKS THE SAR AS BEING NEEDED BY COMPILED CODE,
;;; AND THEN RETURNS THE ADDRESS OF THE TTSAR AS A FIXNUM.
;;; THIS IS USED PRIMARILY BY LAP.

TTSR:	PUSH P,CFIX1	;SUBR 1 - NCALLABLE (TTSR|)
	MOVEI C,(A)	;SAVES AR1,R,F - SEE FASLOAD
	PUSHJ P,ARGET
	JUMPN A,TTSR1
	JSP T,SACONS
	MOVEI T,ADEAD
	MOVEM T,ASAR(A)
	MOVE T,[TTDEAD]
	MOVEM T,TTSAR(A)
	MOVEI B,(A)
	MOVEI A,(C)
	MOVEI C,QARRAY
	PUSHJ P,PUTPROP
TTSR1:	MOVSI T,TTS.CN
	IORM T,TTSAR(A)
	MOVEI TT,1(A)
	POPJ P,
;RSQUEEZE SQUEEZE SQZCHR SQOK SQNOTL SQNOTD SQ%$

;;; BOTH ROUTINES ALWAYS RETURN THE LEFT-JUSTIFIED SQUOZE IN T
;;;   AND THE SIXBIT IN R
;;; RSQUEEZE MAY LEAVE RIGHT-JUSTIFIED SQUOZE IN TT
RSQUEEZE:			;CANONICAL SQUOZE CONVERSION
IT%	HRROS (P)		;FOR DEC-10, GIVES DEC-10 SQUOZE
SQUEEZE:			;THIS ALWAYS GIVES LEFT-JUSTIFIED SQUOZE
	MOVEI AR1,6		;CONVERT PNAME-ATOM TO SQUOZE AND SIXBIT
	MOVE AR2A,[440600,,SQ6BIT] ;RETURNS SQUOZE IN TT, SIXBIT IN SQ6BIT
	SETZM SQ6BIT		;CLEAR LOCS USED TO ACCUMULATE
	SETZM SQSQOZ		; SIXBIT AND SQUOZE
	HRROI R,SQZCHR
	PUSHJ P,PRINTA		;"PRINT" OUT CHARS OR PNAME
IT%	MOVE TT,SQSQOZ
	SKIPA T,SQSQOZ
	IMULI T,50
	SOJGE AR1,.-1		; MULTIPLY ITS SQUOZE UP TO SIZE
IT%	MOVE R,(P)
IT%	TLNN R,1
	MOVE TT,T
	MOVE R,SQ6BIT
	POPJ P,

SQZCHR:	TLNN AR2A,770000	;IGNORE MORE THAN 6 CHARS
	 POPJ P,
	SUBI A,40		;CONVERT TO SIXBIT
	CAIL A,1		;LOSSAGE IF NOT SIXBIT CHAR
	 CAILE A,77		; - ALSO, SPACE IS A LOSS
	  MOVEI A,'.		;LOSING NON-SQUOZE CHAR
	IDPB A,AR2A		;DEPOSIT SIXBIT CHAR
	CAIL A,'A		;CHECK FOR LETTER
	 CAILE A,'Z
	  JRST SQNOTL
	SUBI A,'A-13		;CONVERT TO SQUOZE VALUE
SQOK:	EXCH T,SQSQOZ
	IMULI T,50
	ADDI T,(A)
	EXCH T,SQSQOZ
	SOJA AR1,CPOPJ		;DECR COUNT AND RETURN TO PRINTA

SQNOTL:	CAIL A,'0		;CHECK FOR DIGIT
	 CAILE A,'9
	  JRST SQNOTD
	SUBI A,'0-1		;CONVERT TO SQUOZE VALUE
	JRST SQOK

SQNOTD:	CAIE A,'$		;CHECK FOR $ OR %
	 CAIN A,'%
	  JRST SQ%$
	MOVEI A,'.		;ANY CHAR OTHER THAN A-Z, 0-9, $, OR %
	DPB A,AR2A		; DEFAULTS TO . (E.G. *FOOBAR -> .FOOBA)
	MOVEI A,45-42
SQ%$:	ADDI A,42		;SQUOZE VALUE FOR $,%,.
	JRST SQOK
;5BTWD $5BTWD 5BTWD0 5BTWD1 5BTWD9 UNSQOZ UNSQZ1 UNSQZ2 UNSQZ3

5BTWD:	PUSH P,CFIX1
$5BTWD:	PUSH FXP,R70
5BTWD0:	MOVEI C,(A)
	HRRZ B,(A)
	JUMPE B,5BTWD1
	HLRZ A,(A)
	JSP T,FXNV1
	LSH TT,-2
	MOVEM TT,(FXP)
	MOVEI A,(B)
5BTWD1:	HLRZ A,(A)
	JSP T,SPATOM
	JRST 5BTWD9
	PUSHJ P,SQUEEZE
	MOVE R,SQ6BIT
	POP FXP,D
	DPB D,[400400,,TT]
	POPJ P,

5BTWD9:	SETZM (FXP)
	MOVEI A,(C)
	WTA [BAD ARG - SQUOZE!]
	JRST 5BTWD0



UNSQOZ:	LDB T,[004000,,D]	;HAIRY MESS TO CONVERT
	SETZM LD6BIT		; SQUOZE TO SIXBIT
UNSQZ1:	IDIVI T,50		;(THIS IS SEPARATE ROUTINE SO
	JUMPE TT,UNSQZ2		; LAP LOSERS CAN USE IT)
	CAIL TT,45		;<1SQUOZE .>
	JRST UNSQZ3
	CAIL TT,13		;<1SQUOZ A> IS 13
	ADDI TT,'A-13		;CONVERT RANGE  A - Z , 
	CAIGE TT,13		;<1SQUOZ 1>   IS 1
	ADDI TT,'0-1		;CONVERT RANGE  0 - 9
UNSQZ2:	IOR TT,LD6BIT
	ROT TT,-6
	MOVEM TT,LD6BIT
	JUMPN T,UNSQZ1
	MOVE A,[440600,,LD6BIT]	;MAKE SIXBIT INTO AN ATOM
	JRST READ6C

UNSQZ3:	SUBI TT,46-'$		;[1SQUOZ $] IS 46, [1SQOZ .] IS 45
	CAIN TT,45-<46-'$>	;CONVERT RANGE $ - % 
	MOVEI TT,'*		;BUT  .  IS EXCEPTIONAL
	JRST UNSQZ2


;PUTDDTSYM PUTDD0 PUTDD2 PUTDD4 PUTDX


PUTDDTSYM:
	MOVEI R,0	;PUTDDTSYM| IS FOR LAP - OFFSETS VALUE BY LOAD OFFSET
PUTDD0:
IT$	JSP T,SIDDTP		;LOSE IF NO DDT TO GIVE SYMBOL TO
IT% 20%	SKIPN .JBSYM"
	 JRST FALSE
	PUSH FXP,R
	PUSH P,B
10$	SKIPL R			;SEE LDPUT1
	 PUSHJ P,RSQUEEZE	;SQUEEZE ATOM'S PNAME DOWN TO SQUOZ CODE
	POP P,B
	PUSHJ P,GETDDG		;L-JUST SQUOZ IN T, CANONICAL-JUST IN TT
	 JRST PUTDX		;DONT REDEFINE GLOBALSYMS
IFE ITS,[
	PUSHJ P,GETDDJ
	 JRST PUTDD4
	MOVEI F,(D)
]		;END OF IFE ITS
PUTDD2:	JSP T,FXNV2			;GET VALUE OF SECOND ARG
	POP FXP,R
	ADDI D,(R)			;ADD IN OFFSET
IT$	.BREAK 12,[..SSYM,,TT]
10$	MOVEM D,(F)			;NON-ITS LEAVES IN F A PTR TO SYMTAB 
	JRST TRUE			; SLOT WHERE ENTRY IS TO BE MADE

IFE ITS,[
PUTDD4:	SOSGE SYMLO
	 JRST FALSE
	MOVE F,R70+2
	SUBB F,.JBSYM"
	TLO TT,100000		;LOCAL SYMBOL
	MOVEM TT,(F)
	AOJA F,PUTDD2
]		;END OF IFE ITS

PUTDX:	POPI FXP,1
	JRST FALSE

;LAPSETUP LAP5HAK L5H1 L5H2 L5XIT L5ERSTP L5SPBND L5H3 L5MKUNBD L5INHIBIT L50.0P L5NILP LAPSMH LAPSM1 LAPST2 LSYMPUT FSLSTP FSLST2

SUBTTL	LAPSETUP AND FASLAPSETUP

LAPSETUP:
	JUMPN A,LAPSMH		;ARG = NIL => SETUP SOME SYM PROPERTIES
	MOVEI T,LAPST2
LAP5HAK:
	PUSH P,T		;APPLIES THE ROUTINE FOUND IN T
				; TO ALL THE GLOBALSYMS
	PUSH P,[441100,,LAP5P]	;ATOMIC SYMBOL PLACED IN A,
				; GLOBALSYM INDEX IN TT
	MOVSI F,-LLSYMS
L5H1:	ILDB TT,(P)		;HAFTA GET THE GLOBALSYM INDEX FROM
				; PERMUTATION TABLE
	CAIL TT,LGSYMS		;IF NOT A GLOBALSYM [BUT AN XTRASYM], SKIP IT
	JRST L5XIT
	CAIN TT,3		;****NEVER CHANGE THE GLOBALSYM INDICES FOR:
	JRST L5SPBND		;  SPECBIND	 3
	CAIN TT,25		;  ERSETUP	25
	JRST L5ERSTP		;  MAKUNBOUND	34
	CAIN TT,34		;  INHIBIT	47
	JRST L5MKUNBD		;  0*0PUSH	53
	CAIN TT,47		;  NILPROPS	54
	JRST L5INHIBI		;THOSE HAVE MORE THAN 6 CHARS IN THEIR PNAME
	CAIN TT,53		;AND CANT BE RECONSTRUCTED BY UNSQOZ'ING FROM
	JRST L50.0P		;FROM THE LAPFIV TABLE
	CAIN TT,54
	JRST L5NILP
	MOVE D,LAPFIV(F)
	PUSHJ P,UNSQOZ
L5H2:	LDB TT,(P)
	PUSHJ P,@-1(P)
L5XIT:	AOBJN F,L5H1
	JRST POP2J

L5ERSTP:
	MOVEI A,[SIXBIT \ERSETUP \]
	JRST L5H3
L5SPBND:
	MOVEI A,[SIXBIT \SPECBIND \]
L5H3:	HRLI A,440600
	PUSHJ P,READ6C
	JRST L5H2

L5MKUNBD:
	MOVEI A,[SIXBIT \MAKUNBOUND \]
	JRST L5H3
L5INHIBIT:
	MOVEI A,[SIXBIT \INHIBIT \]
	JRST L5H3
L50.0P:	MOVEI A,[SIXBIT \0*0PUSH \]
	JRST L5H3
L5NILP:	MOVEI A,[SIXBIT \NILPROPS\]
	JRST L5H3


LAPSMH:	CAIE A,TRUTH		;(LAPSETUP| T 2) MEANS
	 JRST LAPSM1		; SET UP THE XCT HACK AREAS
10$	JSP T,FXNV2		; WITH 2 XCT PAGES
10$	MOVE TT,D
10$	JRST LDXHAK
10%	POPJ P,			;FOR NON TOPS-10, NO NEED TO DO ANY SETUP

LAPSM1:	MOVEI T,(B)		;OTHERWISE, FIRST ARG IS ADDRESS
	MOVEI R,(A)		; TO HACK, SECOND NON-NIL =>
	MOVE TT,(R)		;	TRY THE XCT-PAGE HAK
	PUSHJ P,PRCHAK		;TRY TO SMASH (SKIP ON FAILURE)
	 JRST TRUE
	MOVEI A,(AR2A)
	MOVE B,VPURCLOBRL
	PUSHJ P,CONS
	MOVEM A,VPURCLOBRL
	JRST TRUE

LAPST2:	MOVE TT,LSYMS(TT)	;GET ACTUAL VALUE FROM GLOBALSYM INDEX
	MOVEI C,QSYM
LSYMPUT:			;EXPECTS SYMBOL IN A, "SYM" OR "GLOBALSYM"
	MOVEI B,(A)		; IN C, AND VALUE IN TT
	JSP T,FXCONS
	EXCH A,B
	JRST PUTPROP

FSLSTP:
	MOVEI T,FSLST2
	PUSHJ P,LAP5HAK
	MOVE TT,LDFNM2
	JRST FIX1

FSLST2:	MOVEI C,(A)	;MAKE UP ATOMIC SYMBOLS AND GIVE THEM SYM PROPERTIES
	JSP T,FXCONS	; OF THE FORM (0 (NIL <N>))
	PUSHJ P,NCONS	; WHERE <N> IS THE INDEX OF THE SYMBOL
	SETZ B,		; (THESE ARE THE "GLOBALSYMS")
	PUSHJ P,XCONS
	PUSHJ P,NCONS
	MOVE B,CIN0
	PUSHJ P,XCONS
	MOVEI B,(A)
	MOVEI A,(C)
	MOVEI C,Q%GLOBALSYM
	JRST PUTPROP

;LSYMS LGSYMS LLSYMS ZZ LAPSIX ZZ LAPFIV LAP5P GETDDTSYM GETDDJ GETDD1 GETDDG LGTSPC PAGEBPORG PGBP4


	R70		;GLOBALSYM NUMBER -1
LSYMS:	GLBSYM A
LGSYMS==.-LSYMS		;END OF GLOBALSYMS HACKED BY FASLAP
	XTRSYM A
LLSYMS==.-LSYMS		;END OF ALL GLOBAL SYMBOLS

;;; SIXBIT FOR LAP SYMBOL NAMES; MUST MATCH IRP LIST OF GLBSYM
ZZ==0
LAPSIX:	.BYTE 6
SIXSYM [
	IRPC Q,,[A]
		'Q
	TERMIN
		0
	ZZ==ZZ+1
]		;END OF SIXSYM ARGUMENT
	.BYTE
IFN ZZ-LGSYMS, WARN [LAPSIX OUT OF PHASE]
EXPUNGE ZZ

LAPFIV:
GLBSYM [SQUOZE 0,A]
XTRSYM [SQUOZE 0,A]

	HAOLNG LOG2LL5,<LLSYMS-1>	;CROCK FOR BINARY SEARCH
	REPEAT <1←LOG2LL5>-LLSYMS, 377777,,777777

LAP5P:	BLOCK <LLSYMS+3>/4	;PERMUTATION, STORED 4/WD, TO GET GLOBALSYMINDEX FROM LAPFIV INDEX


GETDDTSYM:
	PUSHJ P,RSQUEEZE
	PUSHJ P,GETDDG		;GET GLOBALSYM INDEX, AND NO-SKIP IF WIN
	 JRST FIX1
IFN ITS,[
	MOVE D,TT		;SAVE SQUOZE OVER CALL TO SIDDTP
	JSP T,SIDDTP		;LOSE IF NO DDT FROM WHICH TO GET SYMBOL
	 JRST FALSE
	MOVE TT,D
	.BREAK 12,[..RSYM,,TT]
	JUMPE TT,FALSE
	MOVE TT,TT+1
	JRST FIX1
]	;END OF IFN ITS
IFE ITS,[
	PUSHJ P,GETDDJ
	 JRST FALSE
	JRST FIX1

GETDDJ:	SKIPA D,.JBSYM"		;SQUOZ IN TT - FIND SYMBOL IN JOB SYMBOL TABLE
GETDD1:	ADD D,R70+2		; SKIP IF FOUND
	JUMPGE D,CPOPJ
	MOVE T,(D)
	TLZ T,540000
	TLZN T,200000		;SYMBOL MUSTN'T BE KILLED
	 CAME T,TT		;MUST BE THE ONE WE WANT
	  JRST GETDD1
	MOVE TT,1(D)
	AOJA D,POPJ1
]	;END OF IFE ITS


GETDDG:	MOVEI R,0		;SQUOZ IN T, SEARCH "GLOBALSYM" TABLE, 
	TLZ T,740000		;  SKIP IF LOSE, LEAVE VALUE IN TT IF WIN
REPEAT LOG2LL5,[
	CAML T,LAPFIV+<1←<LOG2LL5-.RPCNT-1>>(R)
	 ADDI R,1←<LOG2LL5-.RPCNT-1>
]		;END OF REPEAT LOG2LL5
	CAME T,LAPFIV(R)	;IF DDTSYM REQUEST IS FOR A GLOBAL SYM
	 JRST POPJ1		;THEN FIND IT IN THE LAPFIV TABLE, AND GET ITS 
	LSHC R,-2		;GLOBALSYM INDEX FROM THE PERMUTATION TABLE
	LSH F,-42
	LDB TT,LDGET6(F)	;USE TABLE FROM FASLOAD
	MOVE TT,LSYMS(TT)
	POPJ P,


LGTSPC:	MOVEM TT,GAMNT
	ADD TT,@VBPORG		;INSURE THAT BPEND-BPORG > (TT)
	SUB TT,@VBPEND
	JUMPGE TT,GTSPC1	;MUST RELOCATE, OR GET MORE CORE.
	MOVE A,VBPEND		;ALREADY OK
	MOVE TT,(A)
	POPJ P,

PAGEBPORG:	MOVE A,VBPORG	;MAKE SURE BPORG IS ON PAGE BOUNDRY
	MOVE TT,(A)		;NUMERIC VALUE OF BPORG
	TRNN TT,PAGKSM
	POPJ P,
	ADDI TT,PAGSIZ-1
	ANDCMI TT,PAGKSM
	CAMGE TT,@VBPEND
	JRST PGBP4
	PUSH FXP,TT		;NEW VALUE FOR BPORG
	JSP T,SPECBIND
	0 VNORET
	AOS VNORET
	PUSH P,CUNBIND
	SUB TT,(A)
	PUSHJ P,LGTSPC
	JUMPE TT,[LERR [SIXBIT \NO CORE - PAGEBPORG!\]]
	POP FXP,TT
PGBP4:	JSP T,FIX1A
	MOVEM A,VBPORG		;GIVE BPORG NEW PAGIFIED VALUE
	POPJ P,
;MAKUBE MAKUNBOUND MAKUN1 $PURIFY FPURF0 FPURF3 ZEROP MINUSP PLUSP ZMP MINUS MNSFX

SUBTTL	MAKUNBOUND AND PURIFY

;NEVER FLUSHES VALUE CELL
MAKUBE:	%WTA [SIXBIT \UNCHANGEABLE VALUE - MAKUNBOUND!\]
MAKUNBOUND:			;SUBR 1 - FLUSH VALUE OF ATOMIC SYMBOL
   BAKPRO
	JSP D,SETCK		;MAKE SURE IT'S A SYMBOL
	JUMPE A,MAKUBE
	CAIN A,TRUTH
	 JRST MAKUBE
	HLRZ T,(A)
	MOVE B,(T)
IFE 0, NOPRO
IFN 0,[
	TLNE B,300		;CAN'T RECLAIM VALUE CELL IF PURE
	 JRST MAKUN1		; OR IF COMPILED CODE NEEDS IT
	TLZ B,-1
	CAIN B,SUNBOUND		;CAN'T RECLAIM SUNBOUND!!!
	 POPJ P,
	CAIL B,BXVCSG+NXVCSG*SEGSIZ
	 JRST MAKUN1		;CAN'T RECLAIM CELL NOT IN VALUE CELL AREA
	EXCH B,FFVC		;SO RECLAIM THE VALUE CELL ALREADY
   XCTPRO
	MOVEM B,@FFVC
	MOVEI B,SUNBOUND	;USE SUNBOUND FOR A VALUE CELL
	HRRM B,(T)
   NOPRO
	POPJ P,			;THAT'S ALL
]		;END IFN 0

MAKUN1:	PUSH P,A		;MAKE SURE WE RETURN THE ARGUMENT
	PUSH P,CPOPAJ
	MOVEI B,QUNBOUND	;FALL INTO SET WITH "UNBOUND" VALUE
	JRST SET+1


IFN USELESS,[

$PURIFY:
IFN D10, POPJ P,
IFN ITS+D20,[
	LOCKTOPOPJ
	SETZ AR1,
	JSP T,FXNV1		;GET TWO MACHINE NUMBERS
	JSP T,FXNV2
	ANDCMI TT,1777		;PAGIFY FIRST DOWNWARD
	IORI D,1777		;PAGIFY SECOND UPWARD
	CAMLE TT,D
	 LERR [SIXBIT \ARG 2 < ARG 1 - PURIFY!\]
	JUMPE C,FPURF3		;NULL THIRD ARG MEANS DEPURE
	MOVE T,LDXLPL
	HRRZ T,LDXPSP(T)	;GET ADR OF POSSIBLY PURE PAGE
	CAIG TT,(T)
	 CAIGE D,(T)
	  SKIPA
	   SETZM LDXLPC		;FOR PURE PAGE JUST FORCE FREE COUNT TO ZERO
FPURF0:	CAIE C,QBPORG
	 JRST FPURF3
	PUSHJ P,FPURF7
	JRST FPURF2

FPURF3:	JSP R,IP0
	POPJ P,

]		;END OF IFN ITS+D20
]		;END OF IFN USELESS


	PGTOP UIO,[UTAPE, LAP, AND AGGLOMERATED SUBRS]

;;@ END OF ULAP 142


;;@ ARITH 90		STANDARD ARITHMETIC FUNCTIONS
;;;   ***** MACLISP ****** STANDARD ARITHMETIC FUNCTIONS ***********
;;;   **************************************************************
;;9   ** (C) COPYRIGHT 1980 MASSACH@+M))&↓∪∃')%)+)
↓∨A)∃π⊃≥∨1∨∂2@(T~∀vlr@@@(TTTT(A)⊃∪LA∪&A∧A%β⊂[∨≥→dA
∪→∀B@Qβ1_A/%%)&AI'%YλR@(TTTT(T~∀vlv@@@(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(T~∀~(~∀~∃A∂¬∨(↓β%∩~(~∀~∀m)⊃
A¬%∪)⊃5)∪ε↓!β∂
@Z@A¬%∪)⊃5)∪ε↓'+¬%=+)∪≥∃&~∀~)∪
≤A	∪∂≥+4Y6~∃M+¬))0∪β%∪Q⊃≠)%εA
+9π)∪∨9&A/∪Q⊂A¬∪≥≥+~ztb~∀~)5β%∨@t∪≠∨Y∩A$0d~∀∪)%'(Ai≠ ~∃5∪≥+'@t∪)	iαA$YH~∃!→U' t∪5∨-∩↓$Xb~)5≠ t%∃' APY≥-'-∪ ~∀@∪∃%M(@\VH~∀∪∃→π_~∀%1π(@8VdQ$$~∀∪∃I'(A
¬→'
~(∪∃+≠A_A)(1)%+
$w
∨$↓≠∪≥+M ~∀∪)+≠!∞↓)(Y)I+
∩w→∨$A!1+' ~(∪∃+≠A
A)(1)%+
$w
∨$↓5%∨@~∀~∀4∃≠∪≥U&t∪∃M A(Y9-'↔∪@~∀∪∃I'(A≠9'¬∞~(∪∃%'PA≠≥'→0~∀∪5∨-≥&↓)(~∀%∃%'(↓
→∨βPb~∀~)≠≥'
`t∪πβ5≤A)(16h``@````@``a:4∀∪∃%M(Aβ¬M∨,~∀%≠∨-≥LA)(~(∪∃%'PA
∪0D~∀_wβ	⊂bA'+λbA'+λbbAαE&c
0↓αc&bDAαc&E¬εAβ	'∨,~(~∃β	⊂btβ≠=-∩AHXb~∀%∃%'(↓'+∧bD~∃'+λbtβ≠=)≥∩AHXb~∃M+∧bbh∪∃' ↓(Y≥-M↔∪ ~(∪∃%'PAαc&E¬ε~∀%∃%'(↓αc&c→0~∧∪)+≠!_↓$X\VL~∀&4
⊃αR"beE9¬h4(εU∩NQα4b>εQλh(&~≤⊃αRQeYE 3QPPL**5"∧iIt
#⊃Q hT⊗~35π!∀833@
J⊗l+vp∞FB∧e*fT&⊂)⊗⊂XiXHCE`b⊃⊂**ε∀εE∧aPfg⊂*∃⊗-XoM→nD]Q'g*∃`g*⊂∃'P#bU⊂⊗Y"LZW⊂!⊗P b"FE∧e∃fh#@∀⊗ a)SkαE∧R))j⊃$l⊂⊃

AE&bbt%!+'⊃(A Yβ	'∨,∩mββ≥(↓'+∧b↓
%∨~Ze
fT\Aβ≥⊂~∀@@%⊃%%∨L@QαR4∃αc&E¬≥hMαVN!¬↓2λ$KZε∩⊃
αε:⊃¬~V	E∧26Iα∀J≡:Vhh(&B-~!αAd~B>B∀P4)↓J6.Z,Iα	2LqD4(LRV6BbαI1:$J_4(LRJNQαrB2V_h(4*∩N.YPJBVNBαA2λHIf.Z-∩~2>:α~J>hαε∩⊃
aαNV⊃	1αε∃→04(Lj>Z⊗JαRQ1λH%mαlJ2VMbα"ε&∧
JQ1∧:∞⊃1∧*R
8hP&BV≤B)αAd→F∞≡u_4(εlzZ¬α∩b∧4(Lj>Z⊗JαRQ1h(&B-~")ααb
F∞|rL4(LBJJ5∧⊃1"¬Hh)↓MαVN"RαA2
t~>:LhP&*J≥!αB>∧∩(4(1n∞|jBIα$J~~¬¬α2VN
αR&6-~¬αF,z¬αF,z>Iα
*>ε-¬
V>ε[⊃αFV|
-D4Ph)mmZα6>
Jα∩&N∧
R∞!¬"ε
2-→α~>∩αR"∃¬2εJ&⎇*Mαε∀JR"⊗-"&
α⎇α⊗Jε$J6:LhP4(ε≤
&∧∀PI0$$KZV:V≤*⊃α↑⎇∩⊂4λLRJNQ∧:JN↑0h*∞>mαIh&U∩NQα=∩N↑`hP&*~≤a↓@4PJ*JN α≡J
5@4(εU∩NQα=∩~b	h(&*∃~Qα≡∀∩λ4(hP&N.Mα∃αZT2VjhhP%@4PJ~N
∩α⊃2R h*∩&42¬h&≥*	α⊃e"P4(LRJNQ¬α2>XhP&*J≥!αB1∀∩84(LRJNQ¬α1F
ph(&*∃~Qα
t"_4(hP&N.Mα∃αZT2VjhKY5M"∩H&N.M↓αV:d*NMα5*jiαD
∞-α$yα
∃¬αV22, 4(%H%m5∩BI$&⎇α⊗Jε$J>9αL"⊗:RM"e↓5¬2ε2V*α↑"⊗rα:=α
∩≡Mα<JR⊗8hP&~ε%⊃α⊃2% %m5
BI$&4b>εRLr≥αB|J:QαLrNRJ,~R&>rα~>I∧zB⊗J
"&>8hRB2V≤	h&ε$!α⊃2% %mAE⊃$&~MB⊗⊃α∧z&:Q∧J:NR∃*∞R&|qα~>∩α6B⊗∀
R&>pH4(&U∩NQα∧b>X%[	"I$L
∞R&|qα>9∧
J&RDj⊗R&~α>Z⊗∀22>\hP&*J≥!αB1∀∩8%m∩BI$&∀J≡:Vl∩⊗Iα~∞V6,bεR&|qα6⊗-"Mα~MB:V5∧
J≤4PJ*JN"αB1F∀p%mME⊃$&~MB:V5∧
∞∞Vm*2εRLz9α6,*RMα∀J≡:VjαεJ≤hP&*J≥!α
:∧`%mQE⊃$&
L::V5∧
∞∞Vm*2εRLz91α∀J≡:VjαεJ≤hP4(&≤
&∧4PID4(L26BI∧!2RPhRR&6-~¬h&LjV1α"bRP4PJ*JN"αR&6⎇04(εU∩NQα
	JRST TIM1BN
	JRST BNTIM

	CAIA
	1
	FDVR D,TT
QUOA:	JRST QUOAK
	JRST QUOOV
	JRST DV2BN
	JRST DV1BN
	JRST BNDV
¬
QUOOV:	SKIPN RWG
↓ JRST OVBLER
↓AOS D,T
↓JFCH 8∞,PLOV
∪∃I'(A(Di

∀4∃#+∨¬⊗tβπ¬≠∀Aλ12``@@``@1cαt%@9z$$Lh~%J∧i≠∧,"
	tLUDλDM∀~9∀|PQ!∩∧U*:B¬
Yx∀[λ⊃↔4$|X9b="λ→E 84∧iP∃dg⊂'S⊂)bj⊗∧¬
QUMAK2:	IDIVM D,TT
∀∪5∨ ~∃∧!2RPhP&*J≥!αQE$*aH∀Ph"FV|
-EhL~ε69¬"Q2b~iD$¬]~⊗RizA5E%βiyαB⎇~&B~hR¬≤XK hPα(∩J*uλ⊃	~Tq6AQ@∧a`Rg⊂ ∀T,1		;SETZ/1 => SETZ
	 JRSP T⊃4EX"
	JRST QUOAK2		9IDIVM WORKS FOR OTHER CASES
;T1,QUO .TIMES &DIF .PLUS T∩1 QUOTIENT TAMES DIFFERENCE @LUS T∩2 T20 T24 T4 T7 T7A↓(o0APk0bAPk⊂≥αT2b∞"Xα`∀∃(9βHh!Q%#αB2JY4⊃(
E∪S0i6α.si@&,P'S ¬ ARG GIVEJ -GIVE IPλA∨U(~∧∪5∨-
AQ(XJdαBI$%\r5αε∀:Mα≡M2⊗)↓hα≡&Z*α>FQ∧zB-(~D`:Th∩(Hαg*$U,FE∧R))j⊃$l⊂FBεEεE(jg]αiedh⊂P)⊗-Tjg`nB]aP%Qbh)P⊂b")"TiP'cλ#*g!U$gg∃,h"FB↔*$fQi]∧fSk"dP∀⊗*$fQi`FEαibj-∪P)"fQ&εE∧R))j⊂∃→_FE ∧IF:	SKIPA R,[DIFFA]
.PLUS:	MOVEI R,PLUSA
T21:	MKVNI T,1
	PUSH P,A
∪!U'⊂A 1∧~∧∪)%'(APd`~∀4⊃#+∨Q∪≥(h∪'↔∪AαA$Ym#+∨βt~∃)∪5&t∪5∨-∩↓$Y)∪5'α~(∪')i~A%5
_~∀%∃%'(↓(dd~)	∪

∃%≥π∀t@A'-∪!αAHY7	∪→
β*~)!→+&h@@@@@@A≠=)β∩AHY!→+Mα~∃(Hdtββ=∃∂
APY(b~)(d`t%≠∨-
↓Y(∩$sλ@Z↓βππ+5+→β)∃λA-β1+

∀%β		∩↓XbQ@R∩∩wQ(@ZA91(AYβ→+
↓∪⊂→αdJ:∧4PJ"J1∧12P4U!IQhLj>Z:JαQ15
BQ$4PJ"J2~αP$$KZI↓5∧
∩∩J-~Mα>2α&:N%∩V∞RLz9α∩M~BεR≤AαRε∀b∀4(Lj>Z⊗jαQ2Be*M`$KZ→↓5∧
>
*rαB>&u"⊗Iα$yαεJ:αZ⊗∞$zIα>pαB∩0hP&6>4)α¬1k	"→$hP&*NααQ2:5~.&@HInB&≤YαVA∧2&JN"αεJ≥∧
:⊃α$JNBε$~!αRzαεBB∀zBJ&
"∃α2|z@4(LRJNQ¬!H4(LRJNQ¬!L4(Lj>Z∃∧!2RPhP&*J≥!↓I2¬Y9-Fhh*QQPJ6>Z*α¬1"2I↓↓↓α↓↓↓↓βZ~2>
"&:≥¬α>&:"αεJ&$B6⊗RL→α2>⎇4(εU~AαQdrZN9~hP→*%≥"
F`hP→*%≥"
FPhUFw MD:@αk

%⊂K\iIt
$→hr¬≥YT∧m∧Z(∃$,D
tM$∧λdd|~I∀t:	hUE"λ~$8h!≠∧≥α¬V2E∩⊃↔5≤\~∧¬,tHZ5~¬(jUUR	λ∀≤Z
(U
,~(T h!∀∧U≥∧λ∩eTk(4DXQ*C<!_∀|∀)d∧2eFAPPL(h4bβ¬eE#<qQ%#=π!∀l⎇hT¬%"HA∪\-	~B∧
)~DDlZI∀~∧Iyuα¬y~DB∧_85,mYH∃$,D
deXQPU#{ε∪PM:X"¬αJ	E-≠↓Q LU*:B∧4Ix∃#λQ!PU#yw LU:∧¬"eFysh!→%∃≥D
C=C⊃Q hU(k$≤D7!∀l⎇hT¬"dAQ LU*:Bβ∩H2r[≠QPPLhJe∩¬EJE h!→$4≤DπαeTk(4CHQ!∀l⎇iT¬"eAQ L≤→Xt*¬EH¬5Tj[%Ph!∀¬≤-K$∧"`Q+$5T9π∪PL**5"β%E∧
H⊃↔4$|dzB∧dZD∧4%j$∧4hX5"∧zhU∀4Izr⎇hHU∀4IzphPc]FT¬#2
Bd
¬F4¬#T
Cλ∃&H6H
F-⊃(
F-⊃6∧
-⊃+ε(⊃V	_⊃3Hλi∩1⊃)D⊂0TaQA"B'7nh∩(iH⊂R(yU3"'84R5	∧∪t∀dλStHλ	1sU)W/,(λ9sU∩)j11β!!"U
'!16⊂i∧⊃⊂(x⊂Uβ!!2Tt∧
∩1IIp5α'8S∪p*I3Qh
:3+λ	h6∃λ	~h⊃R+λ1λ∀	y3Uβ!!16⊂i∧⊃⊂(x⊂Uβ!!2TTjD∃
c!!"U
G!0p2)d∀K∀*Yp#"A→TTu∧

P#!!4∃4i	H∀λi⊂R1a↔qS∪h~∩3Qd
u3+∧	Q6∃∧
p4hλ)1sU)Q"B2J*uλ∃εq"C"JFP.B*
4r∩D
⊃Sλ)1t"!↔tt⊃(903λ	λ0rhλitH∩Jλc"B)*Tuλ
Fc"B*85⊗HλEα".i_H⊂R(yU3(
Ish∪λ~Qq+∧
q(⊃hZβ"B)*Tuλ
Fp".d
3Q⊃*(S∪ueD∪Su∧	uQ4Hi∪uc!!"Ug!33uHT⊃∃
A".qI≠⊃1λ
	r3U∧λ4R5		15∩(4∪∪sj↓"B2J*uλEH⊗kJf≠#"Uε⊗,B3)zQ(⊂%E⊃J#!!2Tt∧
∪UJ9r4β!!6⊂u∧εj∀J!↔q∩4jλ5⊂r∧
∪h⊂iyUQ4JD∀u3$
∪h⊂I_sU3!QB2TJ:λ∃&A.stλZP5⊃$	sH∃
yh⊃R+λ1λ∀	y3Uβ!!33uHY(∃∃¬H1q⊂JA"B3)zQ(∃
E⊃α.hi6⊃1∧
∪r3JD∀u3$λssUHZU⊃1∧
∪h⊃IIp5∩)hc"B)*tλ∃¬I1S∪h~α.p)hλ⊃3JH4H⊃IIp5∩)hh∪∪izβ"B)YuQ(λE∃∃β!!33uHT∃∃λ_q⊂U↓QB2TJ:λ∃
a⊃.r1IIp5λλ83SSjD∩⊂5HT∀q5∧	qUS	t⊃S⊃aQC"Uε⊗∞B3)zQ(∃¬Hα.th~Q(∪iHλ∀u)Uλ∩U*:λ∩3H84q(
I⊃4Q$	4h∪jh4QS	q"B6λ:λ

%".sjλ4P5λT⊃R6λXλ∀∪i→Uβ"JF-⊃6ε'B2QH9λ∞ε∃∀J"'8r⊃0i4⊃StD	uQ4Hi∪kλ	_H∀sdλ∩4tλ~⊂rλ
Ih⊂R(yU3#!*-⊃'!03pI)H⊃K
F-#"JF-⊃6π!33uHT∃∃λA"U&H6.A~u0H
¬∀∪∃*7β"B)*Tuλλi6#!!"C"Hk∩1⊃)gB2Tj∧∃⊃K	UL#!!2TTjD∀⊃∪	irC"AQQS∩(H3NB)*tλ∃¬HS∪UF⊃"B2J*uλ∀λI∪RrAQC"C!(0TnA→Ttλ
E∪UTi94β"A→TTu∧λ0TpHq"B4i94⊂(
E⊂qR+ε#"B)YuQ2$
⊃S	x5#!!2U3*λq(∃
E∀⊃∪	i2c"A_p33D
∃⊗f≠mw!⊃.p0J4∪qH¬VJJLfUH∩4d	Sh∪	yQq4DλR6∪JY#"B)*Tuλλ_TsuAQB33ji4h∃
A"B2J*uλ

E#"@↓GtQ3(→3Q⊃*$∀Q3(→,H⊃IIp5λλi6
λλi∪p5εD∩1VλZTH		_R6λ∧I1R6ε∀	⊃R+↓"C"J(302)h⊃4NA~q5⊗H$⊃K∀	J4nβ!!2Tt∧
∪UJ9r4β!!(∩TJ:λ∀Q)XR1b!↔pR1ij3#"A∀∀rr*λ(⊃
Jβ"B$∧∩Tt∧
∀Q)X24B!↔qS∪ij3(∩*4⊃4TIzH(
(5∃4Ijh∃∪d
∩⊃(	jTrr*↓"B1+λrλ⊂%HB".hi4Tu∧λ4Qh	~h⊃R+	U3#!!2Tt∧
∪UJ9r4β!!(∩TJ:λ∀Q)X2,B!↔r1H
80ssHD∩4hλ)1sU)T∪SueD∪06(((⊃r*h(∪u*D⊃R4J:β"B$
rr4λ∀∃⊃↓QB(λ	*tλ∃¬JQ30)~B".hi∪sU)T∩4hλZTStAQB2U)Z⊃(∃
E⊂T⊃	IRrC!!33uHT⊃∃
A"B4hZ⊗H∃
Eα".i→H∃∩λT⊂p4hT∪qH¬λ∀q*KH*%D∃∀V$
∪h∃i→C"B)_∩5H
E⊃β"A→TTu∧λR6!QC"THY02,G!4rr*	λ∃¬λJ""':q3∪¬D∩1Hλi4Tu∧λ4Qh	~h∀q*KKλ⊂)hβ"B$	TTu∧λT⊃∪	irB"'4∀q0iyQλ⊂*(h∩4d¬tq5%λ∃∩λYH∀Q)X23QλZC"B(831(
E⊗mεε¬K".h
9∪u3λD⊂Q(ε¬λ∪SjD∀q5$#"B$	TTu∧λT⊃∪	irC"A→3uQ$λ+
⊂%⊃"B4
Zrλ∀¬H4L"!↔s54jD∀p5HT⊂4L!QB4∃*9∩H∀¬HSU∀J6"".j9r4∀dεH∃3IH4thλ)1sU)T∩4c!!4∪t∧
⊂4F⊃".h¬:q5⊗D¬∪tH
85⊗J!QB(∩J*uλ
	t∩C!!4∪t∧
⊂4F⊃"B2J*uλ⊂Jλ∪∪Ri!"C"AQQS∪h~∞B5λKP(∀EJC"B$	3uQ)∀∀K∃
*5∩β!!2Tt∧
∪UJ9r4β!!(∩TJ:λ⊃Sλ)1qC!!(∩TJ:λ⊃S	x5
β!(R6
π!2U3*λ(∀K
λ∪∪Ri!.p4Ht∩4hλ→∀Q0(K(∪qD
Q45)~Q1λ
K4⊃+D∧∩1H∧(p3∪∧(1λ
I⊃3H
(5∃4Id∪∩4j∧⊂3Tjx4H∩)d⊂#"A~∪t∩D
α"'83∀q$	1HλIhp3∪∧(1λ
(5∃4Id∪U3(ZR0hλ→Tuq*$∩3H
Jβ"C!(S∪p*F∞B2J:λ∃	_S∪p*A"B2JY4⊃(
%⊃S∪h~#"A~∪t∩D
β"AQC"R(k⊃4TG!5u⊂$p4Qd
∪shλ)1h⊃IzH⊃R+	U3(¬T∩1R+∧7#"A→TTu∧∧∩1R+ε#"I	_R6∞A~∃4r∧
⊂qI≠#"DI1R6ε↔B2Tj∧∃⊃IJ∀rt↓QB(∀	z∩H∀¬A"B0h→3λ∃
E⊗lMεF¬K#"B$	TTu∧	1V⊃**C"B)*tλ∃¬I1R6↓QB4∪j	H∀↓QC"Iλi6∞B)*tλ∃¬IUTri~β"B$∧∀∪t	$∀β!!(∀∪j	H∀↓QB33ji(∃
Jβ"B(833λ
E⊗lMεF¬K#"B$	TTu∧λR6⊂I_c"B)*Tuλλi6C! ↓GkQtHX5λIH4th	H4tt∧λtQ0*H4Tλλz∀L(λz∀N(	Y3H∪(≠λ∪6λd∪6∀d	06⊃I→H∪0+π,Lc!!"KQj(05∞A_6⊂r∧λ+⊂C!%S⊃4j7B4∃*9λ∀λ⊃"B4
Zrλ∀¬HC"B)YuSR$
C!)⊃4tjπB4ri~⊂(⊂%Kpp3)D⊃KQ"QtHX5⊃4JπB2∀IKR(⊂%E⊂p3(tMOVEI R,GRSUCE
GTR1:	MOVE F,T
	AOJGE T,GTR9
	HRRI A,TT
	ADDI F,2(P)
	HRLI F,(T)
	PUSHJ FXP,SAV5M2
	HRLI D,(JRST)
	MOVEM D,CFAIL
	HRLI R,(JRST)
	MOVEM R,CSUCE
	MOVEI R,COMPR
	MOVEM A,GRESS0
	JRST T24

GTR9:	MOVEI D,QMAX+1(A)
	SOJA T,WNALOSS

MIN:	SKIPA A,[CAML D,1]
MAX:	HRLOI A,(CAMG D,)
	AOJE T,NMCK0
	MOVEI D,MXF
	MOVEI R,MXS
	SOJA T,GTR1

MXF:	MOVE AR1,AR2A
	SKIPA D,TT
MXS:	MOVE AR2A,AR1
	AOBJN F,GRSUC1
MAXFIN:	MOVEI B,(AR1)
	PUSHJ FXP,RST5M2
   2DIF JRST @(B),MAX923,QFIXNUM
MAX923:	T14EX		;FIXNUM
	T7X		;FLONUM
	T13X		;BIGNUM
;GRSUC2 GRSUC1 GRS923 GRSUCE GRSFIN GRSF1 GRFAIL GRSWF GRSWX

GRSUC2:	MOVE D,TT
GRSUC1:
   2DIF JRST @(AR2A),GRS923,QFIXNUM
GRS923:	T15		;FIXNUM
	T4		;FLONUM
	T12		;BIGNUM

GRSUCE:	AOBJN F,GRSUC2
GRSFIN:	MOVEI A,TRUTH
GRSF1:	PUSHJ FXP,RST5M2
	SUB P,PLUS8
	POPJ P,
GRFAIL:	MOVEI A,NIL
	JRST GRSF1

GRSWF:	SKIPA AR1,[QFLONUM]
GRSWX:	MOVEI AR1,QFIXNUM
	MOVE AR2A,AR1
	JRST GRESS0


]	;END OF ARITH OPS WITH BIGNUM==1
;ADD1 SUB1 REMAINDER MINUS ABS MINUSP PLUSP ZEROP

IFE BIGNUM,[

SUBTTL	ARITHMETIC FUNCTIONS WITH BIGNUM==0

ADD1:		JSP T,FLTSKP
	AOJA TT,FIX1
	FAD TT,[1.0]
	JRST FLOAT1
SUB1:	JSP T,FLTSKP
	SOJA TT,FIX1
	FSB TT,[1.0]
	JRST FLOAT1

REMAINDER:	JSP T,FXNV1
	JSP T,FXNV2
	IDIV TT,TT+1
	MOVE TT,TT+1
	JRST FIX1

MINUS:	JSP T,FLTSKP
	SKIPA T,CFIX1
	MOVEI T,FLOAT1
	MOVNS TT
	JRST (T)

ABS:	JSP T,FLTSKP
	SKIPA T,CFIX1
	MOVEI T,FLOAT1
	MOVMS TT
	JRST (T)

MINUSP:	SKIPA R,[JUMPGE TT,FALSE]
PLUSP:	MOVE R,[JUMPLE TT,FALSE]
	JSP T,FLTSKP
	JFCL
	XCT R
	JRST TRUE

ZEROP:	JSP T,FLTSKP
	JFCL
	JUMPE TT,TRUE
	JRST FALSE

;$IFIX $FIX FIX4 FLOAT FIXFLO FLOAT3

$IFIX:
$FIX:	TDZA R,R
	 MOVEI R,TRUTH
	JSP T,FIXFLO
  	TLNN T,FL	;FIXFLO LEFT TYPE BITS IN T
	 JRST FIX4
	JSP T,IFIX
	JUMPE R,FIX1
	POPJ P,

FIX4:	JUMPE R,PDLNKJ
	POPJ P,

FLOAT:	TDZA R,R
	 MOVEI R,TRUTH
	JSP T,FIXFLO
  	TLNN T,FX	;FIXFLO LEFT TYPE BITS IN T
	 JRST FIX4
	JSP T,IFLOAT
	JUMPE R,FLOAT1
	POPJ P,

FIXFLO:	PUSH P,A
  	LSH A,-SEGLOG
  	HLL T,ST(A)	;LEAVES TYPE BITS IN T
  	TLNN T,FX+FL
  	 JRST FLOAT3
	POP P,A
	MOVE TT,(A)
	JRST (T)

FLOAT3:	POP P,A
	%WTA NMV3
	JRST FIXFLO
;MIN MAX MINMAX .GREAT .LESS LESSP GREATERP MNMX1 MNMX9 GRESS GRUSE

MIN:	SKIPA A,[CAMLE F,1]
MAX:	HRLOI A,(CAMGE F,)
	AOJE T,NMCK0
	MOVEI D,MINMAX
	SOJA T,MNMX1

MINMAX:	XCT MNMX0	;CAMG F,TT OR CAML F,TT
	MOVE F,TT
	JRST PLUS4

.GREAT:	EXCH A,B
.LESS:	PUSH P,A
	PUSH P,B
	MOVNI T,2
LESSP:	SKIPA A,[CAML F,2]
GREATERP:
	HRLZI A,(CAMG F,)
	MOVEI D,GRESS
MNMX1:	HRLI D,(JRST)
	MOVEM D,PLUS3
	MOVNM T,PLUS8
	MOVE R,T
	AOJGE T,MNMX9
	HRRI A,TT
	MOVEM A,GRESS0	;THIS IS ALSO MNMX0
	ADD R,P
	MOVE A,1(R)
	SETOM PLUS0
	JSP T,FLTSKP
	SETZM PLUS0
	MOVE F,TT
	AOJA R,PLUS7

MNMX9:	MOVEI D,QMAX+1(A)
	SOJA T,WNALOSS

GRESS:	XCT GRESS0
	JRST GRUSE
	MOVE F,TT
	CAME P,R
	JRST PLUS9
	SUB P,PLUS8
	JRST TRUE
GRUSE:	SUB P,PLUS8
	JRST FALSE

;.DIF DIFFERENCE DIF2 .QUO QUOTIENT QUO2 QUO3

.DIF:	PUSH P,A
	PUSH P,B
	MOVNI T,2
DIFFERENCE:	MOVE R,[JRST DIF2]
	MOVE D,R
	SOJA D,DIF1

	SKIPA D,[FSBR F,TT]
DIF2:	MOVE D,[SUB F,TT]
	MOVEM D,PLUS3
	MOVE D,[FSBR F,TT]
	MOVEM D,PLUS6
	MOVE F,TT
	JRST PLUS4

.QUO:	PUSH P,A
	PUSH P,B
	MOVNI T,2
QUOTIENT:	MOVE R,[JRST QUO2]
	MOVE D,R
	SOJA D,QUO1

	SKIPA D,[FDVR F,TT]
QUO2:	MOVE D,[JRST QUO3]
	MOVEM D,PLUS3
	MOVE D,[FDVR F,TT]
	MOVEM D,PLUS6
	MOVE F,TT
	JRST PLUS4

QUO3:	CAIN TT,1
	 CAME F,[400000,,0]
	  CAIA
	   SKIPA TT,F
	    IDIVM F,TT
	EXCH F,TT	;ALL THIS LOSSAGE SO THAT F+1 WONT BE DISTURBED
	JFCL 8.,.+2
	JRST PLUS4
	SKIPN RWG
	JRST OVFLER
	SKIPGE TT
	SOSA F,TT
	AOS F,TT
	JFCL 8.,OVFLER
	JRST PLUS4

;.TIMES TIMES QUO1 .PLUS PLUS DIF1 PLUS1 PLUS7 PLUS5 PLUS3A PLUS4 PLUS9 PLUS2 PLUS2A PLUS2V T7O0

.TIMES:	PUSH P,A
	PUSH P,B
	MOVNI T,2
TIMES:	MOVE R,[IMUL F,TT]
	MOVE D,[FMPR F,TT]
QUO1:	MOVEI F,1
	JRST PLUS1

.PLUS:	PUSH P,A
	PUSH P,B
	MOVNI T,2
PLUS:	MOVE R,[ADD F,TT]
	MOVE D,[FADR F,TT]
DIF1:	MOVEI F,0
PLUS1:	MOVNM T,PLUS8
	JUMPE T,PLUS2
	ADD T,P
	MOVEM R,PLUS3
	SETZM PLUS0
	MOVE R,T
PLUS7:	MOVEM D,PLUS6
	HRLS PLUS8
	JRST 2,@[PLUS4]

PLUS5:	MOVE D,PLUS6	;FAD F,TT OR FMP F,TT  OR ETC.
	MOVEM D,PLUS3
	SETOM PLUS0
	EXCH F,TT
	JSP T,IFLOAT
	EXCH F,TT
PLUS3A:	XCT PLUS3
PLUS4:	CAMN P,R
	JRST PLUS2
PLUS9:	MOVE A,1(R)
	JSP T,FLTSKP
	JRST .+4
	SKIPE PLUS0
	AOJA R,PLUS3A
	AOJA R,PLUS5
	SKIPE PLUS0
	JSP T,IFLOAT
	AOJA R,PLUS3A

PLUS2:	MOVE TT,F
	JFCL 8.,PLUS2V
PLUS2A:	SUB P,PLUS8	;FALL THRU TO MAKNUM
	SKIPN PLUS0
	JRST FIX1
	JRST FLOAT1
	
PLUS2V:	JSP T,T7O0
	JRST PLUS2A

]	;END OF ARITH OPS WITH BIGNUM=0



T7O0:	SKIPE VZUNDERFLOW		;NON-NIL => FLOATING UNDERFLOW
	TLNN T,100	.SEE %PCFXU	; YIELDS ZERO RESULT INSTEAD OF ERROR
	JRST UNOVER
	MOVEI TT,0
	JRST (T)

;EXPT XPTLL XPT.X XPTLX XPTLX1 XPTLX2 XPTOV

SUBTTL	GENERAL EXPONENTIATION ROUTINE

EXPT:	JRST 2,@[.+1]		;SUBR 2 - COMPUTE A↑B
	EXCH A,B		;FIND TYPE OF EXPONENT FIRST
IFN BIGNUM,[
	JSP T,NVSKIP		;EXPONENT IS . . .
	 JRST XPT.B		;IT'S A BIGNUM
	 JRST XPT.X		;IT'S A FIXNUM
	EXCH A,B		;IT'S A FLONUM
	JSP T,NVSKIP		;BASE IS . . .
	 JRST XPTBL		;BIGNUM BASE
	 JSP T,IFLOAT		;FIXNUM BASE - FLOAT IT
]		;END OF IFN BIGNUM
IFE BIGNUM,[
	JSP T,FLTSKP		;EXPONENT IS . . .
	 JRST XPT.X		;IT'S A FIXNUM
	EXCH A,B		;IT'S A FLONUM
	JSP T,FLTSKP		;BASE IS . . .
	 JSP T,IFLOAT		;FIXNUM BASE - FLOAT IT
]		;END OF IFE BIGNUM
XPTLL:	PUSH P,CFLOAT1		;FLONUM↑FLONUM
	SKIPN (B)		;   X↑0.0 => 1.0
	 JRST 1.0PJ
	JUMPE TT,CPOPJ		;   0.0↑X => 0.0
	PUSHJ P,LOG..		;SO COMPUTE FLONUM↑FLONUM BY USING THE FORMULA:
	FMPR TT,(B)		;     B     (B LOG A)
	JRST EXP..		;    A  =  E


XPT.X:	EXCH A,B		;FIXNUM EXPONENT FOUND
	MOVE D,TT
BG$	JSP T,NVSKIP		;CHECK BASE FOR FIXNUM EXPONENET
BG$	 JRST XPTBX		;BIGNUM BASE
BG%	JSP T,FLTSKP
	 JRST XPTXX0		;FIXNUM BASE
	PUSH P,CFLOAT1		;FLONUM BASE => FLONUM RESULT
XPTLX:	JSP R,XPTZL		;CHECK EASY CASES
	SKIPA R,TT		;NORMAL CASE - USE THE MULTIPLY
XPTLX1:	 FMPR R,R		; AND SQUARE HACK
	TRNE D,1
	 FMPR T,R
	JFCL 8,XPTOV		;CHECK FOR OVERFLOW
	LSH D,-1
	JUMPN D,XPTLX1
XPTLX2:	MOVE TT,T		;ANSWER GOES IN TT
	POPJ P,

XPTOV:	JSP T,T7O0
	POPJ P,
;XPTXX0 XPTXX XPTXX5 XPTXX3 XPTXX4 2XPT 2BGXPT 2BGXP1

XPTXX0:	PUSHJ P,XPTXX
	JRST FIX1
	POPJ P,

;;;  SKIPS IF ANSWER IS A BIGNUM

XPTXX:	JSP R,XPTZX		;FIXNUM↑FIXNUM - CHECK EASY CASES
	JUMPL D,ZPOPJ
IFE BIGNUM,[
	SKIPA R,TT
XPTXX5:	IMUL R,R
	TRNE D,1
	IMUL T,R
	LSH D,-1
	JUMPN D,XPTXX5
	MOVE TT,T
	JFCL 8,XPTOV
	POPJ P,
]		;END OF IFE BIGNUM
IFN BIGNUM,[
	SKIPGE R,TT
	JRST XPTXX3
	JFFO R,.+1
	LSH R,1(F)
	JUMPE R,2XPT	;XPTZX HAS CHECKED BASE, SO IT'S NOT 0/1/-1
	MOVE R,TT
XPTXX3:	MOVE TT,T	;HERE YOU GO FANS, YOU BASIC MULTIPLY BY SQUARING LOOP.
	MOVEM D,NORMF
	TRNE D,1
	IMUL T,R
	JFCL 8.,EXPT6C
	LSH D,-1
	JUMPN D,XPTXX4
	MOVE TT,T
	POPJ P,
XPTXX4:	MOVE F,R
	IMUL R,R
	JFCL 8.,EXPT6B
	JRST XPTXX3

2XPT:	MOVNI F,(F)
	IMULI D,36.-1(F)
	MOVEI TT,1
	CAIL D,35.
	JRST 2BGXPT
	ASH TT,(D)
	POPJ P,

2BGXPT:	IDIVI D,35.
	ASH TT,(R)
	JSP T,FIX1A
	PUSHJ P,NCONS
2BGXP1:	MOVE B,CIN0
	PUSHJ P,XCONS
	SOJG D,2BGXP1
	PUSHJ P,BGNMAK
	JRST POPJ1

]		;END OF IFN BIGNUM

;XPTBL XPT.B XPTZX0 EXPT6B EXPT6C EXPT1A EXPT1 EXPT3 EXPT2 EXPT4 XPTBX XPTBX1

IFN BIGNUM,[

XPTBL:	PUSH P,A		;BIGNUM↑FLONUM
	PUSHJ P,FLBIG		;SO FLOAT THE BIGNUM, THEN USE
	SUB P,R70+1		; FLONUM↑FLONUM
	JRST XPTLL

XPT.B:	EXCH A,B		;BIGNUM FOUND AS EXPONENT
	HLRZ D,(TT)
	HRRZ D,(D)
  	TLNE TT,400000
	TLO D,400000		;D GETS SIGN-BIT IN 4.9, RANDOM-NON-ZERO-BIT IN 3.1
	TLO D,1			;AND ODDP-BIT IN 1.1
	JSP T,NVSKIP
	JRST OVFLER
	JRST XPTZX0
	PUSH P,CFLOAT1
	JSP R,XPTZL		;FLONUM↑BIGNUM  -- CHECK EASY CASES
	MOVMS TT
	CAML TT,T		;T SUPPOSED TO HAVE 1.0
	JRST OVFLER
	SKIPN VZUNDERFLOW
	JRST UNFLER
	JRST ZPOPJ		;PUTS A RANDOM ZERO IN TT, AND POPJS

XPTZX0:	PUSH P,CFIX1
	JSP R,XPTZX		;FIXNUM↑BIGNUM  -- CHECK EASY CASES
	JUMPL D,ZPOPJ		;N↑-<M>  ==>  0
	JRST OVFLER



;;;  MUST SKIP 1 AS POPJ  SINCE ONLY COME HERE FROM XPTXX
EXPT6B:	MOVE R,F	;RESTORE R, AND LEAVE OLD D IN NORMF
EXPT6C:	PUSHJ FXP,SAV5	;EXPECTS RUNNING SQUARER IN R, ACCUMULATION IN TT
	PUSHJ P,BNCV	;NOTE THAT D CANT BE ZERO WHEN WE COME HERE
	MOVE B,A	;ACCUMULATION AS BIGNUM IN B
	MOVE TT,R
	PUSHJ P,BNCVTM
	MOVE A,TT	;RUNNING SQUARER IN A
EXPT1A:	MOVEM A,-4(P)
	MOVE D,NORMF
EXPT1:	TRNN D,1	;-4(P) AND A HAVE RUNNING SQUARER, B HAS ACCUMULATION
	JRST EXPT2
	MOVEM D,NORMF
	PUSHJ P,BNMUL
	MOVE D,NORMF
	EXCH A,-4(P)
EXPT3:	LSH D,-1	;-4(P) NOW HAS ACCUMULATION, A HAS RUNNING SQUARER
	JUMPE D,EXPT4
	MOVE B,A
	MOVEM D,NORMF
	PUSHJ P,BNMUL
	MOVE B,-4(P)
	JRST EXPT1A
EXPT2:	MOVEM B,-4(P)
	JRST EXPT3
EXPT4:	JSP R,RSTR5
	PUSHJ P,BNCONS
	JRST POPJ1

XPTBX:	SOJG D,XPTBX1		;BIGNUM↑FIXNUM
	AOJG D,CPOPJ		;   X↑1 => X
	MOVEI A,IN0
	JUMPL D,CPOPJ		;   X↑-N => 0
	AOJA A,CPOPJ		;   X↑0 => 1	;HACK HACK - IN0 => IN1

XPTBX1:	MOVE A,TT		;EXPONENT > 1
	SOS (P)			;COUNTERACT POPJ1 IN EXPT1
	PUSHJ FXP,SAV5
	MOVE B,BN.1		;1, STORED AS A BIGNUM
	AOJA D,EXPT1		;RESTORE VALUE OF D

]		;END OF IFN BIGNUM
;XPTII XPTI$ XPTZL 1.0PJ XPTZL1 XPTZL2 XPTZX XPTZX1 XPTM1


XPTII:	PUSH P,CFIX1		;SUBR 2 NCALLABLE (REAL NAME: ↑)
	JSP T,FXNV1
	JSP T,FXNV2
	JRST 2,@[.+1]
	PUSHJ P,XPTXX
	POPJ P,
	LERR [SIXBIT \RESULT LARGER THAN FIXNUM - #↑!\]

XPTI$:	PUSH P,CFLOAT1		;SUBR 2, NCALLABLE (REAL NAME: ↑$)
	JSP T,FLNV1
	JSP T,FXNV2
	JRST 2,@[XPTLX]		;OVERFLOW MUST BE CLEAR ON ENTRY TO XPTLX



XPTZL:	JUMPN TT,XPTZL1		;FLONUM BASE (CFLOAT1 ON PDL)
	SKIPN D			;   0.0↑X => 0.0,
1.0PJ:	MOVSI TT,(1.0)		;   EXCEPT 0.0↑0.0 => 1.0
	POPJ P,

XPTZL1:	JUMPGE D,XPTZL2		;    -Y    1  Y
	MOVSI T,(1.0)		;   X  = (---)
	FDVR T,TT		;          X
	MOVE TT,T
	MOVMS D
XPTZL2:	CAMN TT,[-1.0]
	JRST XPTM1		;BASE IS -1.0
	CAMN TT,[1.0]
	POPJ P,			;BASE IS 1.0
	MOVSI T,(1.0)		;T GETS 1.0 IN ANY CASE
	JRST (R)

XPTZX:	JUMPN TT,XPTZX1		;FIXNUM BASE - PDL HAS CFIX1
	JUMPN D,CPOPJ		;   0↑X => 0,
	AOJA TT,CPOPJ		;   EXCEPT 0↑0 => 1

XPTZX1:	CAMN TT,XC-1		;BASE = -1
	JRST XPTM1
	CAIN TT,1		;FOR BASE = 1, ALSO EASY
	POPJ P,
	MOVEI T,1		;T GETS 1 IN ANY CASE
	JRST (R)

XPTM1:	TRNN D,1	;FOR BASE = -1 OR -1.0, SIMPLY
	MOVMS TT	; ASCERTAIN PARITY OF EXPONENT
	POPJ P,

;RANDOM RAND1 IRAND IRAND0 IRAND3 IRAND5 RNDM1 RNDM2 RNDM0 RNDM1A RNDM2A

SUBTTL RANDOM

RANDOM:	SKIPA F,CFIX1
	 MOVEI F,CPOPJ
	AOJG T,RNDM0
	AOJLE T,RAND9
	POP P,A
	JUMPE A,IRAND		;ONE ARG OF NIL CAUSES INITIALIZATION
	PUSH P,F
	JSP F,RNDM0
	MOVE D,TT		;ANY OTHER ARGUMENT SHOULD BE A
	JSP T,FXNV1		; FIXNUM N, AND WE GENERATE A
	JUMPLE TT,RAND1		; FIXNUM IN THE RANGE 0 TO N-1
	TLZ D,400000
	IDIV D,TT
	SKIPA TT,R
RAND1:	 SETZ TT,		;RETURN 0 FOR NON-POSITIVE ARGUMENTS
	POPJ P,

IRAND:	MOVE TT,[171622221402]	;A GOOD STARTING NUMBER
IRAND0:	MOVEI T,LRBLOCK-1	;INITIALIZE THE RANDOMNESS
IRAND3:	MOVE D,TT
	MULI D,3125.
	DIV D,[377777777741]
	MOVEM R,TT
	TLCE T,400000
	 JRST IRAND5
	HRLM R,RBLOCK(T)
	JRST IRAND3

IRAND5:	HRRM R,RBLOCK(T)
	SOJGE T,IRAND3
	MOVEI D,ROFSET
	MOVEM D,RNOWS
RNDM1:	MOVEI T,LRBLOCK-1
	MOVEM T,RBACK
	JRST RNDM1A

RNDM2:	MOVEI D,LRBLOCK-1
	MOVEM D,RNOWS
	JRST RNDM2A

RNDM0:	SOSGE T,RBACK		;BASIC COMBINATION FOR RANDOMNESS
	 JRST RNDM1
RNDM1A:	SOSGE D,RNOWS
	 JRST RNDM2
RNDM2A:	MOVE TT,RBLOCK(T)
	ADDB TT,RBLOCK(D)
	JRST (F)
;HAULONG .HAU 4HAU 3HAU1 1HAU 2HAU 3HAU

SUBTTL	HAULONG FUNCTION

HAULONG:	PUSH P,CFIX1
.HAU:
BG$	JSP T,NVSKIP
BG$	JRST 1HAU
BG%	JSP T,FLTSKP
	JRST 4HAU
	%WTA FXNMER
	JRST .HAU
4HAU:	MOVM D,TT
	MOVEI TT,35.+1
3HAU1:	JFFO D,.+2
	TDZA TT,TT
	SUBI TT,(R)
	POPJ P,

IFN BIGNUM,[
1HAU:	MOVEI F,(TT)	;RECEIVES BN HEADER IN TT
	HRRZ R,(F)	;LEAVES HAULONG IN TT, PTR TO NEXT TO LAST
	MOVEI TT,35.+1	;IN F, CNT OF # OF ZEROS FOR LAST WD IN R
	JUMPE R,3HAU
2HAU:	ADDI TT,35.
	HRRZ D,(R)
	JUMPE D,3HAU
	MOVEI F,(R)
	MOVEI R,(D)
	JRST 2HAU

3HAU:	HLRZ T,(R)
	MOVE D,(T)
	JRST 3HAU1
]	;END OF IFN BIGNUM


;HAIPART 0HAI 0HAI1 0HAI2 0HAI3 3HAI 3HAI1 3HAI2 3HAI3


SUBTTL	HAIPART FUNCTION

HAIPART:
IFN BIGNUM,[
	JSP T,NVSKIP
	 JRST 1HAI
]
IFE BIGNUM,
	JSP T,FLTSKP
	 JRST 0HAI
	%WTA FXNMER
	JRST HAIPART

0HAI:	MOVM TT,TT
	JFFO TT,.+2
	 JRST 0POPJ		;FOR ZERO ARG, JUST RETURN ARG!
	HRREI F,-36.(D)		;-<# OF BITS IN ARG> NO IN AC F
	JSP T,FXNV2
	JUMPLE D,0HAI1
	ADD D,F
	JUMPG D,PDLNKJ		;MORE DIGITS REQUESTED THAN ARE AVAILABLE
	LSH TT,(D)		;GETTING HAI PART INTO AC TT
	JUMPGE TT,FIX1
IFN BIGNUM,	JRST ABSOV
IFE BIGNUM,	JRST OVFLER

0HAI1:	JUMPE D,0POPJ		;RETURNS A FIXNUM ZERO
	CAMGE D,F
	 JRST 0HAI3
	MOVNS D
0HAI2:	SETO F,			;REQUESTING LOW PART BY NEG COUNT
	LSH F,(D)		;CREATE MASK TO LET PROPER BITS THRU
	ANDCM TT,F
	JRST FIX1

0HAI3:	JUMPGE TT,PDLNKJ
IFN BIGNUM,	JRST ABSOV
IFE BIGNUM,	JRST OVFLER

IFN BIGNUM*USELESS,[
3HAI:	MOVNS D		;ACTUALLY ASKING FOR LOW PART
	CAILE D,35.
	JRST 3HAI1
	JUMPE D,0POPJ
	HLRZ TT,(TT)
	MOVE TT,(TT)
	JRST 0HAI2

3HAI1:	PUSH FXP,D
	PUSHJ P,1HAU
	POP FXP,D
	CAIL D,(TT)
	JRST PDLNKJ
	IDIVI D,35.
	PUSH P,C
	MOVEI F,C	;F WILL BE POINTER TO LAST OF FORMNG LIST
	MOVE C,(A)	;C HOLDS POINTER TO FNAL RESULT
	MOVEI B,(C)	;B GOES CDR'ING DOW INPUT ARG
3HAI2:	HLRZ TT,(B)
	MOVE TT,(TT)
	PUSHJ P,C1CONS
	HRRM A,(F)
	MOVEI F,(A)
	HRRZ B,(B)
	SOJG D,3HAI2	;D HOLDS HOW MANY WORDS TO USE
	JUMPE R,3HAI3	;R HOLDS HOW MANY LEFT OVER BITS FROM D WORDS
	HLRZ TT,(B)
	MOVE TT,(TT)
	MOVNI D,1
	LSH D,(R)
	ANDCM TT,D
	JUMPE TT,3HAI3
	PUSHJ P,C1CONS
	HRRM A,(F)
3HAI3:	MOVEI A,(C)
	PUSH P,AR1
	PUSHJ P,BNTRUN		;IN LOPART CASE, MAY NEED TO GET
	POP P,AR1		; RID OF LEADING ZEROS
	POP P,C
	HRRZ B,(A)		;MAYBE WHAT WE HAVE IS SHORT ENOUGH
	JUMPN B,BGNMAK		; TO FIT IN A FIXNUM; IF SO, WE CAN
	JRST CAR		; USE ONE WE JUST CONSED FOR BIGNUM!
]	;END OF IFN BIGNUM*USELESS

;LNGTER LENGTH LNGTH0 LNG1A LNGTH1 LNGTE1 LNGTH2 LNGTH5 LNGTH6 BIGP

SUBTTL	LENGTH AND BIGP FUNCTIONS

LNGTER:	WTA [NON-LIST - LENGTH!]
	JRST LNGTH0

LENGTH:	SKIPA T,CFIX1
	 MOVEI T,CPOPJ
LNGTH0:	SKIPE V.RSET
	 JRST LNGTH5		;FOR *RSET MODE, USE SLOW ERROR-CHECKING LOOP
LNG1A:	MOVEI TT,777777		.SEE $LISTEN	;SAVES R
LNGTH1:	JUMPE A,LNGTH2
	HRRZ A,(A)
	SOJG TT,LNGTH1
LNGTE1:	MOVEI TT,(A)		;MAKNUM
	JSP T,FXCONS
	WTA [LIST IS CIRCULAR - LENGTH!]
	JRST LNGTH0

LNGTH2:	XORI TT,777777		;ONE'S COMPLEMENT!
	JRST (T)

LNGTH5:	MOVEI TT,777777
LNGTH6:	SKIPN D,A		;DONE IF NIL SEEN
	 JRST LNGTH2
	LSH D,-SEGLOG
	SKIPL ST(D)		.SEE LS
	 JRST LNGTER
	HRRZ A,(A)
	SOJG TT,LNGTH6
	JRST LNGTE1


IFE BIGNUM,	BIGP==:FALSE

IFN BIGNUM,[
BIGP:	PUSHJ P,TYPEP	;SUBR 1 - IS IT A BIGNUM?
	CAIE A,QBIGNUM
	SETZ A,		;RETURNS T OR NIL
	JRST NOTNOT
]		;END OF IFN BIGNUM
;BOOLE BOOLL BOOLG BOOL1 ODDP1 ODDP ODDP2 ODDP21 ODDP4 ODDP3

SUBTTL	BOOLE AND ODDP FUNCTIONS

BOOLE:	SKIPA F,CFIX1
	MOVEI F,CPOPJ
	MOVE R,T
	ADDI R,2(P)
	HRLI T,-1(T)
	MOVEM T,PLUS8
	MOVE A,-1(R)
	JSP T,FXNV1
	DPB TT,[350400,,BOOLI]
	PUSHJ P,BOOLG
	MOVE D,TT
BOOLL:	PUSHJ P,BOOLG
	XCT BOOLI
	JRST BOOLL
BOOLG:	CAIL R,(P)
	JRST BOOL1
	MOVE A,(R)
	JSP T,FXNV1
	AOJA R,CPOPJ
BOOL1:	ADD P,PLUS8
	POP P,B
	JRST (F)

ODDP1:	%WTA FXNMER
ODDP:	SKOTT A,FX
IFN BIGNUM, JRST ODDP4
IFE BIGNUM, JRST ODDP1
ODDP2:
  	MOVE TT,(A)
ODDP21:	TRNN TT,1
	 JRST FALSE
	JRST TRUE

IFN BIGNUM,[
  	ODDP4:	TLNN TT,BN
  		 JRST ODDP1
  		MOVE TT,(A)
ODDP3:	HLRZ TT,(TT)
	MOVE TT,(TT)
	JRST ODDP21
]		;END OF IFN BIGNUM
;$FSC $ASH $ROT $LSH SHIFTX SHIFTY $LOADB %LOADB .LODB1 $LDB %LDB .LDB2 $DEPOB %DEPOB .DPOB1 $DPB %DPB .DPB1 .DPB2 .GCD .GCD0 .GCD3 .GCD1 .GCD2 GCD0 GCD GCDXX

SUBTTL	FSC, ROT, LSH, AND GCD FUNCTIONS

$FSC:	JSP T,FLTSKP	;SUBR 2
	JFCL
	JSP T,FXNV2
	CAIG D,-1
	FSC TT,(D)
	JRST FLOAT1

$ASH: 	HRLZI R,(ASH TT,(D))
	JRST SHIFTX
$ROT:	SKIPA R,[ROT TT,(D)]	;SUBR 2
$LSH:	HRLZI R,(LSH TT,(D))	;SUBR 2
SHIFTX:	PUSH P,CFIX1
SHIFTY:	JSP T,FLTSKP
	JFCL
	JSP T,FXNV2
	XCT R
	POPJ P,


$LOADB:	PUSH P,CFIX1
	JSP T,FXNV1
	JSP T,FXNV2
	JSP T,FXNV3
	JRST .LODB1

%LOADB:	PUSH P,CFIX1
.LODB1:	MOVE D,(C)
	ROT D,-6
	HRR D,(B)
	ROT D,-6
	MOVE TT,(A)
	JRST .LDB2

$LDB:	PUSH P,CFIX1
	JSP T,FXNV1
	JSP T,FXNV2
	EXCH TT,D
	LSH D,30
	JRST .LDB2

%LDB:	PUSH P,CFIX1
	MOVE D,(A)
	MOVE TT,(B)
.LDB2:	HRRI D,TT
	LDB TT,D
	POPJ P,

$DEPOB:	PUSH P,CFIX1
	JSP T,FXNV1
	JSP T,FXNV2
	JSP T,FXNV3
	JSP T,FXNV4
	JRST .DPOB1

%DEPOB:	PUSH P,CFIX1
.DPOB1:	MOVE R,(AR1)
	MOVE D,(C)
	ROT D,-6
	HRR D,(B)
	ROT D,-6
	MOVE TT,(A)
	JRST .DPB2

$DPB:	PUSH P,CFIX1
	JSP T,FXNV1
	JSP T,FXNV2
	JSP T,FXNV3
	LSH D,30
	JRST .DPB1

%DPB:	PUSH P,CFIX1	;Args = ( newbyte position←30.+size←24. word )
	MOVE D,(B)
.DPB1:	MOVE TT,(C)
	MOVE R,(A)
.DPB2:	HRRI D,TT
	DPB R,D		;puts result in TT
	POPJ P,



IFN USELESS,[
IFE BIGNUM,	GCD:
.GCD:	PUSH P,CFIX1		;SUBR 2 - NCALLABLE
	JSP T,FXNV1		;GCD OF FIXNUM ARGS ONLY
	JSP T,FXNV2
	MOVM TT,TT		;GCD(-X,Y) = GCD(X,Y)
	MOVM D,D		;GCD(X,-Y) = GCD(X,Y)
.GCD0:	JUMPE TT,.GCD2		;GCD(0,Y) = ABS(Y)
	JUMPE D,CPOPJ		;GCD(X,0) = ABS(X)
	CAMGE D,TT
	EXCH D,TT
	JRST .GCD1

.GCD3:	MOVE D,TT
	MOVE TT,R
.GCD1:	IDIV D,TT		;GOOD OLD EUCLIDEAN ALGORITHM
	JUMPN R,.GCD3
	POPJ P,

.GCD2:	MOVE TT,D
	POPJ P,

IFN BIGNUM,[
GCD0:	%WTA FXNMER		;NON-FIXNUM VALUE
GCD:	SETZ R,			;SUBR 2 - GCD, EVEN OF BIGNUM ARGS
	JSP T,NVSKIP
	TRO R,1			;TURN ON BIT IF BIGNUM
	JRST .+2		;FIXNUMS ARE OK TOO
	JRST GCD0		;DON'T LIKE FLONUMS
	EXCH A,B
	MOVE D,TT
	JSP T,NVSKIP		;NOW CHECK OTHER ARG
	TRO R,2
	JRST .+2
	JRST GCD0		;I TOLD YOU, I DON'T LIKE FLONUMS!
	JRST .+1(R)		;SO FIGURE OUT THIS MESS
	JRST GCDXX		;FIXNUM AND FIXNUM
	EXCH A,B		;FIXNUM AND BIGNUM
	JRST GCDBX		;BIGNUM AND FIXNUM
	JRST GCDBG		;BIGNUM AND BIGNUM

GCDXX:	MOVM TT,TT		;GCD OF TWO FIXNUMS
	JUMPL TT,GCDOV1		;CHECK OUT -400000000000 CASES
	MOVM D,D
	JUMPL D,GCDOV
	PUSH P,CFIX1		;EVERYTHING OKAY - CAN USE .GCD0
	JRST .GCD0
]		;END OF IFN BIGNUM
]		;END OF IFN USELESS
;$EQUAL $EQL1 $IEQ IEQUAL $LESS $GREAT $IGL1 $IGL IGRT IADD1 $ADD1 ISUB1 $SUB1

SUBTTL	FUNCTIONS:  =  <  >  1+  1+$  1-  1-$

$EQUAL:	JSP T,FLTSKP	;NUMERIC EQUAL  =
	JRST IEQUAL
	EXCH A,B
	MOVE D,TT
$EQL1:	JSP T,FLTSKP
	JRST 2EQNF
$IEQ:	CAME D,TT
	JRST FALSE
	JRST TRUE
IEQUAL:	EXCH A,B
	MOVE D,TT
	JSP T,FLTSKP
	JRST $IEQ
	JRST 1EQNF


$LESS:	EXCH A,B
$GREAT:	JSP T,FLTSKP	;NUMERIC GREATERP AND LESSP  <,>
	JRST IGRT
	MOVE D,TT
	EXCH A,B
$IGL1:	JSP T,FLTSKP
	JRST 2GPNF
$IGL:	CAMG D,TT
	JRST FALSE
	JRST TRUE
IGRT:	MOVE D,TT
	MOVE A,B
	JSP  T,FLTSKP
	JRST $IGL
	JRST 1GPNF


IADD1:	JSP T,FLTSKP		;FIXNUM ADD1  1+
	AOJA TT,FIX1
	%WTA IARERR
	JRST IADD1

	%WTA $ARERR
$ADD1:	JSP T,FLTSKP		;FLONUM ADD1  1+$
	JRST $ADD1-1
	FADRI TT,(1.0)
	JRST FLOAT1

ISUB1:	JSP T,FLTSKP		;FIXNUM SUB1  1-
	SOJA TT,FIX1
	%WTA IARERR
	JRST ISUB1

	%WTA $ARERR
$SUB1:	JSP T,FLTSKP		;FLONUM SUB1  1-$
	JRST $SUB1-1
	FSBRI TT,(1.0)
	JRST FLOAT1
;$ARITH IARITH I$B I$ART2 ARITH IARDS ARIT0

SUBTTL	FUNCTIONS:  +  +$  -  -$  *  *$  //  //$

$ARITH:	SETOM PLUS0
	SKIPA
IARITH:	SETZM PLUS0	;SET UP FOR FIXNUM ARITHMETIC
	AOJGE T,ARIT0
I$B:	JRST 2,@[.+1]
	SKIPA B,T
I$ART2:	XCT R
	POP P,A		;MAIN LOOP FOR FIXNUM AND FLONUM ARITHMETIC
ARITH:	JSP T,FLTSKP	;MAKE SURE NO MIXED MODES, RETURN MACHINE NUMBER IN TT
	TDZA T,T
	MOVNI T,1
	CAME T,PLUS0
	JRST ARTHER
	AOJLE B,I$ART2
	CAIN B,69.+1	;SIGNAL FOR CASE WITH ONE ARG
	EXCH TT,D
	XCT F
IARDS:	SKIPE PLUS0	;DISPATCH TO CONS UP FINAL ANSWER
	 JRST FLOAT1
	JRST FIX1

ARIT0:	MOVE TT,D
	JUMPN T,IARDS
	MOVEI T,69.
	JRST I$B
;IDIFFERENCE IPLUS IQUOTIENT ITIMES $DIFFERENCE $PLUS $QUOTIENT $TIMES IARZAR

IDIFFERENCE:
	SKIPA F,[SUB TT,D]	;-
IPLUS:	MOVE F,[ADD TT,D]	;+
	MOVE R,[ADD D,TT]
	MOVEI D,0
	JRST IARITH

IQUOTIENT:
	SKIPA F,[IDIV TT,D]	;/
ITIMES:	MOVE F,[IMUL TT,D]	;*
	MOVE R,[IMUL D,TT]
	MOVEI D,1
	JRST IARITH


$DIFFERENCE:
	SKIPA F,[FSBR TT,D]	;-$
$PLUS:	MOVE F,[FADR TT,D]	;+$
	MOVE R,[FADR D,TT]
	MOVEI D,0
	JRST $ARITH

$QUOTIENT:
	SKIPA F,[FDVR TT,D]	;/$
$TIMES:	MOVE F,[FMPR TT,D]	;*$
	MOVE R,[FMPR D,TT]
	MOVSI D,(1.0)
	JRST $ARITH


IARZAR:	MOVE TT,D
	JRST FIX1
;$SIN SIN. SIN.0 SIN.1 SIN.2 SIN.XT PI%2 SIN.CF COS COS.

;;; ********** NUMBER SUBRS FOR LISP **********

SUBTTL	SIN AND COS FUNCTIONS

;;; SIN IS A TOPS-10/TENEX JSYS, SO MUST CALL THIS $SIN.  FOO! - GLS

$SIN:	PUSH P,CFLOAT1
SIN.:	JSP T,FLTSKP
	JSP T,IFLOAT
	MOVM T,TT		;SIN(-X)=-SIN(X)
	CAMLE T,C1.0E5		;ARG SHOULD BE <= 1.0E5 (ELSE RESULT
	 JRST SIN.ER		; WOULD BE GROSSLY INACCURATE)
	CAMG T,[.001]		;THE RELATIVE ERROR OF APPROXIMATION [BY THIS RATIONAL 
;				; FUNCTION] IS BOUNDED BY ABOUT 2.0E-7, BUT OCCASIONALLY
;				; COMES CLOSE TO THIS.  SINCE THE ERROR OF TRUNCATION
;				; INHERENT IN TAKING X-(1/6)*X**3 FOR THE TAYLOR SERIES
;				; OF SIN(X) IS MUCH LESS THAN 2.0E-7, IT WILL BE SUFFICIENT
;				; TO TAKE X FOR SIN(X) WHENEVER THE RELATIVE ERROR TERM
;				; [(1/6)*X**3] IS LESS THAN 2.0E-7.  SOLVING, WE FIND
	 JRST SIN.XT		; X=.001 WILL DO.
	EXCH T,TT
SIN.0:	FDVR TT,PI%2		;DIVIDE ARG BY PI/2 (ARG IS NOW IN QUADRANTS)
	MULI TT,400		;TT GETS CHARACTERISTIC, R GETS MANTISSA
	SETZB R,F
	ASHC D,-243(TT)		;D GETS INTEGER PART, R GETS FRACTION (OF ARG)
	ASHC R,-8.		;R GETS HIGH 27. BITS OF FRACTION, F GETS REST
	TLO R,200000		;FLOAT R
	LSH F,-8.
	TLO F,145000		;FLOAT F (NOTE: 145=200-33; R,F NOW FORM 2-WORD FLOATING NUMBER)
	FADR R,F		;ADD F TO R (THIS WHOLE MESS PRESERVES PRECISION AND NORMALIZES)
	TRCN D,3		;R IS NOW A QUADRANT 1 ANGLE - WHAT WAS ORIGINAL QUADRANT?
	 JRST SIN.1		;QUADRANT 1 - ALL IS WELL
	TRCE D,3
	 MOVN T,T		;QUADRANT 2 OR 3 - MUST REVERSE SIGN: SIN(X)=-SIN(X-PI)
	TRNE D,1
	 FSBR R,FPWUN		;QUADRANT 2 OR 4 - SUBTRACT 1 TO PUT IN RANGE -1.0 TO 0
SIN.1:	SKIPGE T		;TEST SINE SIGN FLAG
	 MOVN R,R		;IF NEGATIVE, RESULT MUST BE NEGATIVE
	MOVE D,R
	FMPR D,D		;D <- R*R  IS ALWAYS NON-NEGATIVE
	MOVE TT,SIN.CF+4	;MOBY APPROXIMATION
	MOVEI T,3
SIN.2:	FMPR TT,D
	FADR TT,SIN.CF(T)
	SOJGE T,SIN.2
	FMPR TT,R
SIN.XT:	CAMLE TT,[1.0]		;THIS IS A CROCK TO MAKE SURE ABS(RESULT) NOT >1
	 MOVSI TT,(1.0)
	CAMGE TT,[-1.0]
	 MOVSI TT,(-1.0)
	POPJ P,			;RETURN - RESULT IS IN TT

PI%2:	1.570796326		;A PIECE OF PI (ABOUT 50%)

SIN.CF:	 1.5707963185		;COEFFICIENTS FOR SIN APPROXIMATION
	-0.6459637111
	 0.07968967928
	-0.00467376557
	 0.00015148419


COS:	PUSH P,CFLOAT1
COS.:	JSP T,FLTSKP
	JSP T,IFLOAT
	SKIPLE T,TT
	 MOVN T,TT
	FADR T,PI%2		;PI/2-X    IN T, SINCE COS(X) = SIN(PI/2-X)
	MOVM TT,T		;|PI/2-X|  IN TT
	CAMLE TT,C1.0E5
	 JRST COS.ER
	JRST SIN.0
;SQRT SQRT. SQRT.. SQRT.1

SUBTTL	SQRT FUNCTION

COMMENT | OLD SQRT ALGORITHM

SQRT:	PUSH P,CFLOAT1
SQRT.:	JSP T,FLNV1
	JUMPL TT,SQR$ER			;NEGATIVE ARG IS AN ERROR
SQRT..:	MOVE D,TT			;D GETS ARG
	LDB T,[341000,,TT]		;FOR FIRST APPROXIMATION, TRY
	ADDI T,100			; HALVING CHARACTERISTIC OF ARGUMENT,
	DPB T,[331100,,TT]		; AND USE SAME MANTISSA
	MOVEI T,5		;NOW DO MOBY ITERATION
SQRT.1:	MOVE R,TT		;  R <- TT
	MOVE TT,D
	FDVR TT,R		;         R + D/R
	FADR TT,R		;  TT <- ---------
	FSC TT,-1		;            2
	SOJN T,SQRT.1
	POPJ P,

|		;END OF OLD SQRT ALGORITHM
;SQRT SQRT. SQRT..

COMMENT | ANOTHER OLD SQRT ALGORITHM

;;; THIS SQRT ALGORITHM IS BASED ON ONE BY KAHAN, ORIGINALLY
;;; DESIGNED FOR THE IBM 7094.  THAT VENERABLE MACHINE LOOKED
;;; LIKE THE PDP-10 (27.-BIT MANTISSA AND 8-BIT EXPONENT).
;;; (THANKS TO RJF FOR HELP IN CODING THIS.)
;;;
;;; THE IDEA IS TO DECOMPOSE THE ARGUMENT X INTO:
;;;		F * 2.0↑(2*I - J)
;;; WHERE THE FRACTION F IS BETWEEN 0.5 (INCLUSIVE) AND 1.0
;;; (EXCLUSIVE), AND I AND J ARE INTEGERS, J BEING 0 OR 1.
;;; ONE THEN COMPUTES THE INITIAL APPROXIMATION AS:
;;;		A0 = (C + F/2.0 - J/4.0) * 2.0↑I
;;; WHERE C IS THE MAGIC CONSTANT 0.4826004, CHOSEN FOR THE
;;; BEST POSSIBLE FIT TO A CURVE.  ONE THEN PERFORMS AN
;;; ITERATION CALCULATING:
;;; 		A<K+1> = (A<K> + X/A<K>)/2.0
;;; ALL ARITHMETIC IS  DONE WITHOUT ROUNDING EXCEPT LAST ADD.
;;; THREE ITERATIONS SHOULD SUFFICE; A3 IS THE RESULT.

;;; THE INITIAL APPROXIMATION CAN BE CALCULATED QUICKLY BY
;;; MEANS OF THE FOLLOWING TRICK.  LET THE EXPONENT BE
;;;		E = 2*I - J = 2*N + M
;;; SUCH THAT M IS 0 OR 1; THEN J=M AND I=N+M.  MOREOVER,
;;; NOTE THAT THE PDP-10 EXPONENT X=E+200 (OCTAL), BECAUSE
;;; OF EXCESS-200 NOTATION.  HENCE X=2*(N+100)+M.
;;; WE FIRST PICK OFF THE M BIT AS A SEPARATE WORD AND
;;; SHIFT IT RIGHT.  THANKS TO THE PARTICULAR REPRESENTATION
;;; OF EXPONENT AND FRACTION, THIS PRODUCES A WORD WITH
;;; A FRACTION OF M/2.  NOW WE WILL ADD TOGETHER THIS WORD,
;;; THE ORIGINAL ARGUMENT, AND A MAGIC CONSTANT, AND SHIFT
;;; THE SUM RIGHT BY 1.  SHIFTING AFTERWARDS GIVES GREATER
;;; ACCURACY AND TAKES FEWER INSTRUCTIONS, BUT FOR PURPOSES
;;; OF EXPOSITION LET US ASSUME THE THREE SUMMANDS TO HAVE
;;; BEEN PRE-SHIFTED.
;;; SHIFTING THE ORIGINAL ARGUMENT RIGHT PRODUCES A WORD WITH
;;; FRACTION F/2+M/2 AND MACHINE EXPONENT N+100.  SHIFTING
;;; THE M/2 PRODUCES M/4.  THE MAGIC CONSTANT IS CHOSEN SUCH
;;; THAT, WHEN SHIFTED, ITS FRACTION IS C (0.4826004) AND
;;; ITS MACHINE EXPONENT IS 100.  ADDING THESE TOGETHER
;;; PRODUCES FRACTION F/2 + 3*M/4 + C AND MACHINE EXPONENT
;;; N+200.  HOWEVER, SINCE F IS NORMALIZED, THE ADDITION
;;; OF 3*M/4 IS GUARANTEED TO OVERFLOW INTO THE EXPONENT FIELD;
;;; THIS RESULTS IN SUBTRACTING M/4 FROM THE FRACTION, AND
;;; ADDING M INTO THE MACHINE EXPONENT.  THE RESULT IS THUS:
;;;		(C + F/2 - M/4) * 2.0↑(N+M)
;;; WHICH IS THE DESIRED VALUE.

SQRT:	PUSH P,CFLOAT1
SQRT.:	JSP T,FLNV1
	JUMPG TT,SQRT..
	JUMPL TT,SQR$ER		;NEGATIVE ARG IS AN ERROR
	POPJ P,			;ZERO ARGUMENT => ZERO

;;; POSITIVE ARGUMENT IS IN TT NOW
SQRT..:	MOVE R,TT		;SAVE ARGUMENT IN R FOR LATER
	MOVS D,TT
	ANDI D,1000
	LSH D,22-1		;D HAS M/2 AS A SINGLE BIT
	ADD TT,D		;ADD INTO ORIGINAL ARGUMENT
	ADD TT,[200756135462]	;EXPONENT 200, FRACTION 2*0.4826004
	LSH TT,-1		;NOW WE HAVE INITIAL APPROXIMATION
IRPC ROUND,,[  R]AC,,[DDR]
IFSN AC,R, MOVE D,R		;		TT + R/TT
	FDV AC,TT		;COMPUTE  TT <- ---------
	FAD!ROUND TT,AC		;		    2
	FSC TT,-1		;LAST TIME ONLY, ADD ROUNDED
TERMIN
	POPJ P,

|		;END OF ANOTHER OLD SQRT ALGORITHM
;SQRT SQRT. SQRT.. SQRT.2 SQRT.3

;;; I HAVE NO IDEA HOW THIS WORKS! - GLS
;;; THANKS TO RJF AND KAHAN.
;;; KAHAN CLAIMS THE ERROR LIES BETWEEN -.5 AND +.516 LSB'S

SQRT:	PUSH P,CFLOAT1
SQRT.:	PUSHJ P,NUMFLT
	JUMPG TT,SQRT..
	JUMPL TT,SQR$ER		;NEGATIVE ARG IS AN ERROR
	POPJ P,			;ZERO ARGUMENT => ZERO

;;; POSITIVE ARGUMENT IS IN TT NOW
SQRT..:	MOVE R,TT		;SAVE ARG FOR LATER
	ASH TT,-1
	ADD TT,[265116421]	;THAT'S 265116421 (KAHAN BLACK MAGIC)
	TLON TT,400
	 JRST SQRT.2
	FMPRI TT,301456		;(301456=(FSC 1.1796875 100)
;; BKPH suggested using 301456 instead of 301461 in mid 1980 (JONL 10/16/80)
	JRST SQRT.3

SQRT.2:	FMPRI TT,300653		;(300653)=(FSC 0.833984375 100)
;NOW TWO NEWTON ITERATIONS, MODIFIED
SQRT.3:	MOVE D,R
	FDV D,TT		;UNROUNDED DIVIDE
	FAD TT,D		;UNROUNDED ADD
;	FSC TT,-1
	SUB TT,[1000002645]	;KAHAN SEZ: INSTEAD OF DIVISION BY 2, SUBTRACT 1000002645
	FDV R,TT		;UNROUNDED DIVIDE
	FADR TT,R		;ROUNDED ADD!
	FSC TT,-1
	POPJ P,

;;; A FEW HINTS, PAINFULLY WORKED OUT BY GLS AND RZ:
;;;	THE ASH BY -1 DIVIDES THE EXPONENT BY 2, AND MUNCHES
;;;	THE MANTISSA IN A BIZARRE WAY.
;;;	THE ADDITION OF 265116421 IS GUARANTEED TO CARRY
;;;	INTO THE 3.9 BIT, ASSUMING A NORMALIZED INPUT.  THIS
;;;	WILL COMPLEMENT THE ORIGINAL LOW EXPONENT BIT.
;;;	THIS IS THEN TESTED BY THE TLON, WHICH ALSO FORCES
;;;	THE 3.9 BIT ON, MAKING THE NEW NUMBER NORMALIZED.
;;;	THE SUBTRACTION OF 1000002645 INDEED DIVIDES BY 2,
;;;	BY SUBTRACTING 1 FROM THE EXPONENT; AND THE REST DOES
;;;	A WEIRD LITTLE PERTURBATION WHICH, HOWEVER, CANNOT
;;;	BORROW FROM THE EXPONENT.
;LOG LOG. LOG.. LOG.1 LOG.2 ROOT2 LOG.CF NUMFLT NUMFL3

SUBTTL	LOG FUNCTION

LOG:	PUSH P,CFLOAT1
LOG.:	PUSHJ P,NUMFLT
LOG..:	JUMPLE TT,LOG.ER	;NON-POSITIVE ARG IS AN ERROR
	MULI TT,400
	HRREI TT,-201(TT)	;SAVE CHARACTERISTIC IN TT
	LSH D,-8.		;REDUCE ARG TO VALUE X BETWEEN 1.0 AND 2.0
	TLO D,201000
	MOVEI R,0
	CAMN D,FPWUN		;LOG(1.0)=0.0 (ALSO FOR WHOLE POWERS OF 2 THIS SAVES TIME)
	JRST LOG.2
	MOVE T,D		;        X - SQRT(2)
	FSBR T,ROOT2		;  T <- -------------
	FADR D,ROOT2		;        X + SQRT(2)
	FDVRB T,D
	FMPR D,D		;  D <- T*T
	MOVEI F,3		;MOBY APPROXIMATION TO LOG BASE 2
LOG.1:	FMPR R,D
	FADR R,LOG.CF(F)
	SOJGE F,LOG.1
	FMPR R,T
	FADR R,[0.5]
LOG.2:	JSP T,IFLOAT		;FLOAT CHARACTERISTIC
	FADR TT,R		;ADD TO LOG OF MANTISSA
	FMPR TT,[0.6931471806]	;MULTIPLY BY LN 2 TO GET LOG BASE E
	POPJ P,

ROOT2:	1.4142135625		;SQRT(2)
LOG.CF:	 2.885390073		;COEFFICIENTS FOR LOG APPROXIMATION
	 0.9618007623
	 0.5765843421
	 0.4342597513


NUMFLT:
IFE BIGNUM, JSP T,FLTSKP
IFN BIGNUM, JSP T,NVSKIP
IFN BIGNUM, JRST NUMFL3
	JSP T,IFLOAT
	POPJ P,

IFN BIGNUM,[
NUMFL3:	PUSH P,A
	PUSHJ P,FLBIG
	JRST POPAJ
]		;END OF IFN BIGNUM
;ATAN ATAN. ATAN.1 ATAN.2 ATAN.3 ATAN.4 PI% ATAN.C

SUBTTL	ATAN FUNCTION

ATAN:	PUSH P,CFLOAT1
ATAN.:	EXCH A,B
	PUSHJ P,NUMFLT
	PUSH FXP,TT
	MOVEI A,(B)
	PUSHJ P,NUMFLT
	POP FXP,D
	MOVM R,TT		;GET ABSOLUTE VALUE OF Y
	MOVM F,D		;GET ABSOLUTE VALUE OF X
	MOVEM R,ATAN.Y		;SAVE ABS(Y)
	MOVEM F,ATAN.X		;SAVE ABS(X)
	HLR D,TT		;D HAS <LEFT HALF OF X>,,<LEFT HALF OF Y>
	MOVEM D,ATAN.S		;SAVE THAT MESS (HAS SIGNS OF X AND Y)
	MOVE T,R
	JFCL 8,.+1
	FSBR T,F		;         ABS(Y)-ABS(X)
	FADR R,F		;  T <- -----------------
	FDVRB T,R		;         ABS(Y)+ABS(X)
	FMPR R,R		;  R <- T*T
	MOVE D,ATAN.C+7		;MOBY APPROXIMATION
	MOVEI F,6
ATAN.1:	FMPR D,R
	FADR D,ATAN.C(F)
	SOJGE F,ATAN.1
	FMPR D,T
	MOVM TT,D
	CAMGE TT,[.7855]
	CAMGE TT,[.7853]
	JRST ATAN.3
	JUMPGE D,ATAN.2		;PATCH UP FOR WHEN RATIONAL APPROXIMATION NOT VERY GOOD
	MOVE D,ATAN.Y		;WE CAN USE Y/X FOR ATAN (Y/X)
	FDVR D,ATAN.X
	JRST ATAN.4
ATAN.2:	MOVN D,ATAN.X
	FDVR D,ATAN.Y
	FADR D,PI%2
	JRST ATAN.4
ATAN.3:	FADR D,[0.7853981634]	;PI/4
ATAN.4:	MOVN TT,D		;NOW WE HAVE A QUADRANT 1 RESULT (CALL IT Q)
	FADR TT,PI%		;PATCH-UP STUFF TO GET RIGHT QUADRANT
	SKIPL F,ATAN.S		;            X>0          I            X<0
	EXCH D,TT		;-------------------------I-------------------------
	FSC D,1			;          D <- PI-Q      I          D <- Q
	TRNE F,400000		;         TT <- Q         I         TT <- PI-Q
	FADR TT,D		;    Y>0     I    Y<0     I    Y>0     I    Y<0 
	JFCL 8,ATAN.7		;------------I------------I------------I------------
	POPJ P,			;   TT<-Q    I TT<-2*PI-Q I TT<-PI-Q   I  TT<-PI+Q


PI%:	3.1415926536	;A WELL-KNOWN NUMBER
ATAN.C:	 0.9999993329	;COEFFICIENTS FOR ATAN APPROXIMATION
	-0.3332985605
	 0.1994653599
	-0.139085335
	 0.0964200441
	-0.0559098861
	 0.0218612288
	-0.004054058
;EXP EXP. EXP.. EXP.A EXP.1 EXP.2 EXP.RX EXP.3 EXP.CF FPWUN INTLG C1.0E5 YPOCB BCOPY BCOP1 BNARSV BNARRS

SUBTTL	EXP FUNCTION

EXP:	PUSH P,CFLOAT1
EXP.:	JSP T,FLTSKP
	 JSP T,IFLOAT
EXP..:	SETZ R,
	MOVEM TT,EXP.S		;SAVE SIGN OF ARG ON PDL
	MOVM TT,TT		;GET ABSOLUTE VALUE OF ARG
	CAMLE TT,[88.0]		;WAS REQUESTED POWER > 88.0?
	 JRST EXP.A		;YES, CAN'T REPRESENT SOMETHING THIS BIG
	FMPR TT,[0.4342944819]	;LOG BASE 10. OF E	
				;FROM NOW ON WE DO 10.↑X, NOT E↑X
	MOVE F,FPWUN		;F HOLDS 10.↑<INTEGER PART OF ARG>
	CAMG TT,FPWUN		;IF ARG <=1.0 GO DO RATIONAL APPROXIMATION
	 JRST EXP.RX
	MULI TT,400
	ASHC D,-243(TT)		;D GETS INTEGER PART OF ARG
;	CAIG D,43		;THIS IS OLD CHECK, JONL SAYS OK TO ALLOW
	 JRST EXP.1		; LARGER RANGE
EXP.A:	SKIPGE TT,EXP.S		;TOO LARGE - RESULT CAN'T BE REPRESENTED
	 TDZA TT,TT
	  JRST EXP.ER
	POPJ P,			;NEGATIVE ARG PRODUCES ZERO (UNDERFLOW)

EXP.1:	CAIG D,7		;SKIP IF INTEGER PART OF ARG > 7
	JRST EXP.2
	LDB T,[030300,,D]	;GET TOP 3 BITS OF 6 BIT INTEGER PART
	ANDI D,7		;AND THEM OUT OF D
	MOVE F,INTLG(T)		;F GETS (10.↑T)↑8. = 10.↑(T*8.)
	FMPR F,F
	FMPR F,F
	FMPR F,F
EXP.2:	FMPR F,INTLG(D)		;MULTIPLY F BY APPROPRIATE 10.↑D (0<=D<=7)
	LDB TT,[103300,,R]	;NOW GET FRACTION PART OF ARG
	TLO TT,177000		;THIS STRANGENESS FLOATS
	FADR TT,TT		; AND NORMALIZES THE FRACTION
EXP.RX:	MOVEI T,6		;MOBY APPROXIMATION
	SKIPA R,EXP.CF+6
EXP.3:	FADR R,EXP.CF(T)
	FMPR R,TT
	SOJGE T,EXP.3
	FADR R,FPWUN
	FMPR R,R
	FMPR F,R		;MULTIPLY FRACTION APPROXIMATION BY 10.↑<INTEGER PART>
	MOVE TT,FPWUN
	SKIPL EXP.S
	SKIPA TT,F		;IF ARG>0, RETURN RESULT
	FDVR TT,F		;IF ARG<0, RETURN 1.0/RESULT
	POPJ P,

EXP.CF:	1.151292776	;COEFFICIENTS FOR EXP APPROXIMATION
	0.6627308843
	0.2543935748
	0.07295173666
	0.01742111988
	2.55491796↑-3
	9.3264267↑-4
FPWUN:			;FLOATING POINT 1.0
INTLG:	1.0		;TABLE OF 10.↑X FOR INTEGRAL 0<=X<=7
REPEAT 7, 1.0↑<.RPCNT+1>
C1.0E5=FPWUN+5


PGTOP ARI,[ARITHMETIC SUBROUTINES]
;;@ END OF ARITH 90

;;; REMEMBER THE SUNDER HACK, AND DONT HACK THIS $INSRT
IFN BIGNUM,[
;;@ BIGNUM 18		BIGNUM ARITHMETIC PACKAGE
;;;   ***** MACLISP ******  BIGNUM ARITHMETIC PACKAGE **************
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************



PGBOT BIG


SUBTTL	BIGNUM PACKAGE - RANDOM ROUTINES

;THE BIGNUM ARITHMETIC PAGE - SPECIAL STUFF FOR BIGNUM OPERATIONS ONLY

YPOCB:	PUSH P,[NREVERSE]
BCOPY:	HRRZ C,A	;COPIES A BIGNUM IN ACCUMULATOR A [INTERNAL FORMAT]
	PUSH P,A
	MOVEI AR1,(P)	;CLOBBERS C AR1 TT D
BCOP1:	JUMPE C,POPAJ
	HLRZ TT,(C)
	MOVE TT,(TT)
	PUSHJ P,C1CONS
	HRRM A,(AR1)
	HRRZ AR1,(AR1)	;UPDATE POINTER TO END OF LIST
	HRRZ C,(C)	;GET NEXT OF LIST TO BE COPIED
	JRST BCOP1


BNARSV:	PUSH P,C	;SAVE ACCUMULATORS
	PUSH P,AR1
	PUSH P,AR2A
	MOVEM F,FACD
	MOVEM R,FACF
	JRST (T)

BNARRS:	POP P,AR2A	;RESTORE ACCUMULATORS
	POP P,AR1
	POP P,C
	MOVE F,FACD
	MOVE R,FACF
	JRST (T)

;PLOV PLOV2 PL1BN TIMOV TIM1BN T2 T12 PL2BN

PLOV:	PUSH P,AR1	;OVERFLO WHILE ADDING OR SUBBING TWO FIXNUMS
	SKIPN TT,D
	JRST PLOV2
	TLNN TT,400000
	MOVNS TT
	TLZ TT,400000
	PUSH FXP,TT
	PUSHJ P,ABSOV
	MOVE A,(A)
	HLR B,(A)
	POP FXP,(B)
	SKIPL D
	TLC A,-1
	SKIPA D,A
PLOV2:	MOVE D,BNM236
	POP P,AR1
	JRST T13

PL1BN:	EXCH D,TT		;FIXNUM SUM MEETS BIGNUM ARG
	PUSHJ P,BNCVTM
	EXCH D,TT
	JRST T11

TIMOV:	MOVEM T,AGDBT	;OVERFLO WHILE MULING TWO FIXNUMS
	PUSHJ P,BNCV
	MOVE D,A
	MOVE TT,AGDBT
	PUSHJ P,BNCVTM
	JRST BNTIM

TIM1BN:	JUMPE D,T14EX		;FIXNUM PRODUCT MEETS BIGNUM NEXT ARG
	EXCH D,TT
	PUSHJ P,BNCVTM
	EXCH D,TT
	JRST T11

T2:	MOVE D,TT
T12:	MOVE A,(F)		;BIGNUM ARITHMETIC LOOP
	JSP T,NVSKIP
	XCT 4(R)	;OPERATE ON TWO BIGNUMS
	JRST 2(R)	;DISPATCH TO OPERATE ON BIGNUM SUM WITH FIXED
	EXCH D,TT	;CONVERT BIGNUM SUM TO FLOATING
	PUSHJ P,FLBIG
	EXCH D,TT
	JRST T7		;AND ENTER FLOATING POINT LOOP

PL2BN:	PUSHJ P,BNCVTM	;BIGNUM SUM MEETS FIXNUM NEXT ARG
	JRST T11

;TIM2BN T11 T13 T13X BNDF BNPL BNPL1 T19A T19B T19C BNXTIM BNTIM

TIM2BN:	JUMPE TT,T14EX1		;BIGNUM PRODUCT MEETS FIXNUM NEXT ARG
	PUSHJ P,BNCVTM
	EXCH D,TT
T11:	XCT 4(R)	;TRANSFERS TO BNTIM
T13:	AOBJN F,T12
T13X:	MOVE A,D
	SUB P,PLUS8
	JRST BNCONS

BNDF:	JSP A,BNPL1	;DIFFERENCE OF TWO BIGNUMS
BNPL:	JSP A,BNPL1	;PLUS OF TWO BIGNUMS
BNPL1:	EXCH A,D
	MOVE B,TT
	JSP T,BNARSV
	PUSHJ P,BNADD(D)-BNPL1
T19A:	PUSHJ P,BNTRSZ	;SKIPS 2 IF ALL RIGHT
	MOVE D,[1←43]
	JRST T19B
	MOVE D,A
	HRRZ B,(A)	;WHAT IF OPERATE RESULTS IN SCRUNCHING
	JUMPN B,T19C	;ACCUMULATED VALUE INTO ONE WORD?
	HLRZ D,(A)
	MOVE D,(D)
	JUMPGE A,.+2
	MOVNS D
T19B:	JSP T,BNARRS
	JRST 2,@[T14E]

T19C:	JSP T,BNARRS
	JRST T13

BNXTIM:	JUMPE TT,0POPJ		;FIXNUM IN TT TIMES ABS(BIGNUM IN A)
	HRRZ D,(A)
	SETOM REMFL
	PUSHJ P,BNCVTM		;CONVERT FIXNUM TO BIGNUM FOR BNMUL
BNTIM:	JSP T,BNARSV		;PRODUCT OF TWO BIGNUMS
	MOVE A,D
	MOVE B,TT
	PUSHJ P,BNMUL
	JSP T,BNARRS
	MOVE D,A
	SKIPN REMFL
	JRST T13
	SETZM REMFL
	JRST BNCONS		;FOR BNXTIM, CONS UP A REAL BIGNUM
;DIVSEZ REM2BN DV2BN DV1BN BNDV

DIVSEZ:	SKIPA D,BNM235		;DIVISION BY 1←43 [-2E35.]
REM2BN:	JUMPE TT,BPDLNKJ
DV2BN:	JSP T,BNARSV		;BIGNUM DIVIDEND GETS FIXNUM DIVISOR
	MOVE A,D
	JUMPN TT,DV2BN1
	SKIPN RWG
	JRST OVFLER
	MOVEI TT,1		;ON ATTEMPT TO DIVIDE BY ZERO [WHEN RWG NOT ZERO]
	JUMPGE A,.+2
	MOVNS TT
	MOVEM TT,BNV1
	MOVE B,BNV2
	PUSHJ P,BNADD
	JRST T19A

DV1BN:	CAME D,[400000,,]	;FIXNUM DIVIDEND, BIGNUM DIVISOR
	TDZA TT,TT		;ORDINARILY ZERO
	SKIPA D,BNM235		;BUT -4←41/4←41 => 1, NOT 0
	JRST T14EX1
BNDV:	MOVE B,TT		;BIGNUM QUOTIENT, BIGNUM DIVEND
	MOVE A,D
	JSP T,BNARSV
	PUSHJ P,BNQUO
	SKIPE REMFL
	CAMN TT,XC-1
	JRST T19A
	SETZM REMFL
	JSP T,BNARRS
	MOVE D,A	;DIVIDE OUT NORMALIZATION
	JRST DV2BN
;DV2BN1 DV2BN2 BNFXLP DV2BN3 D1FIN

DV2BN1:	MOVEM A,NORMF		;SO DIVIDE A BIGNUM BY A REGULAR FIXNUM
	PUSHJ P,REVERSE
	MOVE AR1,NORMF		;AR1 HAS SIGN OF ORIGINAL ARG IN LH
	HRR AR2A,A		;AR2A HAS SIGN OF PRODUCT ON COPY
	HLL AR2A,AR1
	JUMPGE TT,DV2BN2
	MOVNS TT
	JUMPL TT,DV2BN3		;FOO! LOUSY SETZ CASE - PRODUCT WILL BE NEGATIVE
	TLC AR2A,-1
DV2BN2:	HRRZ C,(A)
	MOVE D,TT
	HLRZ F,(A)
	MOVE F,(F)
	MOVEI R,0
	DIV R,D
	MOVE TT,R
	PUSHJ P,C1CONS
BNFXLP:	MOVE B,A
	JUMPE C,D1FIN
	MOVE R,F
	HLRZ F,(C)
	MOVE F,(F)
	DIV R,D
	MOVE TT,R
	PUSHJ P,C1CONS
	HRRM B,(A)
	HRRZ C,(C)
	JRST BNFXLP

DV2BN3:	MOVE TT,BNM235
	JSP T,BNARRS
	JRST BNDV

D1FIN:	HLL A,AR2A
	PUSHJ P,BNTRUN
	EXCH A,AR2A
	MOVEI B,NIL
	PUSHJ P,RECLAIM	;RECLAIM ONLY FREE STORAGE
	EXCH A,AR2A
	SKIPN REMFL
	JRST T19A
	MOVE D,F
	JUMPGE AR1,.+2
	MOVNS D
	JSP T,BNARRS
	MOVEI B,TRUTH
	PUSHJ P,RECLAIM	;RECLAIM QUOTIENT SPACE, SINCE ONLY REMAINDER NEEDED
	JRST T14EX
;BNTRUN BNTR4 BNTRSZ BNTRS1 BNPJ2 BNCV BNCVTM T17 T16 T23

SUBTTL	GENERAL UTILITY ROUTINES FOR BIGNUM ARITHMETIC

BNTRUN:	HRR AR1,A	;TRUNCATE OFF LEADING ZEROS FROM BIGNUM
	HRRZ B,(AR1)	;PRESERVE LH OF AR1
	JUMPE B,CPOPJ
BNTR4:	MOVS C,(B)
	SKIPE (C)
	HRR AR1,B
	HLRZ B,C
	JUMPN B,BNTR4
	HRRZ C,(AR1)
	HLRM C,(AR1)
	JUMPE C,CPOPJ		;EXIT IF THERE WERE NO LEADING ZEROS
	EXCH A,C
	PUSHJ P,RECLAIM		;OTHERWISE, RECLAIM SPACE OCCUPIED
	EXCH A,C		; BY LIST HOLDING THEM (B IS ZERO)
	POPJ P,


BNTRSZ:	JUMPGE A,BNPJ2		;SKIPS 2 IF NOT -1←43 IN BIGNUM FORMAT.  ELSE NO SKIP
BNTRS1:	HRRZ AR1,(A)		;MUNGS ONLY AR1
	JUMPE AR1,BNPJ2
	MOVS AR1,(AR1)
	TLNE AR1,-1
	JRST BNPJ2
	HLL AR1,(AR1)		;ALL THIS KLUDGERY SO THAT RANDOM
	TLNE AR1,-1		; NUMERIC QUANTITIES WILL NOT GET
	JRST BNPJ2		; IN THE RIGHT HALF OF AR1
	HRLZ AR1,(AR1)
	TLC AR1,1
	JUMPN AR1,BNPJ2
	HLRZ AR1,(A)
	SKIPN (AR1)
	POPJ P,
BNPJ2:	POP P,AR1
	JRST 2(AR1)

BNCV:	PUSH FXP,D
	PUSHJ FXP,SAV5M1
	PUSHJ P,BNCVTM
	MOVE A,TT
	PUSHJ P,BCOPY
	JRST UUOSE1

BNCVTM:	JUMPL TT,T16		;CONVERT NUMBER IN TT TO INTERNAL BIGNUM
T17:	MOVEM TT,BNV1
	MOVE TT,BNV2
	POPJ P,
T16:	MOVNS TT
	JUMPL TT,T23	;400000,,
	PUSHJ P,T17
	TLCA TT,-1
T23:	MOVE TT,BNM235	;CONVERTED TO BIGNUM -2E35.
	POPJ P,
;BNSUB BNADD BN4 BN15 BN20 BN7 BN9 BNADD2 BN14 BN8 BN5 BN13 BN6

SUBTTL	BIGNUM ADDITION SUBROUTINE

BNSUB:	TLC B,-1	;CHANGE SIGN OF 2ND ARG
BNADD:	MOVE C,A	;FIRST ARGUMENT TO C
	HLLZ A,C	;SET UP NULL BIGNUM WITH SIGN OF FIRST ARG
	PUSH P,A
	HLLZ F,B	;DITTO SECOND ARG
	MOVEI R,BNADD2	;SET UP FOR REAL ADD
	CAME A,F	;CHECK FOR SAME SIGNS
	MOVEI R,BNSUB2	;CHANGE TO SUBTRACT
	MOVE F,P	;F POINTS TO BOTTOM WORD OF ANSWER
	MOVEI TT,0	;ARITHMETIC DONE IN TT
BN4:	MOVE AR2A,C
	MOVE C,(C)	;CDR C
	MOVE B,(B)	;CDR B
BN15:	MOVEI D,0	;CLEAR CARRY
	HLRZ AR1,C
	ADD TT,(AR1)
	HLRZ AR1,B
	XCT -1(R)	;ADD/SUB TT,(AR1)
	TLZE TT,400000	;CARRY OR BORROW
	MOVE D,-2(R)	;PLUS OR MINUS 1
	JSP T,FWCONS
	MOVE AR1,A
	PUSHJ P,ACONS
	HRRM A,(F)	;NCONC ONTO ANSWER
	MOVE F,A	;UPDATE POINTER TO LAST WORD
BN20:	TRNN B,-1	;END OF SECOND ARG?
	JRST @-3(R)
BN7:	TRNN C,-1	;END OF FIRST ARG?
	JRST (R)
BN9:	MOVE TT,D	;MOVE CARRY TO TT
	JRST BN4


	BN5
	1	;CARRY
	ADD TT,(AR1)
BNADD2:	JUMPN D,BN8	;FIRST ARG DONE; IF CARRY, SIMULATE A ZERO
BN14:	HRRM B,(F)	;USE REST OF SECOND ARG
	JRST POPAJ
BN8:	MOVEI C,[R70,,]
	JRST BN9

BN5:	JUMPN D,BN6	;2ND ARG EXHAUSTED; IF CARRY, SIMULATE A ZERO
BN13:	HRRM C,(F)
	JRST POPAJ
BN6:	MOVEI B,[R70,,]
	JRST BN7

;BNSUB2 BN10 BN11 BN11A BN12 BNM1 BNM2

	BN12
	-1	;BORROW
	SUB TT,(AR1)
BNSUB2:	
			;COME HERE ONLY IF ABS(1)<ABS(2)
			;FIRST ARG DONE, AND (2ND IS NOT DONE, OR THERE IS A BORROW)
			;IT IS NECESSARY TO TAKE THE TWOS COMPLEMENT OF THE PARTIAL ANSWER
	MOVE A,(P)
	TLC A,-1
	MOVEM A,(P)
	MOVSI TT,400000	;TT IS INITIALIZED TO 400000000000
			;AND UNCHANGED WHILE THE PARTIAL ANSWER IS ZEROS
			;AFTER A NONZERO WORD, TT IS RESET TO 377777777777 AFTER EACH SUBTRACT
	SKIPA C,(A)	;SCAN DOWN NUMBER; LEFT HALF OF C NOW POINTS AT LOW ORDER WORD
BN10:	MOVE C,(C)
	HLRZ AR1,C
	SUBB TT,(AR1)
	SKIPL TT		;IFF TT IS STILL SETZ, (AR1) WAS ZERO AND MUST BE FIXED
	SKIPA TT,[377777777777]
	SETZM (AR1)
	TRNE C,-1
	JRST BN10
	JUMPL D,BN11	;IF BORROW: THE PARTIAL ANSWER WAS NONZERO TO GENERATE THE BORROW
			;A RECOMPLEMENT BORROW OCCURED. TT IS 377777777777.
			;SHOULD USE REST OF 2ND ARGUMENT
	JUMPL TT,BN14	;TT<0: THE PARTIAL ANSWER WAS ZERO; 1ST ARG IS PROPER INITIAL SEGMENT OF 2ND ARG
			;USE REST OF 2ND ARG, GUARANTEED TO BE NONZERO
	MOVNI TT,1	;RECOMPLEMENT BORROW BUT NO ORIGINAL BORROW; USE REST OF 2ND ARG WITH BORROW
	MOVE C,(B)	;SWAP ARGS
	MOVSI B,[0]
	JRST BN15	;CONTINUE AS A SUBTRACT IN WHICH "2ND" ARG IS EXHAUSTED, AND A BORROW PROPAGATED
			;CURIOUS THINGS HAPPEN IF THE REST OF "1ST" ARG IS ZERO(AN IMPROPER FORMAT)

BN11:	TLNE B,-1	;TRY TO AVOID USING THE TRUNCATE ROUTINE
	JRST BN14	;REST OF 2ND ARG IS NOT NULL, SO USE IT
BN11A:	POP P,A
	SKIPE (AR1)	;AR1 POINTS AT HIGH WORD OF DIFFERENCE 
	POPJ P,
	JRST BNTRUN

BN12:	JUMPN D,BN6	;2ND ARG EXHAUSTED; IF BORROW, INVENT A ZERO
	TRNE C,-1	;IF 1ST ARG IS NOT EXHAUSTED, USE REST OF IT
	JRST BN13
	JRST BN11A	;BOTH ARGS EXHAUSTED

BNM1:	JUMPE D,POPAJ	;SWAP OUT ONLY A NONZERO CARRY
	PUSH P,CPOPAJ	;FOR MULTIPLICATION ROUTINE
BNM2:	EXCH D,TT
	JSP T,FWCONS
	PUSHJ P,ACONS
	EXCH D,TT
	HRRM A,(R)	;NCONC CARRY WORD TO ANSWER BIGNUM
	POPJ P,

;BNMUL BNM5 BNM4 BNM3

SUBTTL	BIGNUM MULTIPLICATION SUBROUTINE

;MULTIPLY IS DONE IN TWO PARTS: (1) MULTIPLY FIRST ARG BY FIRST WORD OF SECOND ARG
;(2) MULTIPLY [AND ADD IN TO TOTAL] FIRST ARG BY EACH REMAINING WORD OF THE SECOND ARG
;SLIGHTLY FASTER IF SECOND ARG IS SHORTER
BNMUL:	MOVE C,A
	HLLZ A,C	;CREATE NULL BIGNUM WITH SIGN OF FIRST ARG
	XOR A,B		;SKIP IF 2ND ARG POSITIVE.  CHANGE SIGN OF ANSWER
	PUSH P,A
	MOVE R,P	;R POINTS AT LAST WORD OF ANSWER BIGNUM DURING PART ONE OF MULTIPLY
	MOVE B,(B)	;GET FIRST WORD OF SECOND ARG
	HLRZ F,B
	MOVE F,(F)
	MOVEI D,0	;ZERO CARRY WORD
	SKIPA AR2A,(C)	;PREPARE TO GOBBLE FIRST ARG
BNM5:	MOVE AR2A,(AR2A)
	HLRZ T,AR2A	;GOBBLE A WORD OF FIRST ARG
	MOVE T,(T)
	MUL T,F	;AFTER MULTIPLY, T<377777777777
	ADD TT,D	;CARRY<400000000000; SUM<777777777777
	MOVE D,T
	TLZE TT,400000	;CLEAR SIGN BIT AND PROPAGATE
	AOS D		;NEW CARRY<400000000000
	PUSHJ P,C1CONS
	HRRM A,(R)
	MOVE R,A	;UPDATE POINTER TO LAST WORD
	TRNE AR2A,-1	;END OF FIRST ARG?
	JRST BNM5
	MOVE A,(P)
	HRRM A,BNMSV
BNM4:	TRNN B,-1	;END OF SECOND ARGUMENT?
	JRST BNM1	;YES; SWAP OUT CARRY IF NOT ZERO
	PUSHJ P,BNM2
	MOVE B,(B)	;GET NEXT WORD OF SECOND ARG
	HLRZ F,B
	MOVE F,(F)
	MOVE R,@BNMSV
	HRRM R,BNMSV
	MOVE AR2A,(C)	;RESET FIRST ARGUMENT
	MOVEI D,0	;CLEAR OUT CARRY
BNM3:	HLRZ T,AR2A	;GET A WORD OF FIRST ARG
	MOVE T,(T)
	MUL T,F	;AFTER MULTIPLY, T<377777777777
	ADD TT,D	;CRY<400000000001, SUM<1000000000000
	TLZE TT,400000	;CLEAR SIGN BIT AND PROPAGATE
	AOS T		;NEW T<400000000000
	HLRZ D,(R)	;GET WORD OF ACCUMULATOR
	ADD TT,(D)	;SUM<777777777777
	TLZE TT,400000	;CLEAR SIGN BIT AND PROPAGATE
	AOS T		;NEW T<400000000001
	MOVEM TT,(D)	;STORE WORD OF ACCUMULATOR
	MOVE D,T
	TRNN AR2A,-1	;SKIP IF NOT END OF FIRST ARG
	JRST BNM4
	MOVE AR2A,(AR2A)	;ADVANCE TO NEXT WORD OF FIRST ARG
	MOVE R,(R)	;ADVANCE TO NEXT WORD OF ACCUMULATOR
	JRST BNM3
;BNQUO BNQUO1 BQ1 BQ2

SUBTTL	BIGNUM DIVISION SUBROUTINE

BNQUO:	SETZM NORMF	;INITIALIZE NORMALIZATION FACTOR
	SETZM VETBL0	;INITIALIZE "FIRST TIME THRU" FLAG
	PUSH P,B	;SETS UP TO TEST FIRST DIVISOR WORD
	PUSH P,A
BNQUO1:	MOVEI D,1
	MOVE C,B
	MOVE C,(C)
	MOVE AR1,(C)
	AOS D
	TRNE AR1,-1
	JRST .-4
	HLRZS AR1
	MOVE F,(AR1)
	CAMGE F,[200000,,0]	;NORMALIZATION TEST
	JRST BQNORM
	SKIPN NORMF
	JRST BQCOPY
	MOVSS C		;GET TOP TWO DIVISOR WORDS
	MOVE C,(C)
	MOVEM F,DVS1
	MOVEM C,DVS2
	MOVEM D,DVSL
	MOVEI C,(A)	;SET UP QUOTIENT
	JUMPGE B,.+2
	TLC A,-1
	HLLZS A
	TLZ B,-1	;PROB. UNNECESSARY, BUT WHY TAKE CHANCES?
	PUSH P,A
BQ1:	MOVEI R,3	;THIS GETS DVD WORDS FOR THE QUOTIENT ESTIMATE
	MOVE AR2A,C
BQ2:	MOVE AR2A,(AR2A)
	TRNN AR2A,-1
	JRST BQSRRM	;PARTIAL REMAINDER IS ONLY ONE WORD LONG
	MOVE T,(AR2A)
	TRNN T,-1
	JRST BQSHRM	;PARTIAL REM OR DVD IS 2 WORDS LONG
	MOVE TT,(T)
	TRNE TT,-1
	AOJA R,BQ2
	JRST BQCC

;BQCC BQGEST BQZQ BQCOPY BQNORM

BQCC:	MOVSS AR2A	
	MOVE AR2A,(AR2A)
	MOVEM AR2A,DD3
	MOVSS T
	MOVE T,(T)
	MOVEM T,DD2
	MOVSS TT
	MOVE TT,(TT)
	MOVEM TT,DD1
	SKIPN VETBL0
	JRST BQVET
	MOVEM R,DDL
BQGEST:	SUB R,DVSL	;CHECKS FOR PARTIAL REMAINDER<DIVISOR
	JUMPL R,BQZQ
	JUMPN R,BQGESS
	EXCH R,DD1	;SINCE R WAS 0, NOW DD1 IS 0
	MOVEM R,DD2
	JRST BQGESS
BQZQ:	SETZM QHAT
	JRST BQ8


BQCOPY:	SETOM NORMF	;COPIES DIVIDEND TO GET WORK SPACE
	PUSHJ P,BCOPY	;CLOBBERS T TT D B C AR1
	MOVEM A,(P)
	MOVE B,-1(P)
	JRST BNQUO1

BQNORM:	ADDI F,1	;THIS SECTION MULTIPLIES DVD AND DIV BY NORMF
	MOVEI T,1
	SETZ TT,
	DIV T,F
	MOVEM T,NORMF
	MOVE A,B
	MOVEM T,BNV1
	MOVE B,BNV2
	PUSHJ P,BNMUL
	EXCH A,(P)
	MOVE B,BNV2
	PUSHJ P,BNMUL
	MOVE B,A
	EXCH B,(P)
	MOVEM B,-1(P)
	JRST BNQUO1

;BQ6 BQSRRM BQSHRM BQVET BQSHRT REMFIN BQ10 BQDD BQ11

BQ6:
BQSRRM:	SETZM QHAT	;COME HERE IF PARTIAL REM IS ONE WORD
	JRST BQ8	;MEANS QUOTIENT AT THIS STEP IS ZERO

BQSHRM:	MOVEI R,2	;COME HERE IF PARTIAL REMAINDER IS 2 WORDS LONG
	MOVSS AR2A
	MOVSS T
	MOVE T,(T)
	MOVE AR2A,(AR2A)
	MOVEM T,DD2
	MOVEM AR2A,DD3
	SETZM DD1
	SKIPE VETBL0
	JRST BQGESS
	JRST BQ10

BQVET:	MOVEM TT,DD2
	MOVEM T,DD3
	SETZM DD1
	JRST BQ10


BQSHRT:	MOVE A,-1(P)
	JUMPE R,BQSH0
	SKIPE REMFL
	JRST REMFIN
	HLLZS R
	HRRM R,-1(P)
	JRST BQ6

REMFIN:	HLL A,-1(P)
	TRNN A,-1
	MOVE A,-1(P)	;IN CASE DIVIDEND IS REMAINDER
	PUSHJ P,BNTRUN
	MOVE TT,NORMF
	SUB P,R70+3
	POPJ P,


BQ10:	SUB R,DVSL	;SETS UP INITIAL ZERO FOR FIRST GUESS
	SKIPG R
	JRST BQSHRT
	SOSN R
	JRST BQ1DF
	MOVEM R,DDL
	MOVE F,C
BQDD:	MOVE F,(F)
	MOVE TT,(F)	
	SOJLE R,BQ11
	JRST BQDD
BQ11:	MOVEI A,(TT)
	MOVEI R,0
	HRRM R,(F)
	MOVE C,A
	JRST BQGESS
;BQ5 BQ7 BQ8 BQ9 BQ9A BQ9B

BQ5:	MOVE AR2A,[377777777777]
BQ7:	MOVE A,C	;MULTIPLY,SUBTRACT,AND ADD BACK LOOP
	MOVEM AR2A,QHAT
	SETZB AR2A,AR1
	MOVE B,-2(P)
	MOVE D,QHAT
	PUSHJ P,BQSUB
	HLLZS (AR2A)
	TRZ AR2A,777777
	PUSHJ P,BNTRUN
BQ8:	SETOM VETBL0	;QUOTIENT STORING LOOP
	SKIPE REMFL
	JRST BQ9
	MOVE AR1,A
	EXCH TT,AGDBT
	MOVE TT,QHAT
	PUSHJ P,C1CONS
	MOVE F,(P)
	HRRM F,(A)
	HRRM A,(P)
	MOVE A,AR1
	EXCH TT,AGDBT
BQ9:	MOVE B,-1(P)	;BRING DOWN A NEW DVD WORD
	TRNN B,-1
	JRST BQFIN
	MOVE C,(B)
	TRNN C,-1
	JRST BQEFIN
BQ9A:	MOVE AR1,(C)
	TRNN AR1,-1
	JRST BQ9B
	MOVE B,(B)
	MOVE C,(B)
	JRST BQ9A

BQ9B:	MOVEI AR1,0
	HRRM AR1,(B)
	HRRM A,(C)
	HRR A,C
	PUSHJ P,BNTRUN
	MOVE C,A
	JRST BQ1

;BQEFIN BQSH0 BQ1DF BQGESS BQCHEK BQC2 BQC1 BQFIN

BQEFIN:	MOVEI  C,0
	HRRM C,-1(P)
	MOVE C,B
	JRST BQ9B

BQSH0:	HLLZS R
	HRRM R,-1(P)
	JRST BQGESS

BQ1DF:	HRRZ A,(C)
	MOVEI R,0
	HRRM R,(C)
	MOVE C,A
BQGESS:	JRST 2,@[.+1]
	MOVE D,DVS1	;CLEARS NO DIVIDE FLAG 
	MOVE T,DD1
	MOVE TT,DD2
	DIV T,D
	JSP R,.+1
	TLNE R,40
	JRST BQ5
	JUMPE T,BQ6
	MOVE AR2A,T
BQCHEK:	MUL T,D
	MOVE R,DD1
	MOVE F,DD2
	SUB F,TT
	TLZ F,400000
	MOVE R,F
	MOVE F,DD3
	MOVE T,DVS2
	MUL T,AR2A
	CAMG T,R
	 JRST BQC1
BQC2:	SOJA AR2A,BQ7
BQC1:	
;I've commentted out the following code.
; not that I claim to understand this, but if the quotient is a number of
; the form 1+2↑N for N > 36., then the jump to BQC2 seems to be wrong.
; also as far as I can tell, no other case gets to that jump instruction.
; 	- JONL - 12/13/79

;;;	CAMN T,R
;;;	CAMG TT,F
;;;	JRST BQ7
;;;	JRST BQC2

	JRST BQ7

BQFIN:	SKIPE REMFL
	JRST REMFIN
	SETZB A,B
	EXCH A,-1(P)
	PUSHJ P,RECLAIM
	EXCH A,-2(P)	;NOTE: RECLAIM RETURNED NIL
	AOSE NORMF
	PUSHJ P,RECLAIM
	POP P,A
	SUB P,R70+2
	JRST BNTRUN
;BQSUB BQSUB0 BQSUB7 BQSUB1 BQSUB6

BQSUB:	MOVEI R,0		;THIS MULTIPLIES DIVISOR BY PARTIAL QUOTIENT ESTIMATE
BQSUB0:	MOVE AR2A,A		;AND SUBTRACTS FROM THE PARTIAL REMAINDER
	MOVE A,(A)		;AND ADDS BACK IF THE ESTIMATE WAS TOO LARGE
	MOVE B,(B)		;THE NEW PARTIAL REMAINDER IS STORED IN
	HLRZ T,B		;THE SAME WORDS AS THE OLD PART. REM.
	MOVE T,(T)
	MUL T,D
	MOVS AR1,A
	ADD TT,R
	TLZE TT,400000
	AOS T
	EXCH TT,(AR1)
	SUBB TT,(AR1)
	TLZE TT,400000
	AOS T
	MOVEM TT,(AR1)
	TRNN B,-1
	JRST BQSUB1
BQSUB7:	TRNN A,-1
	JRST BQSUB3
	MOVE R,T
	JRST BQSUB0

BQSUB1:	JUMPN T,BQSUB6
	MOVE A,C
	POPJ P,

BQSUB6:	MOVEI B,[R70,,NIL]
	JRST BQSUB7
;BQSUB3 BQSUB4

;;; KNUTH SAYS THE FOLLOWING PIECE OF CODE (ADDING BACK) IS
;;; NEEDED IN ONLY ABOUT 3 OR 4 CASES IN 34 BILLION. HERE
;;; ARE TWO NUMBERS ACCIDENTALLY DISCOVERED BY GOSPER WHICH
;;; WILL CAUSE THIS ADDING BACK TO HAPPEN:
;;; THE DIVIDEND IS:
;;;	2791789817939938387128631852330682768655711099796886
;;;		76652915704481188064205113686384821261582354
;;;		6679451522036433421137784129286923496509.
;;; THE DIVISOR IS:
;;;	888654299197548479101428655285643704385285845048283
;;;		973585973531.
;;; TO SEE WHY HE DISCOVERED IT, TRY LOOKING AT THE QUOTIENT!
;;;
;;; HERE ARE TWO MORE NUMBERS WHICH EXCUTE THIS CODE; FURTHERMORE,
;;; THEY CAUSE THE OVER-SUBTRACTED DIVIDEND TO BE SHORTER THAN
;;; THE DIVISOR; THIS IS THE REASON FOR THE COPYING BELOW.
;;; (GOSPER ALSO DISCOVERED THESE NUMBERS!)
;;; THE DIVIDEND IS:
;;;	814814390533794434507378275363751264420699600792121
;;;		5135985742227369051304412442580926595072.
;;; THE DIVISOR IS:
;;;	10889035741470030830827987437816582766593.

BQSUB3:	HLLZS (AR2A)		;CHOP OFF END OF ANSWER STORAGE
	TRZ AR2A,777777
	MOVE A,C
	PUSHJ P,BNTRUN		;TRUNCATE ANSWER, WHICH IS A NEGATIVE NUMBER IN POSITIVE FORM
	PUSH P,A
	HRRZ A,-4(P)		;GET (ABSOLUTE VALUE OF) DIVISOR
	PUSHJ P,BCOPY		;MUST COPY IT, OR ELSE CARRY
	POP P,B			; TRUNCATION MIGHT CLOBBER IT!
	PUSHJ P,BNADD		;SET UP ANSWER FOR ADD BACK
	SKIPA B,A
BQSUB4:	MOVE B,(B)		;CHOP OFF CARRY
	MOVE C,(B)
	HRRZ AR1,(C)
	JUMPN AR1,BQSUB4
	MOVE AR2A,B		;CARRY WILL BE CHOPPED OFF WHEN THIS POPJ'S
	SOS QHAT		;CORRECT QUOTIENT GUESS
	POPJ P,
;FLBIGF FLBIG FLBIGX FLBIGZ FLTB1 FLBIGQ FLBIGO

SUBTTL	BIGNUM TO FLONUM CONVERSION

FLBIGF:	JUMPN R,FLBIG
	PUSH P,CFLOAT1
FLBIG:	PUSHJ P,SAVX5	;RECEIVES BIGNUM HEADER IN TT,
	HLRZ A,TT	;LEAVES SIGN BIT IN AC A
	HRRZ T,(TT)	;LEAVES RESULT AS NUMERIC IN TT
	JUMPE T,FLTB1	;SAVES ALL OTHER ACS
	PUSHJ P,FLBIGZ
	FADR TT,D	;ROUND UP
	SKIPE RWG
	JFCL 8.,FLBIGX
	JFCL 8.,FLBIGO
FLBIGX:	JUMPE A,.+2
	MOVNS TT
	MOVEM TT,-3(FXP)
	JRST RSTX5


FLBIGZ:	PUSHJ P,1HAU		;MUST BE > 27. BITS, OR ELSE WOULDN'T BE HERE
	MOVEI T,(TT)
	MOVEI D,27.
	PUSHJ P,1HAI1		;1HAI1 LEAVES TRAILING BITS IN TT+1
	ASH TT+1,-8.
	TLO TT,200000		;INSTALL EXPONENTS
	TLO TT+1,145000
	JFCL 8.,.+1
	TRNE T,-1#377		;INSURE OVERFLOW IF EXPONENT IS TOO LARGE
	TRO T,377
	FSC TT,(T)
	FSC TT+1,(T)
	POPJ P,

FLTB1:	HLRZ TT,(TT)
	MOVE TT,(TT)	;ONE-WORD BIGNUM?
	JSP T,IFLOAT
	MOVE D,TT
	JRST FLBIGX

FLBIGQ:	HRROS (P)	;HACK SO THAT (*QUO <FLONUM> <HUGE-BIGNUM>)
	JRST FLBIG	; WILL CAUSE UNDERFLOW, NOT OVERFLOW

FLBIGO:	PUSHJ P,RSTX5
	POP P,T
	TLNN T,1	;IF BIT 3.1 IS SET, SO IS 4.7 (SEE T7O0)
	JRST OVFLER
	AOJA T,T7O0
;FIXBIG FXBFV FXBFZ FBFIN FXBFQ MNSBG POP4J

SUBTTL	FLONUM TO BIGNUM CONVERSION

FIXBIG:	MOVE TT,T
	MULI TT,400
	JSP T,BNARSV
	MOVE AR1,A
	MOVE F,D
	SUBI TT,200
	IDIVI TT,43
	SETZ R,
	ASHC R,(D)
	MOVE D,TT
	JUMPE R,FXBFQ
	MOVE TT,R
	JSP T,FWCONS
	PUSHJ P,NCONS
	MOVE TT,F
	MOVE C,A
FXBFV:	JSP T,FWCONS
	PUSHJ P,NCONS
	HRRM C,(A)
	MOVEI C,(A)
FXBFZ:	SOJLE D,FBFIN
	MOVEI TT,0
	PUSHJ P,C1CONS
	HRRM C,(A)
	MOVEI C,(A)
	JRST FXBFZ
FBFIN:	SKIPG (AR1)
	TLC A,-1
	JSP T,BNARRS
	JRST BNCONS

FXBFQ:	MOVEI C,0
	MOVE TT,F
	JRST FXBFV

MNSBG:	TLC TT,-1		;MINUS, FOR BIGNUM
	MOVE A,TT
	PUSH P,AR1
	PUSH P,[POP4J]
	PUSHJ P,BNTRSZ		;FOR 100000000000, CONVERT
	MOVE TT,[1←43]		; TO FIXNUM SETZ, ELSE
	JRST FIX1
	JRST BNCONS		; TO A REGULAR BIGNUM
POP4J:	POP P,AR1
	POPJ P,

;ABSBG0 ABSBG REMBIG GRBB GRBBL GRBR

SUBTTL	ABS AND REMAINDER FOR BIGNUMS

ABSBG0:	MOVE TT,(A)
ABSBG:	JUMPGE TT,CPOPJ		;ABS FOR BIGNUM
	HRRZ A,TT
	JRST BGNMAK

REMBIG:	EXCH A,B
	MOVE D,TT	;REMAINDER FOR BIGNUM
	SETZM PLUS8	;SO THAT ARITHMETIC LOOP WILL RESTORE TO HERE
	SETOM REMFL
	JSP T,NVSKIP
	JRST BNDV	;REMFL WILL STOP ARITHMETIC LOOP
	JRST REM2BN
	JSP T,REMAIR	;FOO! FLONUM ARG NOT COMPREHENSIBLE!

GRBB:	SETZM NORMF	;GREATERP FOR BIGNUM WITH BIGNUM
	MOVE A,D
	MOVE B,TT
	MOVE AR1,D
	MOVE AR2A,TT
	ASH TT,-43
	ASH D,-43
	CAME D,TT
	JRST GRB13
	SETO C,
GRBBL:	TRNN AR1,-1
	JRST GRB1
	TRNN AR2A,-1
	JRST GRB2
	MOVS AR1,(AR1)
	MOVS AR2A,(AR2A)
	MOVE D,(AR1)
	MOVE TT,(AR2A)
	JUMPGE A,.+3
	MOVNS D
	MOVNS TT
	XCT GRESS0
	JRST GRBF
	SETZ C,
GRBR:	MOVSS AR1
	MOVSS AR2A
	JRST GRBBL
;GRFXB GRBFX GRBF GRB1 GRB12 GRB13 GRB14 GRB2 GRBBEL GRBBE2

SUBTTL	GREATERP AND LESSP FOR BIGNUMS

GRFXB:	SETZM NORMF		;GREATERP FOR FIXNUM WITH BIGNUM
	PUSH FXP,D
	MOVE B,TT
	MOVEI AR2A,QBIGNUM
	MOVEI AR1,QFIXNUM
	TLNE D,400000
	SKIPA D,XC-1
	MOVEI D,1
	JRST GRB14

GRBFX:	SETZM NORMF		;GREATERP FOR BIGNUM WITH FIXNUM
	PUSH FXP,TT
	MOVE A,D
	MOVEI AR1,QBIGNUM
	MOVEI AR2A,QFIXNUM
	TLNE TT,400000
	SKIPA TT,XC-1
	MOVEI TT,1
	JRST GRB14


GRBF:	CAMN D,TT
	JRST GRBR
	SETO C,
	JRST GRBR

GRB1:	TRNN AR2A,-1
	JRST GRBBEL
	MOVEI D,2
	MOVEI TT,4
GRB12:	TLNE A,1
	EXCH D,TT
GRB13:	MOVEI AR1,QBIGNUM
	MOVEI AR2A,QBIGNUM
GRB14:	XCT GRESS0
	SKIPA C,[-1]
	MOVEI C,0
	JRST GRBBE2

GRB2:	SETOM NORMF
	MOVEI D,4
	MOVEI TT,2
	JRST GRB12

GRBBEL:	MOVEI AR1,QBIGNUM
	MOVEI AR2A,QBIGNUM
GRBBE2:	MOVE D,A
	MOVE TT,B
	CAIN AR2A,QFIXNUM
	POP FXP,TT
	CAIN AR1,QFIXNUM
	POP FXP,D
	SKIPE NORMF
	MOVNS C
	SKIPN C
	XCT CSUCE
	XCT CFAIL
;1HAI 1HAI1 2HAI 2HAI2 2HAI0 2HAI3 2HAI4

SUBTTL	HAIPART FOR BIGNUMS

IFN USELESS,[
1HAI:	JSP T,FXNV2
	JUMPLE D,3HAI
	PUSH FXP,D
	PUSHJ P,1HAU
	POP FXP,D
	CAILE D,35.	
	JRST 2HAI
	PUSH P,CFIX1
]		;END OF IFN USELESS
				;IN USELESS VERSION, 1HAI CALLED ONLY BY FLBIG
1HAI1:	ADDI R,-35.-1(D)	;FINAL ANSWER FITS IN ONE WORD
	HLRZ D,(F)		;SPREAD OUT HIGH WORD AND
	MOVE D,(D)		;NEXT-TO-HIGH WORD INTO TT,D
	HRRZ TT,(F)
	HLRZ TT,(TT)
	MOVE TT,(TT)
	ASHC TT,(R)
	POPJ P,

IFN USELESS,[
2HAI:	SUBI TT,(D)
	JUMPLE TT,CPOPJ
	PUSHJ FXP,SAV3	;COPY BIGNUM, BUT TOSS OUT LOW ORDER BITS
	IDIVI TT,35.	;HOW MANY BITS TO THROW AWAY
	MOVEI F,(A)
	HRRZ F,(F)
	SOJGE TT,.-1
	MOVN C,D
	SUBI D,35.
	HLRZ TT,(F)
	MOVE TT,(TT)
	HRRZ F,(F)	;F IS CDR'ING DOWN INPUT
	JUMPE F,2HAI0
	HLRZ T,(F)
	MOVE T,(T)	;C HOLDS AMNT TO SHIFT RIGHT BY
	ASHC T,(C)
	PUSHJ P,C1CONS
	MOVEI B,(A)
2HAI2:	MOVEI R,(A)	;R HAS PTR TO LAST OF FORMING LIST
	HRRZ F,(F)
	JUMPE F,2HAI3
	ASHC T,(D)	;MOVE T INTO TT
	HLRZ T,(F)
	MOVE T,(T)
	ASHC T,(C)
	PUSHJ P,C1CONS
	HRRM A,(R)
	JRST 2HAI2

2HAI0:	ASH TT,(C)	;DEFINITELY A BUG TO COME HERE,SINCE WE
	JSP R,RSTR3
	JRST FIX1	;THINK WE ARE RETURNING A BIGNUM

2HAI3:	JUMPE T,2HAI4
	MOVE TT,T
	PUSHJ P,C1CONS
	HRRM A,(R)
2HAI4:	MOVEI A,(B)
	PUSHJ P,BGNMAK
	POP P,C
	JRST POP2J
]		;END OF IFN USELESS


;;; THE CODE FOR 3HAI IS PUTCODED.

;GCDBG GCDBG0 GCDBG1 GCDBG2 GCDBGU GCDBHU GCDBG4

IFN USELESS,[

SUBTTL	GCD FOR BIGNUMS

GCDBG:	MOVEI F,1	;INITIALIZE SMALLNUM MATRIX
	MOVEM F,GCD.A
	MOVEM F,GCD.D
	SETZM GCD.B
	SETZM GCD.C
	HLRZ R,(TT)	;GET LOW ORDER WDS OF ARGS
	MOVE R,(R)
	HLRZ F,(D)
	MOVE T,R	;LOW WD OF U
	IOR R,(F)
	PUSH FXP,R
	JUMPE R,GCDBG4	;BOTH LOW WDS 0
	MOVN R,R
	ANDM R,(FXP)	;GRTST COMMON PWR OF 2 OR 0 IF > 2↑35.
	PUSH FXP,(F)	;LOW WD OF V.
	JUMPN T,GCDBG0	;IF T=0 AND (F) EVEN, XTRA PWR OF 2 WILL
	EXCH A,B	; COME BACK FROM RECURSION, SO SWAP TO
	EXCH TT,D	; UNZERO T, THUS GUARANTEEING RECURSION WITH
	EXCH T,(FXP)	; AT LEAST 1 ODD ARG.
GCDBG0:	MOVEI R,(TT)	;GET HI WDS IF SAME LENGTH.
	MOVEI F,(D)
	HRRZ D,(D)
	HRRZ TT,(TT)
	JUMPE D,GCDBG2
	JUMPN TT,GCDBG0
	EXCH A,B		;B IS LONGER THAN A
GCDBG1:	SUB FXP,R70+2
	PUSH P,B		;A IS LONGER THAN B
	PUSHJ P,REMAINDER	;SO GCD(A,B) = GCD(REMAINDER(A,B),B)
	POP P,B
	JRST GCD

GCDBG2:	JUMPN TT,GCDBG1	;U,V UNEQUALLY LONG
	HLRZ R,(R)	;U,V EQUALLY LONG,
	HLRZ F,(F)	; GET ACTUAL HI WDS.
	MOVE TT,(R)
	MOVE D,(F)
	POP FXP,R	;TT,D HAVE HI WDS (OR 0 AND NON0 IF UNEQUAL LENGTH)
	MOVEI F,35.	;T,R HAVE LO WDS
	MOVEM F,GCD.UH	;SHFT CTR
GCDBGU:	TRNE T,1
	JRST GCDBGV	;U IS ODD
GCDBHU:	LSH T,-1
	LSH D,1	;TT RIGHT 1 REL TO D
	JUMPGE D,.+3
	LSH D,-1
	LSH TT,-1
	MOVE F,GCD.C	;HALVING A, B EQUIV TO DOUBLING C,D
	ADDM F,GCD.C
	MOVE F,GCD.D
	ADDM F,GCD.D
	SOSE GCD.UH
	JRST GCDBGU
GCDBG4:	PUSH P,A
	PUSH P,B
	MOVE TT,GCD.A
	PUSHJ P,BNXTIM
	PUSH P,A		;T <- A*U
	MOVE A,-1(P)
	MOVE TT,GCD.B
	PUSHJ P,BNXTIM
	POP P,B
	PUSHJ P,.PLUS		;T <- T+B*V
	PUSHJ P,BNLWFL
	EXCH A,-1(P)
	MOVE TT,GCD.C
	PUSHJ P,BNXTIM
	EXCH A,(P)		;W <- C*U
	MOVE TT,GCD.D
	PUSHJ P,BNXTIM
	POP P,B
	PUSHJ P,.PLUS		;W <- W+D*V
	PUSHJ P,BNLWFL
	POP P,B			;U <- T
	POP FXP,TT
	CAIN TT,1
	JRST GCD
	PUSH FXP,TT
	PUSHJ P,GCD
	MOVEI B,(FXP)
	SKIPN (B)
	MOVEI B,BN235	;CAN ONLY HAPPEN WHEN BOTH LO WDS 0
	PUSHJ P,.TIMES
	SUB FXP,R70+1
	POPJ P,
;GCDBGV GCDBHV BNLWFL BNLWFX BNLWXX GCDBGO GCDBGT GCDBX GCDOV GCDOV1

GCDBGV:	TRNE R,1
	JRST GCDBGO	;BOTH U,V ODD
GCDBHV:	LSH R,-1
	LSH TT,1
	JUMPGE TT,.+3
	LSH TT,-1
	LSH D,-1
	MOVE F,GCD.A
	ADDM F,GCD.A
	MOVE F,GCD.B
	ADDM F,GCD.B
	SOSE GCD.UH
	JRST GCDBGV
	JRST GCDBG4

BNLWFL:	HRRZ B,(A)		;FLUSH LOW 35. ZEROS OF A
	JUMPE B,BNLWXX
	HRRZ B,(B)
	HRRZ TT,(B)		;GCD only permitted to clobber A,B
	JUMPE TT,BNLWFX		;IF BIGNUM BECOMES FIXNUM
	HRRM B,(A)
	POPJ P,

BNLWFX:	HLRZ A,(B)
	POPJ P,

BNLWXX:	SKIPE (A)
	 MOVEI A,IN0-1
	POPJ P,

GCDBGO:	CAML TT,D
	JRST GCDBGT
	SUB D,TT
	SUB R,T
	MOVN F,GCD.A
	ADDM F,GCD.C
	MOVN F,GCD.B
	ADDM F,GCD.D
	JRST GCDBHV

GCDBGT:	SUB TT,D
	SUB T,R
	MOVN F,GCD.C
	ADDM F,GCD.A
	MOVN F,GCD.D
	ADDM F,GCD.B
	JRST GCDBHU


GCDBX:	SKIPN D,(B)		;FIXNUM IS ZERO - RETURN BIGNUM
	JRST ABSBG0		;MAYBE NEED TO TAKE ABS VALUE
	CAMN D,[400000,,]	;CHECK FOR NASTY -400000000000 CASE
	JRST GCDOV
	PUSH P,B		;ELSE TAKE A REMAINDER
	PUSHJ P,REMAINDER
	POP P,B
	JRST .GCD		;GUARANTEED TO HAVE TWO FIXNUMS NOW

GCDOV:	MOVEI B,(A)		;HANDLE NASTY -400000000000 CASES
GCDOV1:	PUSHJ P,ABSOV
	JRST GCD

]		;END OF IFN USELESS


PGTOP BIG,[BIGNUM-ONLY ARITHMETICS]
;;@ END OF BIGNUM 18
]

;POP3UB POP2UB EVALHOOK EVNH3 EVNH0 OEVAL OEVL1 EVAL EVAL0

SUBTTL	EVAL, EVALHOOK, AND EVAL-WHEN

	PGBOT EVL

POP3UB:	POPI P,1
POP2UB: POPI P,2
	JRST UNBIND

EVALHOOK:
	JSP TT,LWNACK
	   LA23,,QEVALHOOK
	MOVE D,T
	JSP T,SPECBIND		;BIND "EVALHOOK" TO LAST ARG
	 -1←33. 0,VEVALHOOK
	CAME D,XC-2
	 JRST EVNH3
	PUSH P,[POP2UB]
	MOVE A,-2(P)
	JRST EVNH0		
EVNH3:	PUSH P,[POP3UB]
	PUSH P,-3(P)
	PUSH P,-3(P)
	PUSHJ FXP,AEVAL
EVNH0:	SKIPN V.RSET		;EVALUATE, BYPASSING HOOK CHECK
	 JRST EV0		.SEE STORE
	JRST EVAL0


OEVAL:	JSP TT,LWNACK		;"EXTERNAL" EVAL - LSUBR (1 . 2)
	   LA12,,QOEVAL		;MAY TAKE ALIST AS SECOND ARG
	AOJE T,OEVL1
	PUSH P,[POP2J]		;PHOO! HAVE TO KEEP THE SAME EVALFRAME
	PUSH P,-2(P)		;
	PUSH P,-2(P)
	PUSHJ FXP,AEVAL		;MAKE UP ALIST, POP OFF 2, AND LEAVE ARG IN A
	JRST EVAL

OEVL1:	POP P,A
EVAL:	SKIPN V.RSET		;"INTERNAL" EVAL - ARG IN A
	 JRST EV0
	SKIPN B,VEVALHOOK
	 JRST EVAL0
	JSP T,SPECBIND		;SUPER-RANDOM HACK SO THAT MM
	   VEVALHOOK		; CAN INVENT A ↑N FOR LISP
	CALLF 1,(B)
	JRST UNBIND

EVAL0:	SKIPE NIL		;RANDOM PLACE TO CHECK FOR NIL CLOBBERED
	 PUSHJ P,NILBAD
	PUSH P,FXP		;EVAL FRAME FORMAT:
	HRLM FLP,(P)		;	FLP,,FXP
	PUSH P,A		;	SP,,<FORM>
	HRLM SP,(P)		;	$EVALFRAME
	PUSH P,[$EVALFRAME]	;SEE APPLY FOR FORMAT OF APPLY FRAMES
.SEE L$EVALFRAME

;FALLS THROUGH
;EV0 EV0A EV0ALS EVAPH EV0H EVTB1 EV2 EVTB2 EE1 EE2 EE2A ETT EAL EAL2 EFM

;FALLS IN

;;; EVALUATE A FORM IN A

EV0:	JUMPE A,CPOPJ		;NIL => NIL, ALWAYS!!!
	MOVEI C,ILIST
	SKOTT A,LS
2DIF JRST (TT),EVTB1-1,QLIST		.SEE STDISP

IFN HNKLOG,[
	TLNE TT,HNK
	 JRST EV0H		;HUNK?
]; End of IFN HNKLOG,

EV0A:	MOVE AR1,(A)		;FUNCTION ON 0(P), place to exit in C
	HLRZ T,AR1		; this routine should put into TT the address
	SKOTT T,LS		; of the place to jump for running the code.
2DIF JRST (TT),EVTB2-1,QLIST		.SEE STDISP
IFN HNKLOG,[
	TLNE TT,HNK		;Hunk?
	  JRST EVAPH		;  Go apply it
EV0ALS:
]; END of IFN HNKLOG,

	HLRZ TT,(T)
	CAIN TT,QLAMBDA
	 JRST EXP3
	CAIE TT,QFUNARG
	 CAIN TT,QLABEL
	  JRST EXP3
	JUMPL C,EV3B
	SKIPE B,VOEVAL
	 JCALLF 1,(B)		;EVALSHUNT
	HLRZ A,AR1
	TLNN C,777740		;MAYBE SAVE FUNCTION NAME IN EV0B
	 MOVEM A,EV0B
	PUSH P,EV0B		;NON-ATOMIC FUNCTION, NOT LAMBDA,
	PUSH P,C		; LABEL, OR FUNARG
	PUSH P,AR1
	PUSHJ P,EV0		;SO EVALUATE THE FORM
	POP P,AR1
	POP P,C
	POP P,EV0B
	JRST EV4		;NOW TRY USING THE RESULT AS A FUNCTION

IFN HNKLOG,[
;; Apply a hunk
EVAPH:	PUSH P,T
	PUSHJ P,USRHNP		;Maybe this is a user-extended hunk?
	MOVE TT,T
	POP P,T
	JUMPE TT,EV0ALS		;Not ours, just like a list
	MOVEI TT,IAPPLY
	JRST ESB2

;; Evaluate a hunk

EV0H:	PUSHJ P,USRHNP		;Maybe this is a user-extended hunk
	JUMPE T,EV0A		;No, go pretend it's a list
	PUSH P,A
	PUSH P,[QOEVAL]
	MOVNI T,2
	XCT SENDI		;Let's send it an EVAL message
	POPJ P,
]; END of IFN HNKLOG,

EVTB1:	JRST PDLNKJ		;FIXNUMS EVALUATE TO THEMSELVES
	JRST PDLNKJ		;DITTO FLONUMS
DB$	JRST PDLNKJ		;DITTO DOUBLES
CX$	JRST PDLNKJ		;DITTO COMPLEXES
DX$	JRST PDLNKJ		;DITTO DUPLEXES
BG$	POPJ P,			;GUESS WHAT, FELLAHS
	JRST EE1		;SOME HAIR FOR SYMBOLS
HN$  REPEAT HNKLOG+1, .VALUE	;HUNKS (SHOULD BE CAUGHT BEFORE THIS TABLE)
	JRST EV2		;RANDOMS LOSE
	POPJ P,			;ARRAYS EVAL TO SELVES
IFN .-EVTB1-NTYPES+1, WARN [WRONG LENGTH TABLE]

EV2:	%WTA EMS25		;UNEVALUABLE DATUM (RANDOMNESS)
	JRST EV0

EVTB2:	JRST EV3A		;FIXNUM AS A FUNCTION IS AN ERROR
	JRST EV3A		;DITTO FLONUM
DB$	JRST EV3A		;DITTO DOUBLE
CX$	JRST EV3A		;DITTO COMPLEX
DX$	JRST EV3A		;DITTO DUPLEX
BG$	JRST EV3A		;DITTO BIGNUM
	JRST EE2		;SYMBOLS - THE GOOD CASE
HN$  REPEAT HNKLOG+1, .VALUE	;HUNKS
	JRST EV3A		;IT'S A TRULY RANDOM FUNCTION!
	JRST ESAR		;IT'S AN ARRAY
IFN .-EVTB2-NTYPES+1, WARN [WRONG LENGTH TABLE]




EE1:	PUSHJ P,EVSYM		;EVALUATE SYMBOL
	 POPJ P,			;WIN
	JRST EV0		;LOSE - RETRY


EE2:	SETZ R,			;ZERO R FOR HACK TO TRAP AUTOLOAD LOSS
EE2A:	HRRZ T,(T)		;CAR (X) IS ATOMIC
	JUMPE T,EAL2		;GET FUNCTION DEFINITION OFF ATOM
	HLRZ TT,(T)
	HRRZ T,(T)
	CAIL TT,QARRAY		;SYMBOL HEADERS FOR FUNCTION MARKERS
	 CAILE TT,QAUTOLOAD	; ARE LINEAR IN MEMORY
	  JRST EE2A
   2DIF JRST @(TT),ETT,QARRAY

ETT:	EAR		;ARRAY
	ESB		;SUBR
	EFS		;FSUBR
	ELSB		;LSUBR
	AEXP		;EXPR
	EFX		;FEXPR
	EFM		;MACRO
	EAL		;AUTOLOAD

EAL:	HRRI R,(T)	;NOTE THAT WE SAW AUTOLOAD PROPERTY
	JRST EE2A

EAL2:	JUMPL R,EV3J		;FN UNDEF AFTER AUTOLOAD
	JUMPE R,EV3		;NO AUTOLOAD PROP - TRY EVALING ATOM
	MOVEI B,(R)
	HLRZ T,(A)
	PUSHJ P,IIAL
	HLRZ T,(A)
	SETO R,
	JRST EE2A

EFM:	CAIE C,ILIST		;FOUND MACRO FOR EVAL CASE
	 JRST EE2A 		; BUT IGNORE MACROS FOR APPLY
	MOVE B,AR1
	HLRZ AR1,(T)		;COMMENT THIS CROCK
	CAIN A,AR1
	PUSHJ P,CONS1
	CALLF 1,(AR1)		;SO HAND THE FORM TO THE MACRO
	JRST EVAL		; AND RE-EVALUATE THE RESULT
;EFX AEXP EXP3 CIAPPLY EFS ELSB ELSB1 ESAR EAR EAR3 EAR1

EFX:	HLRZ T,(T)		;FOUND FEXPR
	HLL T,AR1		;SO A FEXPR BEHAVES LIKE AN EXPR
	PUSH P,T		; WHOSE ONE ARG IS CDR OF THE FORM
	HRLI AR1,400000		.SEE IAP4 ;FOR EXPLANATION OF THIS HACK
	PUSH P,AR1		; WHICH ALLOWS FEXPRS AN ALIST ARG, SEE
	MOVNI T,1		; THE CODE AT IAPPLY
	JRST IAPPLY

AEXP:	HLRZ T,(T)		;FOUND EXPR
	HLL T,AR1
EXP3:	PUSH P,T		;FOUND LAMBDA, LABEL, FUNARG
	MOVEI A,(AR1)
CIAPPLY:
	MOVEI TT,IAPPLY
	JRST (C)

EFS:	HLRZ T,(T)		;FOUND FSUBR
	MOVEI C,ESB3		;THIS IS SO WE DON'T EVAL THE ARGS!
	JRST ESB2

ELSB:	PUSH P,CPOPJ		;FOUND LSUBR
	HLLM AR1,(P)
	MOVE R,T
	HLL R,AR1
	MOVEI TT,ELSB1
	HRRZ A,AR1
	JRST (C)

ELSB1:	MOVEI A,NIL		;A HAS NIL WHEN ENTERING AN LSUBR
	HLRZ D,(R)
	SKIPN V.RSET
	 JRST (D)
	HLRZ R,R
	PUSHJ P,ARGCK0		;CHECK OUT NUMBER OF ARGS
	 JRST ESB6
	JRST (D)


ESAR:	SKIPA TT,T		;FOUND SAR
EAR:	 HLRZ TT,(T)		;FOUND ARRAY
	MOVEI R,(TT)
	SKOTT TT,SA
	 JRST EV3A
EAR3:	HRRZ T,ASAR(R)
	CAIN T,ADEAD
	 JRST EV3A		;AHA! THIS ARRAY IS DEAD!
	PUSH P,R
	MOVEI T,EAR1		;MUST DO SOME HAIR SO THAT
	JRST ESB4		; INTERRUPTS WON'T SCREW US

EAR1:	MOVE T,LISAR		;DO NOT MERGE THIS WITH IAPAR1
	JRST @ASAR(T)		.SEE ESB3
;ESB ESB4 ESB2 ESB1 ESB3 ESB3A ESB3C EV3 EV4 EV4B EV3C EFMER EWHEN SYMEV0 SYMEVAL EVSYM EE1A

ESB:	HLRZ R,AR1		;FOUND SUBR
	HLRZ T,(T)
ESB4:	MOVEI TT,ESB1
ESB2:	MOVEI A,(AR1)		;A GETS LIST OF ARGS
	HLL T,AR1
	PUSH P,T		;STORE ADDRESS OF SUBROUTINE FOR FN
	JRST (C)		;GO SOMEWHERE OR OTHER

ESB1:	PUSHJ P,ARGCHK
	 JRST ESB6
	MOVE TT,[A,,A+1]
	MOVEI A,Q..MIS
	BLT TT,A+NACS-1
	JSP R,PDLA2(T)
ESB3:	HRRZ TT,(P)
	CAIN TT,EAR1		;HACK TO HELP EAR1 WIN
	JRST ESB3C
ESB3A:	SKIPN V.RSET
	POPJ P,			;ADDRESS OF SUBR IS ON STACK
	MOVEI TT,CPOPJ		;WELL, MAYBE DO SOME *RSET HAIR
	HLL TT,(P)
	EXCH TT,(P)
	JRST (TT)

ESB3C:	HRRZ TT,-1(P)
	MOVEM TT,LISAR		;SAR PROTECTED BY BEING IN LISAR
	POP P,-1(P)
	JRST ESB3A


EV3:	SKIPE EVPUNT		;PUNT EVALUATION OF SYMBOL?
	 JRST EV3C
	JUMPL C,EV3B		;C<0 => TOO MANY RE-EVALS OF A FN
	HLRZ A,AR1
	HLRZ A,(A)
	HRRZ A,@(A)		;GET VALUE OF ATOMIC FUNCTION
	CAIN A,QUNBOUND		;IT'S UNBOUND. LOSE, LOSE, LOSE...
	JRST EV3A
	TLNN C,777740		;SAVE FN NAME IN EV0B, MAYBE
	HLRZM AR1,EV0B
EV4:	ADD C,[1←34.]		;THIS SIZE OF THIS QUANTITY CONSTRAINS
EV4B:	HRL AR1,A		; THE # OF TIMES WE MAY RE-EVAL THE FN
	MOVEI A,AR1
	JRST EV0A

EV3C:	CAIN C,ILIST		;RUN OUT OF THINGS TO TRY WHEN LOOKING FOR
	 JRST EV3A		; FUNCTION DEF ON A SYMBOL.  DID "APPLY" 
EFMER:	LERR EMS21		;IMPROPER USE OF MACRO


;;; (EVAL-WHEN (. . . EVAL . . .)   e1 e2 . . . en)   does a progn on
;;;	the ei, and returns non-null only if the evaluations were done.
;;;  	The context combined with the first arg list determines if any
;;; 	thing is done -  if there is EVAL in this list, then the progn
;;; 	is done.
EWHEN:	HRRZ C,(A)
	SKOTT C,LS
	 JRST FALSE
	PUSH P,C
	HLRZ B,(A)
	MOVEI A,QOEVAL
	PUSHJ P,MEMQ1
	POP P,B
	JUMPE A,CPOPJ
	JRST IPROGN


SUBTTL SYMEVAL

SYMEV0:	%WTA NASER
SYMEVAL:	JUMPE A,CPOPJ	;SUBR 1
	JSP T,SPATOM
	JRST SYMEV0
	PUSHJ P,EVSYM
	 POPJ P,		;WON
	JRST SYMEVAL		;LOST

;;; EVALUATE ATOMIC SYMBOL. SKIPS ON FAILURE (AFTER DOING ERROR).

EVSYM:	HLRZ T,(A)		;T GETS POINTER TO SYMBOL BLOCK
	HRRZ T,@(T)		;AR1 GETS VALUE FROM VALUE CELL!!!
	CAIN T,QUNBOUND
	 JRST EE1A		;FOOBAR! VALUE CELL CONTAINS UNBOUND
	MOVEI A,(T)		;SO THE VALUE IS THE RESULT OF EVAL
	POPJ P,

EE1A:	%UBV MES6		;UNBOUND VAR
	JRST POPJ1

;;; END OF EVSYM ROUTINE
;APPLY APPWT1 .APPLY AP3 AP3A APPWTA AP2 AP4

SUBTTL	APPLY, *APPLY, SUBRCALL, LSUBRCALL, ARRAYCALL, FUNCALL

APPLY:	CAME T,XC-2		;"EXTERNAL" APPLY - SUBR (2 . 3)
	 JRST AP4		;MAY TAKE A THIRD ALIST ARG
	JSP R,PDLA2(T)
APPWT1:	JUMPE B,AP3		;ALLOW NIL AS SECOND ARG
	SKOTT B,LS		;SECOND ARG TO APPLY MUST BE A LIST
	 JRST APPWTA
.APPLY:				;SUBR 2 (*APPLY)
AP3:	SKIPN V.RSET
	 JRST AP3A
	PUSH P,B
	PUSH P,FXP
	HRLM FLP,(P)
	PUSH P,A
	HRLM SP,(P)
	PUSH P,[$APPLYFRAME]
AP3A:	MOVEI AR1,(B)		;"INTERNAL" APPLY -
	HRL AR1,A		; FUNCTION IN A, LIST OF ARGS IN B
	MOVEI A,AR1
	MOVEI C,AP2		;THIS CROCK LETS US SHARE CODE WITH
	JRST EV0A		; EVAL BY PREVENTING EVAL'ING OF ARGS

APPWTA:	EXCH A,B
	WTA [MUST BE A LIST -- APPLY!]
	EXCH A,B
	JRST APPWT1

AP2:	MOVEI T,0		;DE-LISTIFY THE ARGS AND STACK THEM
	JUMPE A,(TT)		; ON THE PDL, AND ALSO COUNT THEM
	PUSH P,(A)		;DOING THINGS THIS WAY AVOIDS
	HLRZS (P)		; DESTROYING ANY OTHER ACS
	HRRZ A,(A)
	SOJA T,.-4

AP4:	JSP TT,LWNACK		;APPLY WITH AN ALIST (GOOD GRIEF!)
	   LA23,,QAPPLY
	MOVEM T,APFNG1
	SKIPE A,(P)		;PURPOSELY CRIPPLING THE POWER OF
	 JSP T,FXNV1		; THE ALIST ROUTINE: FOOEY! - GLS
	PUSHJ P,ALIST		;SO CREATE MORONIC ALIST ENVIRONMENT
	EXCH T,APFNG1
	JSP R,PDLA2(T)
	SKIPE APFNG1		;ALIST RETURNING NON-ZERO IN T =>
	 PUSH P,CAUNBIND	; TWO BIND BLOCKS WERE PUSHED
	PUSH P,CAUNBIND
	JRST AP3
;SUBRCALL RETTYP %LSUBRCALL PTRCHK

SUBRCALL:
	JSP TT,FWNACK		;LSUBR (2 . 7)
	FA234567,,QSUBRCALL
	JSP TT,JLIST
	ADDI T,1
	JSP R,PDLARG
	POP P,TT
	JSP D,PTRCHK
	PUSHJ P,(TT)
RETTYP:	POP P,D			;PURELY FOR TYPE CHECKING
	CAIN D,QFIXNUM
	JSP T,FXNV1
	CAIN D,QFLONUM
	JSP T,FLNV1
	POPJ P,


%LSUBRCALL:
	JSP TT,FWNACK		;FSUBR
	FA2N,,Q%LSUBRCALL
	JSP TT,JLIST
	MOVEI D,(P)
	ADDI D,(T)
	MOVEI TT,RETTYP
	EXCH TT,1(D)
	JSP D,PTRCHK
	AOJA T,(TT)

PTRCHK:	CAIL TT,BEGFUN
	 CAIL TT,ENDFUN
	  JRST .+2
	   JRST (D)
	CAML TT,BPSL
	 CAML TT,@VBPORG
IFN HISEGMENT,[
	  JRST .+2
	   JRST (D)
	CAIL TT,ENDHI
	 CAML TT,HBPORG
	] 	;END OF IFN D10
	  JRST PTRCKE
	   JRST (D)

;%ARRAYCALL %ARR7 FUNCALL FUNCA1


%ARRAYCALL:
	JSP TT,FWNACK		;FSUBR
	FA76543,,Q%ARRAYCALL
	JSP TT,JLIST
	MOVEI D,(T)
	ADDI D,(P)		;FALLS INTO FUNCALL
%ARR7:	HRRZ A,1(D)
	SKOTT A,SA
	SOJA T,%ARR0
	MOVEI B,CPOPJ
	EXCH B,(D)
	HLRZ TT,@1(D)		.SEE ASAR
	MOVEI F,AS<SX>
	CAIN B,QFIXNUM
	MOVEI F,AS<FX>
	CAIN B,QFLONUM
	MOVEI F,AS<FL>
	TRNN TT,(F)
	JRST %ARR0A
FUNCALL:	MOVEI D,QFUNCALL	;LSUBR (1 . 777)
	JUMPE T,WNALOSE		;(FUNCALL F X1 X2 ... XN) IS LIKE
FUNCA1:	SKIPN V.RSET		; (APPLY F (LIST X1 X2 ... XN))
	AOJA T,IAPPLY		;IN *RSET MODE, WE FAKE
	ADDI T,1		; OUT THE UUO STUFF
	MOVEI TT,(P)		; INTO DOING THE APPLY
	ADDI TT,(T)		; FRAME HACKERY FOR US
	MOVEI B,CPOPJ
	EXCH B,(TT)
	JCALLF 16,(B)


;%LXFC liap0 liap0a liap0b liap1 liavec liavc0 liavc9

; "VCTRS" is either (), or else a list of the subr address for, in order,
;   (VECTORP  VECTOR-LENGTH  VREF)

;LEXPR-FUNCALL
	%WNA MES20
%LXFC:	aojge t,.-1		   ;Count the function arg
	skipn vctrs
	  jrst liap0
	move a,(p)		   ;get &rest arg to spread
	push fxp,t		   ;Save T from the ferocious compiled fn
	hlrz t,@vctrs
	pushj p,(t)		   ;calls the VECTORP function
	jumpn a,liavec		   ;Bleh, kludgy vectors, do it slow
	pop fxp,t		   ;recover T
liap0:	pop p,a			   ;Get &rest arg to spread, again
	aoja t,liap0b		   ;account for 1 arg being "popped off"

liap0a:	wta [LAST ARG NOT A LIST OR VECTOR - LEXPR-FUNCALL!]
liap0b:	movei tt,(a)
	lsh tt,-seglog
	hrrz tt,st(tt)
	caie tt,QLIST
	 jumpn a,liap0a
liap1:	jumpe a,iapply		   ;on null, exit
	hlrz b,(a)		   ;get CAR
	push p,b		   ;push it on the stack as next arg
	hrrz a,(a)		   ;Next!
	soja t,liap1		   ;and loop, counting

liavec:	hrrz t,@vctrs
	hlrz tt,(t)		   ;address of VECTOR-LENGTH function
	hrrz t,(t)
	hlrz t,(t)
	push fxp,t		   ;address of VREF function
	push fxp,[-1]		   ;"index" to cycle over the vector
	move a,(p)		   ;Get vector
	pushj p,(tt)		   ;calls the VECTOR-LENGTH function
	push fxp,(a)		   ;Save it on FXP
	movn tt,(a)		   ;Get - the length
	addm tt,-3(fxp)		   ;update the argument count
liavc0:	aos tt,-1(fxp)		   ;increment our count
	caml tt,(fxp)		   ;Have we reached the end?
	  jrst liavc9		   ;  Yep, let's get out of here
	move a,(p)		   ;Get vector
	movei b,-1(fxp)		   ;Get index 
	hrrz t,@vctrs
	hrrz t,(t)
	hlrz t,(t)
	pushj p,(t)		   ;calls the VREF function
	exch a,(p)		   ;put it on the stack
	push p,a		   ;Save our vector again
	jrst liavc0		   ;loop the loop

liavc9:	popi p,1		   ;Throw away the vector, we're all through
	popi fxp,3		   ;toss off "length", "index" and "vref-addr"
	pop fxp,t		   ;At last, our argument count
	aoja t,iapply		   ;Don't count function as arg, go apply it

;IAPPLY ILP1 IALIS ILP1B

;;;  VERY INTERNAL APPLY, FOR USE PARTICULARLY WITH "CALL" UUO'S
;;;
;;;	STATE OF WORLD AT ENTRANCE TO IAPPLY:
;;;		T HAS -<NUMBER OF ARGS ON PDL>.
;;;		PDL HAS ARGS ON IT; BELOW THEM IS A SLOT
;;;		  WITH THE FUNCTION IN THE RIGHT HALF.
;;;		  THE FUNCTION'S NAME IS MAYBE IN THE LEFT HALF.
;;;	C IS USED PRIMARILY TO POINT TO THIS LATTER SLOT; AND, AS
;;;	  USUAL, THE LEFT HALF HELPS TO LIMIT FUNCTION RE-EVALS.
;;;	IF THERE IS ONLY ONE ARG ON THE STACK, 400000 IN THE LEFT
;;;	  HALF OF THE PDL SLOT MEANS FUNCTION IS A FEXPR, AND MAY
;;;	  THEREFORE TAKE AN EXTRA (A-LIST) ARGUMENT.

IAPPLY:	MOVE C,T		;STATE OF WORLD AT ENTRANCE:
	ADDI C,(P)		; T HAS -<NUMBER OF ARGS ON PDL>
ILP1:	MOVE A,(C)		; NEXT PDL SLOT HAS FUNCTION IN RH, 
	TLZN A,-1
	 HRLM A,(C)		; Save FN in left half in case it's not there
	SKOTT A,LS
2DIF JRST (TT),APTB1-1,QLIST	;FN IS NOT LIST STRUCTURE
IFN HNKLOG,[
	TLNE TT,HNK
	  JRST IAHNK
IALIS:
] ; END IFN HNKLOG,

	HRRZ B,(A)
	HLRZ A,(A)
	CAIN A,QLAMBDA
	 JRST IAPLMB		;IT'S A LAMBDA
	CAIN A,QFUNARG
	 JRST APFNG		;IT'S A FUNARG (MORE GOOD GRIEF!)
	CAIN A,QLABEL
	 JRST APLBL		;IT'S A LABEL (SUPER GOOD GRIEF!)
	PUSH P,C
	PUSH FXP,T
	HRRZ A,(C)
	JUMPL C,IAP2A		;JUMP IF WE'VE RE-EVAL'ED TOO MUCH
	PUSHJ P,EV0		;ELSE EVAL THE FUNCTIONAL FORM
	POP P,C			; AND TRY IT AGAIN...
	POP FXP,T
ILP1B:	MOVE B,(C)
	HRRM A,(C)
	TLO C,400000
	JRST ILP1
;APTB1 IAPATM IAPAT2 IAPAT3 IATT IAPIAL IAPIA1 IIAL IAPSAR IAPARR IAPSBR IAPSB1 IAPAR1 IAHNK IAPXPR IAPLSB IAP2

APTB1:	JRST IAP2A		;FIXNUMS ARE NOT FUNCTIONS!
	JRST IAP2A		;NOR FLONUMS
DB$	JRST IAP2A		;NOR DOUBLES
CX$	JRST IAP2A		;NOR COMPLEXES
DX$	JRST IAP2A		;NOR DUPLEXES
BG$	JRST IAP2A		;NOR BIGNUMS ALREADY
	JRST IAPATM		;SYMBOLS ARE OKAY, BUT JUST BARELY
HN$  REPEAT HNKLOG+1,	.VALUE	;HUNKS
	JRST IAP2A		;TRUE RANDOMS ARE OUT!
	JRST IAPSAR		;IT'S AN ARRAY - OKAY, I GUESS

IAPATM:	HRRZ B,(A)		;APPLY GOT ATOMIC FUNCTION
	HRRZS 1(C)		;KILL POSSIBLE 400000 BIT DUE TO FEXPR
	TDZA R,R
IAPAT2:	 HRRZ B,(B)
IAPAT3:	JUMPE B,IAPIA1		;GRAB FUNCTION FROM PROP LIST
	HLRZ TT,(B)
	HRRZ B,(B)
	CAIL TT,QARRAY		;REMEMBER, FUNCTION PROPS ARE
	 CAILE TT,QAUTOLOAD	; LINEAR IN MEMORY
	  JRST IAPAT2
   2DIF JRST @(TT),IATT,QARRAY

IATT:	IAPARR		;ARRAY
	IAPSBR		;SUBR
	IAPSBR		;FSUBR
	IAPLSB		;LSUBR
	IAPXPR		;EXPR
	IAPXPR		;FEXPR
	IAPAT2 		;JUST IGNORE MACROS
	IAPIAL		;AUTOLOAD

IAPIAL:	HRRI R,(B)
	JRST IAPAT2

IAPIA1:	JUMPL R,IAP2J
	JUMPE R,IAP2
	MOVEI B,(R)
	PUSH FXP,T
	MOVEI T,(A)
	PUSHJ P,IIAL
	POP FXP,T
	HRRZ B,(A)
	SETO R,
	JRST IAPAT3

IIAL:	PUSH P,A
	HLRZ A,(B)
	PUSHJ P,AUTOLOAD
	JRST POPAJ

IAPSAR:	SKIPA TT,A	;APPLY A SAR
IAPARR:	HLRZ TT,(B)		;APPLY AN ARRAY
	MOVEM TT,LISAR		;FOR INTERRUPT PROTECTION ONLY
	MOVEI R,(T)
	MOVEI TT,IAPAR1
	JRST IAPSB1

IAPSBR:	HLRZ TT,(B)		;APPLY A SUBR
	HRRZ R,(C)
IAPSB1:	HRRM TT,(C)
	JRST ESB1

IAPAR1:	MOVE TT,LISAR
	JRST @ASAR(TT)


IFN HNKLOG,[
IAHNK:	SKIPN ICALLI		   ;Do we have a CALL interpreter?
	  JRST IALIS
	PUSH P,T
	PUSHJ P,USRHNP		   ;Is this a user hunk?
	EXCH T,TT
	POP P,T
	JUMPE TT,IALIS		   ;Nope, just pretend it's a list
	XCT ICALLI		   ;Otherwise run user's hook
]; -- End IFN HNKLOG,

IAPXPR:	HLRZ A,(B)
	JRST ILP1B

IAPLSB:	MOVEI TT,CPOPJ
	HRRM TT,(C)
	MOVE R,B
	JRST ELSB1

IAP2:	SKIPE EVPUNT		;DON'T EVALUATE FUNCTIONAL VARIABLE?
	 JRST IAP2A
	JUMPL C,IAP2A
	HRRZ A,(C)		;APPLY FUNCTIONAL FROM VALUE CELL
	HLRZ A,(A)
	HRRZ A,@(A)
	CAIE A,QUNBOUND		;FOOBAR! IT'S UNBOUND
	JRST ILP1B
	JRST IAP2A
;IAPLMB IPLMB1 IAP5 IAP5C IAP5B IPLMB2 IPLMB4 IPLM4A IPLM4B IPLMB5 LMBLP LMBLP1 LMBLP2 IPROGN IAP3 CUNBIN IAP4

IAPLMB:	HLRZ TT,(B)	;APPLY A LAMBDA EXPRESSION
	MOVEI D,(TT)
	LSH D,-SEGLOG
	MOVE D,ST(D)
	TLNE D,SY
	 JUMPN TT,IAP3
	SETZ D,		;IMPORTANT THAT D BE NON-NEG - SEE IAP4
	MOVEI C,(TT)
	HRRZ B,(B)
	MOVE R,T
IPLMB1:	JUMPE T,IPLMB2	;NO MORE ARGS
	JUMPE TT,QF2A	;TOO MANY ARGS SUPPLIED
IAP5:	HLRZ A,(TT)
	SKIPE V.RSET
	 JUMPN A,IAP5C
IAP5C:	MOVEI AR1,1(T)
	ADD AR1,P
	HLLZ D,(AR1)	;SEE COMMENT AT EFX - ALLOWS
	HRLM A,(AR1)	; A FEXPR TO TAKE AN A-LIST ARG
	HRRZ TT,(TT)
	AOJA T,IPLMB1

IAP5B:	MOVEI D,(A)
	LSH D,-SEGLOG
	MOVE D,ST(D)
	TLNN D,SY
	 JRST LMBERR
	JRST IAP5C

IPLMB2:	JUMPN TT,IAP4	;TOO FEW ARGS SUPPLIED
	JUMPN R,IPLMB4	;NO LAMBDA LIST IN FUN
	POP P,TT
	HRRI TT,CPOPJ	;LAMBDA LIST IS NULL
	SKIPE V.RSET
	 PUSH P,TT
	HRRZ A,(B)
	JUMPN A,LMBLP
	HLRZ A,(B)
	JRST EVAL

IPLMB4:	MOVEM SP,SPSV
	SKIPA
IPLM4A:	 PUSHJ P,BIND		;BIND VALUES TO LAMBDA VARS
IPLM4B:	POP P,AR1		;FUN HAS A NON-NL LAMBDA LIST
	HLRZ A,AR1
	SKIPE A			;IF NIL AS VARIABLE, DON'T BIND THIS ARG
	 AOJLE R,IPLM4A		;TO BIND A NON-NIL VARIABLE
	AOJLE R,IPLM4B		;THIS WINS EVEN IF PREVIOUS INS DOESN'T JUMP
	SKIPN V.RSET
	 JRST IPLMB5
	HRRI AR1,CPOPJ 
	TLNE AR1,-1
	 PUSH P,AR1
IPLMB5:	JSP T,SPECX
	HRRZ AR1,(B)
	PUSH P,CUNBIND
	HLRZ A,(B)
	JUMPE AR1,EVAL		;A GENERALIZED LAMBDA:  NON-NULL LAMBDA LIST
LMBLP:	PUSH P,B		;FOR GENERAL LAMBDAS, EVALS SEQUENCE OF EXP'S
	HLRZ A,(B)
	PUSHJ P,EVAL
LMBLP1:	POP P,B
	HRRZ B,(B)
LMBLP2:	JUMPN B,LMBLP
	POPJ P,

IPROGN:	MOVEI A,NIL		;INTERNAL PROGN
	JRST LMBLP2


IAP3:	MOVEI A,(TT)	;APPLY LEXPR
	MOVN TT,T
	CAIL TT,XHINUM
	JRST LXPRLZ
	MOVEI AR1,CPOPJ
	HRRM AR1,(C)
	MOVEI AR1,IN0(TT)
	MOVEM SP,SPSV
	PUSHJ P,BIND
	MOVEI C,(C)
	EXCH C,ARGLOC
	HRLI C,ARGLOC
	PUSH SP,C		;BIND ARGLOC TO LOC OF ARGS ON PDL
	EXCH AR1,ARGNUM
	HRLI AR1,ARGNUM
	PUSH SP,AR1		;BIND ARGNUM TO NUMBER OF ARGS
	JSP T,SPECX
	HRRZ B,(B)
	PUSHJ P,LMBLP
	SKIPN T,@ARGNUM
	JRST UNBIND
	HRLS T
	SUB P,T
	JRST UNBIND
CUNBIN:	JRST UNBIND


IAP4:	JUMPGE D,QF3A	
	AOJN R,QF3A
	JRST IAP4A	;FEXPR OF TWO ARGS

;FUNCTION QUOTE DECLARE $COMMENT SETQ SET1 SET0 $AND $OR ANDOR

SUBTTL	FUNCTION, QUOTE, DECLARE, COMMENT, SETQ, AND, OR

FUNCTION:	SKIPA D,CQFUNCTION	;FEXPR 1
QUOTE:	MOVEI D,QQUOTE			;FEXPR 1
	JUMPE A,WNAFOSE
	HRRZ TT,(A)
	JUMPE TT,$CAR
	JRST WNAFOSE

DECLARE:	MOVEI A,QDECLARE	;FSUBR (IGNORES ARG)
	POPJ P,

$COMMENT:	MOVEI A,Q$COMMENT	;FSUBR (IGNORES ARG)
	POPJ P,


SETQ:	PUSH P,A
SET1:	PUSHJ FXP,SET0	;DO ONE STEP OF A "MULTIPLE" SETQ.
	SKIPE (P)
	 JRST SET1
	JRST POP1J

SET0:	HLRZ A,@(P)	;ASSUMES ARGLIST PTR STORED IN 0(P)
	JSP D,SETCK	;ENTERED BY PUSHJ FXP,SET0
	HRRZ B,@(P)
	JUMPE B,SETWNA
	PUSH P,A	;ATOM TO BE SETQ'D
	HLRZ A,(B)
	HRRZ B,(B)
	MOVEM B,-1(P)	;CDR THE ARGLIST
	PUSHJ P,EVAL
	POP P,AR1
	JSP T,.SET
	POPJ FXP,


$AND:	HRLI A,TRUTH
$OR:	HLRZ C,A
	PUSH P,C
ANDOR:	HRRZ C,A
	JUMPE C,POPAJ
	MOVSI C,(SKIPE (P))
	TLNE A,-1
	MOVSI C,(SKIPN (P))
	XCT C
	JRST POPAJ
	MOVEM A,(P)
	HLRZ A,(A)
	PUSHJ P,EVAL
	EXCH A,(P)
	HRR A,(A)
	JRST ANDOR
;PROG PRG1 PRG1Z PG0 LPRP PG1 PG1A PG0A VBIND PBIND PBIND1 PBIND2 PROGV RETURN PRXIT ERRP4 RHAPJ CQFUNCTION

SUBTTL	PROG, PROGV, RETURN, GO

PROG:	HLRZ AR2A,(A)		;FSUBR
	HRRZ A,(A)
PRG1:	JUMPE AR2A,PRG1Z	;EITHER THEY ARE NIL OR
	SKOTT AR2A,LS		; MUST HAVE A LIST FOR PROG VARS
	 JRST PRGER1
PRG1Z:	PUSH P,A
	SETZ C,
	JSP T,PBIND		;BIND PROG VARIABLES TO NIL
	POP P,A
	PUSHJ P,PG0		;EVALUATE PROG BODY
	 MOVEI A,NIL
	JRST UNBIND		;UNBIND VARIABLES

PG0:	PUSH P,PA3
	PUSH P,PA4
	PUSH P,SP
	PUSH P,FXP
	PUSH P,FLP
LPRP==.-PG0+1	;LENGTH OF PROG PDL, IE HOW MUCH PROG HAS
	MOVEM P,PA4	;CAUSED TO BE PUSHED
	HRLS A
	MOVEM A,PA3
PG1:	HLRZ T,PA3
PG1A:	JUMPE T,PRXIT	;NORMAL EXIT 
	HLRZ A,(T)
	HRRZ T,(T)
	HRLM T,PA3
	SKOTT A,LS
	JRST PG1
	PUSHJ P,EVAL
PG0A:	JRST PG1

;;; JSP T,VBIND		;LIST OF SYMBOLS IN AR2A, VALUES IN A
;;; BINDS EACH SPECIAL VARIABLE IN THE LIST TO CORRESPODNING VALUES.
;;; IF VALUES LIST TOO SHORT, "UNBOUND" GETS USED FOR PROGV, AND
;;; NIL OTHERWISE.

VBIND:	MOVEI C,(A)		;INTERPRETED AND COMPILED PROGV COME HERE
	SKIPA R,[QUNBOUND]	;USE UNBOUND AS VALUE OF EXTRA VARIABLES
PBIND:	 MOVEI R,NIL		;USE NIL AS VALUE OF EXTRA VARS
	MOVEM SP,SPSV		;BIND PROG VARIABLES
	JUMPE AR2A,SPECX
	MOVEI AR1,NIL
PBIND1:	HLRZ A,(AR2A)		;NEXT VARIABLE
	HLRZ AR1,(C)		;NEXT VALUE
	SKIPN C			;HAVE WE RUN OFF THE END OF THE LIST?
	 MOVEI AR1,(R)		;YES, USE DEFAULT VALUE
	SKOTT A,SY
	 JRST PBIND2
	CAIE A,TRUTH		;DONT BIND NON-SYMBOLS, NOR "T"
	PUSHJ P,BIND
PBIND2:	HRRZ C,(C)
	HRRZ AR2A,(AR2A)
	JUMPN AR2A,PBIND1
	JRST SPECX

PROGV:	HRRZ B,(A)		;FSUBR
	HRRZ C,(B)
	HLRZ A,(A)
	HLRZ B,(B)
	PUSH P,C
	PUSH P,B
	PUSHJ P,EVAL		;GET LIST OF VARIABLES
	EXCH A,(P)
	PUSHJ P,EVAL		;GET LIST OF VALUES
	POP P,AR2A
	JSP T,VBIND		;BIND VARIABLES
	POP P,B
	PUSHJ P,LMBLP		;EVAL REST LIKE LAMBDA BODY
	JRST UNBIND

RETURN:	JSP T,BKERST	;SUBR 1
	MOVE P,PA4
	AOS -LPRP+1(P)	;RETURN CAUSES SKIP
PRXIT:	POP P,FLP	;PROG EXIT
	POP P,FXP
	POP P,TT
	PUSHJ P,UBD0
	POP P,PA4
ERRP4:	POP P,PA3
RHAPJ:	MOVEI A,(A)
CQFUNCTION:	POPJ P,QFUNCTION
;GO GO2 GO1 PG5 PG5A GO3 GO3B GO3A

GO:	JSP TT,FWNACK
	FA1,,QGO
	HLRZ A,(A)
GO2:	JSP T,SPATOM	;LEAVES TYPE BITS IN TT
	JRST GO3
GO1:	JSP T,BKERST
	HRRZ T,PA3
PG5:	JUMPE T,EG1
	HLRZ TT,(T)
	HRRZ T,(T)
	CAIN TT,(A)
	JRST PG5A
	TLNN A,400000		;4.9 BIT => GO TAG IS NUMERIC
	JRST PG5
	MOVEI D,(TT)
	LSH D,-SEGLOG
	SKIPL D,ST(D)
	TLNN D,FX+FL
	JRST PG5
	MOVE TT,(TT)
	CAME TT,(A)
	JRST PG5
PG5A:	MOVE P,PA4
	MOVE FLP,(P)
	MOVE FXP,-1(P)
	HRRZ TT,-2(P)
	PUSHJ P,UBD
	JRST PG1A

GO3:	TLNN TT,FX+FL
	JRST GO3A
GO3B:	MOVE TT,(A)		;SET 4.9 BIT OF A IF TAG IS NUMERIC
	CAML TT,[-XLONUM]
	CAIL TT,XHINUM		; BUT NOT INUM
	TLO A,400000
	JRST GO1

GO3A:	PUSHJ P,EVAL		;IF ARG TO GO ISN'T ATOMIC, DO ONE EVAL AND TRY AGAIN
	MOVEI TT,(A)
	LSH TT,-SEGLOG
	MOVE TT,ST(TT)
	TLNE TT,FX+FL
	JRST GO3B
	TLNE TT,SY
	JRST GO1
	JRST EG1
;DO DO4A DO4 DO4C DO7 DO7A DO9

SUBTTL	DO FUNCTION

DO:	PUSH P,PA4
	SETZM PA4
	PUSH FXP,R70		;A "DO SWITCH" TO MARK EXPANDED FORMAT
	PUSH P,A
	HLRZ A,(A)
	SKOTT A,LS		;HUNKS WIN AS WELL AS LISTS
	 JUMPN A,DO4A
	HRROM A,(FXP)
	HLRZ A,@(P)		;SETUP FOR MULTIPLE INDICES
	HRRZ C,@(P)
	HLRZ B,(C)
	JRST DO4

DO4A:	MOVE A,(P)		;SINGLE INDEX DO
	HRRZ B,(A)
	HRRZ B,(B)
	HRRZ B,(B)
	MOVE C,B
DO4:	HRRZ C,(C)
	MOVEM A,(P)		;	(P)   PROG BODY
DO4C:	SKOTT B,LS
	 JUMPN B,DOERRE
	PUSH P,B		;	-1(P)    ENDTEST
	PUSH P,C		;	-2(P)	DO VARS LIST
	MOVE A,-2(P)
	MOVSI R,600000		;EVALUATE AND SETUP INITIAL VALUES
	SKIPN -1(P)
	 MOVSI R,400000		;200000 BIT SAYS STEPPERS ARE OKAY
	PUSHJ FXP,DO5
	SKIPN -1(P)
	 JRST DO4D
DO7:	HLRZ A,@-1(P)
	PUSHJ P,EVAL
	JUMPN A,DO8
DO7A:	MOVE A,(P)
	PUSHJ P,PG0		;DO PROG BODY (MAY SKIP ON RETURN STATEMENT)
	 JRST DO2
DO9:	MOVE B,-2(P)
	SUB P,R70+3		;BREAK OUT OF BODY BY RETURN STATEMENT
	POP P,PA4
	SUB FXP,R70+1
	JUMPN B,UNBIND
	POPJ P,
;DO8 DO2 DO4D DO5 DO5Q DO5Q1 DO5F DO5B

DO8:	SKIPN A,(FXP)
	 JRST DO9		;SIMPLE DO FORMAT
	HRRZ B,@-1(P)		;DO PASSED ENDTEST, AND RETURNS A VALUE
	PUSHJ P,IPROGN
	JRST DO9

DO2:	MOVE A,-2(P)
	MOVEI R,0		;DO STEPPING FUNCTIONS
	PUSHJ FXP,DO5
	JRST DO7

DO4D:	MOVE A,(P)
	PUSHJ P,PG0
	SETZ A,			;DEFAULT VALUE OF ONCE-THROUGH DO IS NIL
	JRST DO9

DO5:	JUMPE A,DO6		;DOES PARALLEL SETQS  - ON LISTS LIKE (I V1 V2)
	PUSH P,A		;WILL DO (SETQ I V1) IF R < 0
	SKIPE -1(FXP)		;WILL DO (SETQ I V2) IF R > 0
	 HLRZ A,(A)		;IF DOSW SAYS SINGLE INDEX, THEN ONLY ONE LIST
DO5Q:	MOVEI B,(A)
	JUMPGE R,DO5F
	SKOTT A,SY		;A SINGLETON SYMBOL
	 JRST DO5Q1		;NOPE. TRY FURTHUR CHECKS
	HRLZS A			;TREAT AS (<SYMBOL> NIL)
	EXCH A,(P)
	JRST DO5C

DO5Q1:	SKOTT A,LS
	 JRST DOERR
	HLRZ A,(B)
	JSP T,SPATOM
	 JRST DOERR
	TLNE R,200000
	 JRST DO5F
	HRRZ A,(B)
	JUMPE A,DO5F
	HRRZ A,(A)
	JUMPN A,DO5ER
DO5F:	HLRZ A,(B)
	HRLM A,(P)
	HRRZ A,(B)
	JUMPL R,DO5E
	JUMPE A,DO5B
	HRRZ A,(A)
	JUMPN A,DO5D
DO5B:	POP P,A
	SOJA R,DO5C
;DO5E DO5D DO5G DO5C DO6 DO6A DO6C

DO5E:	JUMPE A,DO5G		;(I) IS SAME AS (I NIL) ON INITIAL VALUE
DO5D:	HLRZ A,(A)
	PUSH FXP,R
	PUSHJ P,EVAL
	POP FXP,R
DO5G:	HLL A,(P)
	EXCH A,(P)		;NOW (P) HAS  ATOM,,VALUE
DO5C:	HRRZ A,(A)
	SKIPN -1(FXP)
	MOVEI A,0		;SO THAT SINGLE FORMAT DO WILL DROP OUT
	AOJA R,DO5

DO6:	TRNN R,-1		;[(SETQ I V1) FROM ABOVE]
	POPJ FXP,		;FIRST TIME THROUGH, WE ALLOW OLD BINDINGS
	JUMPGE R,DO6C		;TO BE REMEMBERED ON THE SPDL FOR UNBINDING
	HRRZS R
	MOVEM SP,SPSV
DO6A:	POP P,AR1
	HLRZ A,AR1
	PUSHJ P,BIND
	SOJG R,DO6A
	JSP T,SPECX
	POPJ FXP,

DO6C:	POP P,AR1	;DURING THE STEPPING PHASE, AS OPPOSED TO
	HLRZ A,AR1	;THE INITIALIZATION PHASE, WE LET NO BINDINGS
	PUSHJ P,BIND	;ACCUMULATE ON THE SPDL
	JSP T,SETXIT
	SOJG R,DO6C
	POPJ FXP,
;COND1 COND CON3 COND2 CON2 BKERST BKRST3 BKRST4 BKRST0 BKRST2 BKRST1

SUBTTL	COND, ERRSET, ERR, CATCH, THROW, CASE, IF, *CATCH, *THROW,
;	UNWIND-PROTECT, CATCHALL, CATCH-BARRIER
COND1:	HRRZ A,(B)
COND:	JUMPE A,CPOPJ	;ENTRY
	PUSH P,A
	HLRZ A,(A)
	HLRZ A,(A)
	CAIE A,TRUTH
	PUSHJ P,EVAL
CON3:	POP P,B
	JUMPE A,COND1	;IF FIRST OF COND PAIR IS TRUE
	HLRZ B,(B)
	SKIPA
COND2:	POP P,B
	HRRZ B,(B)
	JUMPE B,CPOPJ	;LOOP FOR GENERALIZED COND PAIR
	PUSH P,B
	HLRZ A,(B)
	PUSHJ P,EVAL
CON2:	JRST COND2


BKERST:	SKIPN TT,PA4
	 JRST BKRST1
	TLZ TT,-1
	SKIPE B,CATRTN
	 JRST BKRST2
BKRST3:	SKIPE B,ERRTN
	 CAILE TT,(B)
	  JRST (T)		;NO TROUBLESOME CATCHS OR ERRSETS
BKRST4:	MOVEI TT,BKERST
BKRST0:	MOVEM TT,-LERSTP(B)	;BREAK UP A TROUBLESOME CATCH OR ERRSET, E.G.
	HRRZI TT,(B)		;WE WAN'T TO GET RID OF THIS FRAME, HANDLE ALL UNWIND-PROTECTS
				; INCLUDING THE FRAME WE WANT TO FLUSH
	PUSHJ FXP,UNWPRO
	CAILE TT,(P)		;IF P LESS THAN FRAME OF INTEREST, THEN IT WAS AN
				; UNWIND-PROTECT FRAME AND UNWPRO THREW IT AWAY.  JUST
				; RETURN TO OUR CALLER.
	 JRST (T)
				;ELSE THROW THE FRAME AWAY BY HAND
	MOVE P,B		;(PROG (A)  (ERRSET (RETURN (FOO A))))
	JRST ERR1		;AND THEN TRY BKERST AGAIN

BKRST2:	CAILE TT,(B)
	 JRST BKRST3		;CATCH ISN'T TROUBLESOME, SO TEST FOR ERRSETS
	JRST BKRST4		;AH, CATCH IS TROUBLESOME!

BKRST1:	MOVEI A,LGOR
	%FAC EMS22
;ERRSET ERRST3 ERRNX ERR ERR3A ERR3 CATCH .CATCH .CATC1 CATCHB CATCB2 CATCB1 CATCHALL UNWINP UNWERR PTNTRY UNWINC PTEXIT UNWINE THROW .THROW CATHRO WIOSPC WIOSP0 WIOSP1 WIOBND WIOBN0 WIOBN1 WIOUNB WIOUN0 WIOUN1

ERRSET:	JSP TT,FWNACK
	FA12,,QERRSET
	MOVEI C,TRUTH
	HRRZ B,(A)
	JUMPE B,ERRST3
	PUSH P,A
	HLRZ A,(B)
	PUSHJ P,EVAL
	MOVEI C,(A)
	POP P,A
ERRST3:	JSP T,ERSTP
	MOVEM P,ERRTN
	MOVEM C,ERRSW
	HLRZ A,(A)
	PUSHJ P,EVAL
ERRNX:	PUSHJ P,NCONS	;NORMAL EXIT
	JRST ERUN0

ERR:	JSP TT,FWNACK
	FA012,,QERR
	JUMPE A,ERR2
	HRRZ B,(A)
	JUMPE B,.+3
	HLRZ B,(B)
	JUMPE B,ERR3A
	HLRZ A,(A)	;EVAL BEFORE UNBLOCKING
	PUSHJ P,EVAL
	JRST ERR2

ERR3A:	SKIPN ERRTN
	 JRST LSPRET
	MOVEI T,ERR3
	EXCH T,-LERSTP(P)
	JRST ERR0	;UNBLOCK THE ERRSET, THEN
ERR3:	SKIPE A		;EVAL THE ARG TO ERR
	 HLRZ A,(A)
	PUSH P,T
	JRST EVAL


CATCH:	JSP TT,FWNACK
	FA12,,QCATCH
	PUSHJ P,CATHRO
	JSP TT,CATPS1
	HLRZ A,(B)
	PUSHJ P,EVAL
	MOVEI B,NIL	;CAUSE MOST RECENT CATCH TO BE THROWN
	JRST THROW1

;(*CATCH <tag-or-list-of-tags> e1 . . . en)
; TAG OR TAG-LIST IS EVALUATED.  THEN E1 THROUGH EN ARE EVALED.  IF A THROW
; OR *THROW IS DONE THEN IS LIKE A REGULAR CATCH.
.CATCH:	PUSH P,A		;SAVE POINTER TO ARGS
	HLRZ A,(A)		;EVAL TAG/TAG-LIST
	PUSHJ P,EVAL
	HRLI A,CATSPC\CATLIS	;FLAG IT AS TAG-LIST
	SKOTT A,LS		;IS IT A LIST?
	 HRRZS A		; NO IT ISN'T LIST
.CATC1:	POP P,B			;RESTORE POINTER TO ARGS
	JSP TT,CATPS1
	HRRZ B,(B)		;CDR THE LIST OF ARGS
	PUSHJ P,IPROGN		;IMPLICIT PROGN AROUND THEM
	JRST THRALL		;THEN BREAK-UP CURRENT CATCH FRAME


; (CATCH-BARRIER <list-of-tags> E1 . . . En)
; LIST-OF-TAGS IS EVALUATED.  THEN E1 THROUGH EN ARE EVALED.  IF A THROW
; OR *THROW IS DONE THEN IF TAG IS IN LIST-OF-TAGS, THE CATCH-BARRIER RETURNS,
; ELSE AN UNSEEN-CATCH-TAG ERROR IS GENERATED
CATCHB:	PUSH P,A		;SAVE POINTER TO ARGS
	HLRZ A,(A)		;EVAL TAG/TAG-LIST
	PUSHJ P,EVAL
CATCB2:	SKOTT A,LS		;IS IT A LIST?
	 JRST CATCB1		;NOPE, ERROR
	HRLI A,CATSPC\CATLIS\CATCAB ;YES, FLAG CATCH FRAME CORRECTLY
	JRST .CATC1		;REST IS JUST LIKE *CATCH

CATCB1:	WTA [MUST BE A LIST OF TAGS - CATCH-BARRIER!]
	JRST CATCB2


;(CATCHALL function e1 . . . en)
; FUNCTION IS A FUNCTION OF TWO ARGS.  E1 THROUGH EN ARE EVALED, AND IF NO
; THROW IS DONE THE VALUE OF EN IS RETURNED.  IF ANY THROW IS DONE, FUNCTION
; IS INVOKED WITH THE FIRST ARG BEING THE THROW TAG AND THE SECOND BEING THE
; THROWN VALUE.  THE VALUE OF THE FUNCTION IS THEN RETURNED AS THE VALUE
; OF THE CATCHALL.
CATCHALL:
	PUSH P,A		;SAVE POINTER TO ARGS
	HLRZ A,(A)		;EVAL FUNCTION
	PUSHJ P,EVAL
	HRLI A,CATSPC\CATALL	;FLAG AS A CATCHALL
	JRST .CATC1		;REST IS LIKE *CATCH

;(UNWIND-PROTECT e u1 u2 . . . un)
; EXECUTES U1 THRU Un WHEN THE "CONTOUR" OF THE UNWIND-PROTECT IS EXITED.
; IF e TERMINATES NORMALLY, THEN U1 THRU UN ARE EVALUATED AND THE VALUE
; RETURNED BY e IS RETURNED.  IF A NON-LOCAL EXIT OCCURS THRU AN UNWIND-PRO
; FRAME, THEN U1 THRU UN ARE EVALED AND THE EXIT CONTINUES.
UNWINP:	HRRZ B,(A)		;GET CDR OF ARG LIST
	HRLI B,CATUWP\CATSPC	;AN UNWIND-PROTECT FRAME
	MOVEM B,CATID
	PUSH FXP,P		;SAVE CURRENT STATE OF STACK
	JSP T,ERSTP
	MOVEM P,CATRTN
	HLRZ A,(A)		;CAR OF ARG LIST
	PUSHJ P,EVAL		;EVALUATE IT
	HRRZ TT,(FXP)		;NOW MUST RUN THE UNWIND PROTECT FUNCTIONS
	PUSHJ FXP,UNWPRO	;UNDO THE UNWIND-PROTECT FRAME
	POPI FXP,1		;REMOVE THE SAVED PDL POINTER FROM FXP
	POPJ P,			;THEN RETURN THE VALUE OF e

;ERROR TRAP FOR UNWIND-PROTECT, SHOULD NEVER GET HERE!
UNWERR:	LERR [SIXBIT \UNWIND-PROTECT LEFT DUMMY RETURN ADR ON STACK!\]

;COMPILED UNWIND-PROTECT, ENTER WITH JSP TT, CONTINUATION IS AT PC C(TT)+1
PTNTRY::
UNWINC:	PUSH P,[UNWERR]		;IF GETS HERE, HMM...
	AOS TT			;POINT TO START OF CONTINUATION
	HRLI TT,CATUWP\CATCOM\CATSPC ;AN UNWIND-PROTECT FRAME
	MOVEM TT,CATID
	JSP T,ERSTP
	MOVEM P,CATRTN
	JRST -1(TT)		;RETURN TO COMPILED CODE

;COME HERE TO CLOSE UP AN UNWIND PROTECT.  CALLED WITH JSP T,
PTEXIT::
UNWINE:	MOVEM TT,-LEP1-4(P)	;SAVE RETURN ADR (AN EXTRA SLOT IS ON P)
	MOVEI TT,-LEP1(P)	;ADR TO UNWIND TO
	PUSHJ FXP,UNWPRO	;UNDO THE UNWIND-PROTECT FRAME
	POPJ P,			;THEN RETURN THE VALUE OF e

;OLD STYLE MACLISP THROW, UNEVALUATED TAG
THROW:	JSP TT,FWNACK
	FA12,,QTHROW
	PUSHJ P,CATHRO
	PUSH P,A
	HLRZ A,(B)
	PUSHJ P,EVAL
	POP P,B
	JRST THROW1

;(*THROW TAG VAL) SUBR
.THROW:	EXCH A,B		;THROW1 WANTS TAG IN B, VAL IN A
	JRST THROW1		;THEN DO A THROW

CATHRO:	MOVE B,A
	HRRZ A,(A)
	JUMPE A,CPOPJ
	HLRZ A,(A)
	POPJ P,

;;; WITHOUT-INTERRUPTS:  ROUTINES WHEN PWIOINT GETS BOUND AND UNBOUND

;;; CALLED from SPECBIND, new value in
;;; R has new value, T has address of word with address in right half.

WIOSPC:	PUSH P,TT
	HRRZ TT,(T)		   ;Get address we were trying to clobber
	CAIN TT,PWIOINT		   ;Our special hack location?
	  JRST WIOSP0		   ;  yes, hack it
	POP P,TT
	EXCH R,@(T)		   ;Otherwise redo instruction to get real int
	JRST SPEC4A		   ;And continue with the SPECBIND if continued


WIOSP0:	MOVEI TT,(R)		   ;New value to TT
	SKIPE REALLY		   ;If UNWPR1 has it living on the stack
	 SKIPA R,@REALLY	   ; Get old value for SPEC4A from there
	  MOVE R,UNREAL		   ;  Else normal.
	JUMPE TT,WIOSP1		   ;NIL, use as is
	CAIE TT,QTTY		   ;TTY, that's meaningful
	 MOVNI TT,1		   ;Else use -1
WIOSP1:	PUSHJ P,WIOBN0		   ;Store into UNREAL, maybe run CHECKU
	POP P,TT
	JRST SPEC4A

;;;CALLED FROM BIND, NEW VALUE IN AR1
WIOBND:	HRRZ TT,UNREAL		   ;CURRENT VALUE
	HRRM TT,(SP)		   ;REMEMBER INSTEAD OF MEANINGLESS VALUE
	MOVEI TT,(AR1)
	JUMPE TT,WIOBN0		   ;NIL, USE AS IS
	CAIE TT,QTTY		   ;TTY, THAT'S MEANINGFUL
	 MOVNI TT,1		   ;ELSE USE -1
WIOBN0:	JUMPL TT,WIOBN1
	PUSH P,A
	PUSH FXP,D
	PUSH FXP,F
	MOVE A,TT
	PUSHJ P,ABIND3
	PUSHJ P,CHECKU
	POP SP,SPSV		   ;SO RE-OPEN THE BIND-BLOCK
	POP FXP,F
	POP FXP,D
	POP P,A
	POPJ P,			   ;RETURN FROM BIND

WIOBN1:	MOVEM TT,UNREAL
	POPJ P,

;;; CALLED FROM AFTER UNBIND -- (FXP) HAS OLD VALUE IN LH.  CAN ONLY DESTROY T.
WIOUNB:	EXCH D,(FXP)		   ;GET OLD VALUE, SAVE D
	PUSH FXP,F		   ;SAVE F ALSO -- CHECKU MAY CLOBBER
	PUSH P,A		   ;A WILL GET NEW (OLD) VALUE OF UNREAL
	HLRZ A,D		   ;FIGURE OUT REAL OLD VALUE
	CAIN A,-1		   ;IF HALFWORD -1, THEN TURN INTO FULLWORD
	 MOVNI A,1
	SKIPE REALLY
	  JRST WIOUN1
	PUSHJ P,CHECKU		   ;RUN INTERRUPTS AS APPROPRIATE
WIOUN0:	POP P,A			   ;RESTORE AC'S AND RETURN
	POP FXP,F
	POP FXP,D
	POPJ P,

WIOUN1:	MOVEM A,@REALLY		   ;Store it in the saved slot
	JRST WIOUN0
;CASEQ CASEE CASEF CASES CASE1 CASE1E CASE1H CASE1D CASE1B CASE1A CASE1Z CASE1G CASE1Q CASEBQ CASEBZ CASEM CASECK CASEEQ CASEAQ CASE1C IF IF1A

CASEQ:;	TDZA R,R		;FLAG IN R WHETHER CASE/Q
;CASE:	SETOI R,
	JUMPE A,CPOPJ		;ENTRY, RETURN NIL IF NO ARGS
	PUSH P,A		;SAVE POINTER TO ARG LIST
	HLRZ A,(A)		;GET EXPRESSION TO MATCH AGAINST
CASEE:;	PUSH FXP,R
	CAIE A,TRUTH		;FOR SPEED, CHECK FOR SPECIAL KIND
	 PUSHJ P,EVAL
;	POP FXP,R
	JUMPE A,CASES		;NIL IS A SYMBOL
	MOVE T,A
	LSH T,-SEGLOG
	MOVE T,ST(T)
	TLNE T,FX		;FIXNUM EXPRESSION?
	 JRST CASEF
	TLNE T,SY		;SYMBOL AS EXPRESSION?
	 JRST CASES
	WTA [MATCHING EXPRESSION NOT FIXNUM OR SYMBOL!]
	JRST CASEE		;WIN IF USER TRIES AGAIN

CASEF:	MOVSI T,FX		;TEST AGAINST FIXNUMS ONLY
	JRST CASE1

CASES:	MOVSI T,SY		;TEST AGAINST SYMBOLS ONLY
CASE1:	POP P,B			;POINTER TO CASE'S ARGUMENTS
	PUSH P,A		;EQ TEST AGAINST SYMBOL RETURNED
	HRRZ A,(B)		;THE LIST OF MATCHING SETS AND EXPRS
CASE1E:	PUSH P,A
	HLRZ A,(A)		;THE POINTER TO THE NEXT SET/EXPRS PAIR
	HLRZ A,(A)		;THE LIST OF MATCHES OR THE SINGLE MATCH
CASE1H:	CAIN A,TRUTH		;IF T THEN AN 'OTHERWISE' CLAUSE
	 JRST CASEM
	MOVEI TT,(A)
	LSH TT,-SEGLOG
	MOVE TT,ST(TT)
	TLNN TT,LS		;IS THE MATCHING SET A LIST?
	 JRST CASE1Q		;NO, HANDLE SPECIALLY
CASE1D:	PUSH P,A
	HLRZ A,(A)		;GET NEXT ELEMENT
CASE1B:;JUMPE R,CASE1A		;DON'T EVALUATE EXPR IF CASEQ
;	CAIN A,TRUTH
;	 JRST CASE1A
;	PUSH P,T		;SAVE FLAGS OVER EVAL
;	PUSHJ P,EVAL
;	POP P,T
;	SETO R,			;MAKE SURE FLAG IS STILL CORRECT
CASE1A:	TLNE T,SY		;IF TESTING FOR SYMBOLS
	 JUMPE A,CASE1Z		;THEN NIL IS A VALID ONE
	MOVEI TT,(A)
	LSH TT,-SEGLOG
	TDNN T,ST(TT)		;MATCHING TYPE?
	 JRST CASE1C
CASE1Z:	POP P,B
	JSP TT,CASECK		;NON SKIP IF MATCH
	 JRST CASEM		;MATCH FOUND, PROCESS EXPRESSIONS
	HRRZ A,(B)		;GET THE CDR
	JUMPN A,CASE1D		;IF MORE MATCHING IN THIS LIST THEN PROCEED
CASE1G:	POP P,A			;RESTORE THE LIST OF PAIRS POINTER
	HRRZ A,(A)		;THE CDR POINTS TO NEXT CONS
	JUMPN A,CASE1E		;IF NOT END OF LIST THEN PROCEED
	POPI P,1		;GET RID OF MATCHING POINTER
	POPJ P,

CASE1Q:;JUMPE R,CASEBQ		;IF CASEQ LEAVE UNEVALUATED
;	PUSH P,T		;SAVE FLAG
;	CAIE A,TRUTH
;	 PUSHJ P,EVAL
;	POP P,T
;	SETO R,			;FLAG MUST BE SET IF DID EVAL
CASEBQ:	TLNE T,SY		;IF TESTING FOR SYMBOLS
	 JUMPE A,CASEBZ		;THEN NIL IS A VALID ONE
	MOVEI TT,(A)		;TYPE CHECK UNEVALUATED MATCHING ARG
	LSH TT,-SEGLOG
	TDNN T,ST(TT)
	 JRST CASEAQ		;NOT MATCH
CASEBZ:	JSP TT,CASECK		;NON-SKIP IF MATCH
	 SKIPA
	  JRST CASE1G		;MATCH NOT FOUND
CASEM:	POP P,A			;GET BACK POINTER TO CONS WITH MATCH
	HLRZ A,(A)
	MOVEM A,(P)		;CLOBBER MATCHING ARG WITH EXPR LIST
	SETZ A,			;MAKE SURE RETURN NIL IF NOTHING TO DO
	JRST COND2

CASECK:	TLNN T,FX		;USE EQ FOR ATOMS, = FOR FIXNUMS
	 JRST CASEEQ
	MOVE D,(A)		;GET THE FIXNUM
	CAME D,@-1(P)		;CHECK USING =
	 JRST 1(TT)		;SKIP FOR FAILURE
	JRST (TT)
CASEEQ:	CAME A,-1(P)		;EQ CHECK
	 JRST 1(TT)		;SKIP FOR FAILURE
	JRST (TT)

CASEAQ:	WTA [DOES NOT MATCH MATCHING EXPRESSION TYPE!]
	JRST CASE1H

CASE1C:	POP P,A
	WTA [DOES NOT MATCH MATCHING EXPRESSION TYPE!]
	JRST CASE1D

IFN 0,[				;TEMPORARILY(?) REMOVED
IF:	PUSH P,A
	HLRZ A,(A)		;TEST EXPRESSION
	CAIE A,TRUTH
	 PUSHJ P,EVAL
	POP P,B
	HRRZ B,(B)
	SKIPN A
	 JRST IF1A		;FOR FAILURE EVALUATE ALL REMAINING FORMS
	HLRZ A,(B)
	CAIE A,TRUTH
	 PUSHJ P,EVAL
	POPJ P,

IF1A:	PUSH P,B		;COND REQUIRES POINTER TO LIST ON STACK
	JRST COND2
];END IFN 0
;SETF SETF2S SETF5 SETF1 SETF2C STF2C1 STF2C2 SETF1B SETF1C SETF2A STF2A5 STF2A7 STF2A9 CSETF5 SETF2G STF2G2 EVALCAR SETF3

SUBTTL "SYSTEM" MACROS - SMALL FSUBR'S TO PARALLEL COMPILER MACROS
;;; CURRENTLY:  PUSH, POP,

COMMENT | FOO! SOMETHING HAS TO GO!

SETF:	PUSH P,A
	JRST SETF1

SETF2S:	PUSHJ FXP,SET0		;Handle a symbol case as if it were SETQ
SETF5:	HRRZ B,@(P)		;BASIC LOOP DOWN ARGLIST
	HRRZ B,(B)
	JUMPE B,POP1J
	MOVEM B,(P)
SETF1:	HLRZ A,@(P)
	SKOTT A,LS
	 JRST SETF2S		;setting a symbol?
	HLRZ A,(A)
	SKOTT A,SY
	 JRST SETF3		;Random format?
	MOVEI B,QSTF.X		;or has SETF-X property?
	PUSHJ P,GET1		; then go slow route thru SETF3
	JUMPN A,SETF3
	MOVE B,@(P)
	HLRZ A,B		;Else check if it is one of the simple 
	HLRZ A,(A)
	JSP T,IC.RP		; forms that we can un-do by hand
	 JRST SETF1B
SETF2C:	PUSH FXP,TT		;A "CARCDR"ING, with "icarcdrp" code in TT
	PUSH P,B		;  or else TT has -1 for PLIST
	HLRZ A,B
	HRRZ A,(A)
	PUSHJ P,EVALCAR		;Compute <arg>  in  "(CARCDR <arg>)"
	EXCH A,(P)
	PUSHJ P,EVALCAR		;Compute <val> in "(SETF (CARCDR <arg>) <val>)"
	MOVE B,A
	POP P,A
	POP FXP,TT
	JUMPL TT,STF2C2
	LDB D,[0606←30 TT]		;Code for the "tail" operation and
	JUMPE D,STF2C1
	LDB D,[2706←30 %CARCDR-2(D)]	;  find the "boy" number for it
	JSP T,CARCDR(D)			;Execute the "tail" operation
STF2C1:	TRNN TT,1←12.			;Bit 2.3 of code number is 1 iff 
	 TDZA D,D			;  "head" operation is RPLACD
	  MOVEI D,RPLACD-RPLACA
	PUSHJ P,RPLACA(D)
	JRST SETF5
STF2C2:	PUSHJ P,SETPLIST
	JRST SETF5

SETF1B:	CAIE A,Q$GET		;Continue discerning for known operation
	 CAIN A,QCXR
	  JRST SETF2G		;GET, CXR
	CAIN A,Q%ARRAYCALL
	 JRST SETF2A		;ARRAYCALL
	SETO TT,
	CAIN A,QPLIST
	 JRST SETF2C		;PLIST (A BIT LIKE CARCDR)
	MOVE C,A
	MOVEI B,QMACRO
	PUSHJ P,GET1
	JUMPN A,SETF1C
	MOVE A,C
	MOVEI B,QAUTOLOAD
	PUSHJ P,GET1
	JUMPE A,SETF3
	PUSH P,A
	MOVE A,C
	MOVEI B,QLSTF.X
	PUSHJ P,GETL5		; BUT MAYBE WE'VE ALREADY TRIED TO AUTOLOAD?
	POP P,T
	JUMPE A,SETF3
	MOVE A,T		;IF AUTOLOADABLE, MAY PUT A MACRO ON
	PUSHJ P,AUTOLOAD	; SO LOAD IN THE AUTOLOADABLE FILE
	MOVE A,C		; AND TRY AGAIN TO FIND MACRO PROP
	MOVEI B,QMACRO
	PUSHJ P,GET1
	JUMPN A,SETF1C
	MOVE A,C
	MOVEI B,NIL
	MOVEI C,QSTF.X
	PUSHJ P,PUTPROP
	JRST SETF3
SETF1C:	HLRZ A,@(P)
	CALLF 1,Q%MCX.		;MACROs (or STRUCTURE-selector ings)
	JUMPE A,SETF3		; - then merely MACROEXPAND-1* and go 
	HLRZ A,(A)		;   around loop again
	HRRZ B,@(P)
	JSP T,%CONS
	MOVEM A,(P)
	JRST SETF1


SETF2A:	HLRZ A,B
	HLRZ B,(B)
	PUSH P,A
	PUSH P,B
	JRST STF2A7
STF2A5:	PUSHJ P,STOREE
STF2A7:	SETZM LISAR
	PUSHJ P,EVNH0		;EVALUATE ARRAY REFERENCE WITHOUT HOOKING IT
	SKIPN A,LISAR		;ALWAYS CHECK FOR THIS GROSS LOSS
	 JRST STF2A5
	SKIPN V.RSET
	 JRST STF2A9
	JSP T,ARYSIZ		;GET SIZE OF ARRAY IN WORDS IN TT
	TLNN R,200000		;=> NEGATIVE INDEX
	 CAIG TT,(R)		;THERE'S PROBABLY A FENCE-POST FOR SX ARRAYS HERE
	  JRST STF2A5
STF2A9:	PUSH FXP,R
	EXCH A,(P)
	PUSHJ P,EVAL		;EVALUATE THE NEW VALUE
	POP P,LISAR
	POP FXP,R
	JSP T,.STORE
	POPI P,1
	SETZM LISAR
CSETF5:	JRST SETF5

SETF2G:	PUSH P,CSETF5		;"GET" OR "CXR"
	HLRZ A,B
	HRRZ A,(A)		;  "(SETF (GET <arg1> <arg2>) <val>)
	HRRZ B,(A)
	PUSH P,B
	PUSHJ P,EVALCAR		;Eval <arg1>
	EXCH A,(P)
	PUSHJ P,EVALCAR		;Eval <arg2>
	PUSH P,A
	HRRZ A,@-3(P)
	PUSHJ P,EVALCAR		;Eval <val>
	HLRZ T,@-3(P)
	HLRZ T,(T)
	CAIN T,Q$GET
	 JRST STF2G2
	MOVE C,A
	POP P,B
	POP P,A
	PUSHJ P,RPLACX		;REMEMBER return addr was pushed above
	MOVE A,C
	POPJ P,
STF2G2:	MOVE B,A		; at SETF2G
	POP P,C
	POP P,A
	JRST PUTPROP

EVALCAR:  HLRZ A,(A)		;save a couple of instructons! by coming here
	  JRST EVAL


SETF3:	POP P,A			;Can't hack it, so give up and let the
	SETZ B,			; B=() ==> For Value
	CALLF 2,QISTFX		; +INTERNAL-SETF-X expander expand it.
	JRST EVAL		; and then do it.

| 	;END OF DAMNABLE CUT-OUT OF SETF FSUBR
;$PUSHER $PUSH


;;; Standard simple PUSH case (for symbols) is as follows:
  ;     (DEFUN PUSH FEXPR (L) 
  ;	      (DO ((X L (CDDR X)) (SYM) (VAL))
  ;		  ((NULL X) VAL)
  ; 		(SETQ SYM (CADR X) VAL (EVAL (CAR X)))
  ; 		(SET SYM (CONS VAL (SYMEVAL SYM)))))
;;; Standard simple POP case (for symbols) is as follows:
  ;(DEFUN POP FEXPR (X)
  ;	(PROG2
  ; 	   () 
  ;        (COND ((NULL (CDR X)) (CAR (SYMEVAL (CAR X))))
  ;		 ('T (SET (CADR X) (CAR (SYMEVAL (CAR X))))))
  ;	   (SET (CAR X) (CDR (SYMEVAL (CAR X))))))
;;;  Otherwise, we try substituting +INTERNAL-PUSH-X (or +INTERNAL-POP-X) 
;;;   for the "PUSH" (or "POP"),  and let the (autoloadable) macro
;;;   expander handle it.


$PUSHER: POP P,A
	%WTA TNILER
$PUSH:	JSP TT,FWNACK
	 FA2,,Q$PUSH
	PUSH P,A		;SAVE THE ARGUMENT POINTER
	PUSHJ P,CADR
	JUMPE A,$PUSHER		;SPECIAL-CASE CHECK FOR NIL AND T
	CAIN A,TRUTH
	 JRST $PUSHER
	JSP T,SPATOM		;CHECK FOR STANDARD CASE
	 JRST $PUSH1
	HLRZ A,@(P)		;GET THE "VALUE" TO BE PUSHED
	PUSHJ P,EVAL		; AND EVALUATE IT
	EXCH A,(P)		;SAVE THE RESULT, AND GET THE ARG POINTER
	JSP T,%CADR		;GET THE SECOND "ARGUMENT"
	PUSH P,A		;SAVE POINTER TO SYMBOL
	PUSHJ P,EVSYM		;GET SYMBOL'S VALUE
	 JFCL			;IF SKIP RETURN USE NEW USER VALUE
	MOVE B,-1(P)		;GET THE THING TO BE PUSHED
	JSP T,%XCONS		;PUSH ON THE "STACK"
	POP P,AR1		;GET BACK POINTER TO SYMBOL
	JSP T,.SET		;STORE BACK THE NEW "STACK" POINTER
	POPI P,1
	POPJ P,
;$POPER $POP $POP4 $POP2 $POP1 $PUSH1 TNILER


$POPER: POP P,A
	%WTA TNILER
$POP:	JSP TT,FWNACK
	 FA12,,Q$POP
	PUSH P,A
	PUSHJ P,CDR
	JUMPE A,$POP4
	PUSHJ P,CAR
	JUMPE A,$POPER
	CAIN A,TRUTH
	 JRST $POPER	
	JSP T,SPATOM
	 JRST $POP1
$POP4:	HLRZ A,@(P)		;GET THE "STACK" POINTER
	JUMPE A,$POPER
	CAIN A,TRUTH
	 JRST $POPER	
	JSP T,SPATOM
	 JRST $POP1
	PUSHJ P,EVAL		;AND GET THE "STACK"
	PUSH P,(A)		;SAVE THE 1ST CONS OF THE "STACK" ON P
	HRRZ A,@-1(P)		;GET THE PLACE TO POP INTO
	JUMPE A,$POP2		;NOT SPECIFIED, JUST RETURN THE TOP OF "STACK"
	HLRZ A,(A)
	HLRZ AR1,(P)		;CAR OF STACK IS VALUE BEING POPPED
	JSP T,.SET1		;SET THE SYMBOL INTO WHICH IT IS POPPING
$POP2:	HRRZ AR1,(P)		;NOW CDR THE "STACK" AND RE-SET INTO STK-PTR
	HLRZ A,-1@(P)
	JSP T,.SET1
	HLRZ A,(P)		;RETURN THE CAR OF THE NEW "STACK"
	POPI P,2
	POPJ P,


$POP1:	SKIPA C,[QIPOX]		;"PUSH" AND "POP" CANT BE HANDLED
$PUSH1:	  MOVEI C,QIPUX		; So invoke the LISP-coded +INTERNAL-foo-X
	POP P,A			; which expands it for us
	SETZ B,			; B=() means "For Value"
	CALLF 2,(C)
	JRST EVAL		;and EVAL the result

TNILER: SIXBIT \T AND NIL NOT ACCEPTABLE FOR "PUSH" AND "POP"!\

;STORE STORE7 STORE9 BREAK SIGNP SIGNP0 SPTB


SUBTTL	STORE, BREAK, SIGNP

STORE:	JSP TT,FWNACK
	   FA2,,QSTORE
	HLRZ B,(A)
	PUSH P,B
	HRRZ A,(A)
	HLRZ A,(A)
	PUSHJ P,EVAL		;EVALUATE SECOND ARGUMENT FIRST!
	PUSH P,A
STORE7:	HRRZ A,-1(P)
	SETZM LISAR
	PUSHJ P,EVNH0		;EVALUATE ARRAY REFERENCE WITHOUT HOOKING IT
	SKIPN A,LISAR		;ALWAYS CHECK FOR THIS GROSS LOSS
	 JRST STORE5
	SKIPN V.RSET
	 JRST STORE9
	JSP T,ARYSIZ		;GET SIZE OF ARRAY IN WORDS IN TT
	TLNN R,200000		;=> NEGATIVE INDEX
	 CAIG TT,(R)		;THERE'S PROBABLY A FENCE-POST FOR SX ARRAYS HERE
	  JRST STORE5
STORE9:	POP P,A
	SUB P,R70+1
	JSP T,.STORE
	SETZM LISAR
	POPJ P,


BREAK:	JSP TT,FWNACK		;FSUBR (1 . 2)
	   FA12,,QBREAK
	HLRZ B,(A)		;BKPT NAME
	HRRZ A,(A)
	JUMPE A,$BRK0		;NO SECOND ARG => ALWAYS BREAK
	HLRZ A,(A)		;TO-BREAK-OR-NOT SWITCH
	PUSH P,B
	PUSHJ P,EVAL		;THIS IS A CROCK!!!
	POP P,B
	JRST $BREAK		;A = BREAKP, B = BREAKID


SIGNP:	JSP TT,FWNACK		;FSUBR 2
	   FA2,,QSIGNP
	PUSH P,(A)
	HLRZ A,(A)
	PUSH P,A
SIGNP0:	PUSHJ P,PNGET
	HLRZ A,(A)
	MOVS T,(A)
	HRRZ A,(A)
	JUMPN A,SIGNPE
	MOVNI A,6
	CAIE T,@SPTB+6(A)
	 AOJL A,.-1
	JUMPGE A,SIGNPE
	HLLZ A,SPTB+6(A)
	SUB P,R70+1
	EXCH A,(P)
	HLRZ A,(A)
	PUSHJ P,EVAL
	PUSHJ P,NUMBERP
	JUMPE A,POP1J
	POP P,T
	HRRI T,TRUE
	XCT T
	JRST FALSE

SPTB:
IRP Q,,[L,E,LE,G,GE,N]
	JUMP!Q TT,(ASCII \Q\)
TERMIN
;PROG1 PROG2 PRG12Z PROGN PROGN1 EQ RPLACA RPLACD RPLCD3 RPLCD2

SUBTTL	PROG2, PROGN, EQ, RPLACA, RPLACD


PROG1:	SKIPA R,XC-1
PROG2:	MOVNI R,2
	CAMLE T,R
	 JRST PRG12Z
	HRLI T,-1(T)
	ADD T,P
	SUBM T,R
	MOVE A,(R)
	MOVEM T,P
	POPJ P,

PRG12Z:	MOVEI D,QPROG2
	CAIE R,2
	 MOVEI D,QPROG1
	JRST WNALOSE

PROGN:	AOJG T,FALSE
	POP P,A
PROGN1:	JUMPE T,CPOPJ
	HRLI T,-1(T)
	ADD P,T
	POPJ P,

EQ:	CAMN A,B	;SUBR 2 - POINTER IDENTITY PREDICATE
	JRST TRUE
	JRST FALSE

RPLACA:	SKOTT A,LS
	 JRST RPLCA0
	TLNE TT,PUR+VC
	 JRST RPLCA1
	HRLM B,(A)
	POPJ P,

RPLACD:				;SUBR 2 - CLOBBER CDR OF FIRST ARG WITH SECOND
	SKOTT A,LS
	 JRST RPLCD2
	TLNE TT,PUR
	 JRST RPLCD1
RPLCD3:	HRRM B,(A)
	POPJ P,

RPLCD2:	JUMPE A,RPLCD0		;(RPLACD NIL FOO) IS ALWAYS A LOSS
	SKIPE T,VCDR
	 CAIN T,QLIST		;IF CDR = NIL OR LIST, THEN BOMBOUT
	  JRST RPLCD0		;SINCE ARG IS NOT LIST OR NIL
	CAIN T,QSYMBOL
	 TLNE TT,SY
	  JRST RPLCD3		;IF NOT CDR = SYMBOL, THEN ANYTHING GOES
	JRST RPLCD0

	PGTOP EVL,[EVAL, APPLY, STUFF OPEN-CODED BY COMPLR]
;GCRET GCNRT GC MINCEL GCCNT GCCNT1 GCCNT4 LPROG3 GCCNT0



;;@ GCBIB 247		GARBAGE COLLECTOR AND ALLOCATION STUFF
;;;   ***** MACLISP ****** GARBAGE COLLECTOR AND ALLOCATION STUFF **
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************




	PGBOT GC


SUBTTL	GRABBAGE COLLECTORS AND RELATED ITEMS


GCRET:	TDZA A,A	;GC WITH NORET=NIL
GCNRT:	MOVEI A,TRUTH	;GC WITH NORET=T
	HRRI T,UNBIND	;EXPECTS FLAG IN LH OF T
	PUSH P,T
	JSP T,SPECBIND
	0 A,VNORET
	JRST AGC


GC:	PUSH P,[333333,,FALSE]	;SUBR 0 - USER ENTRY TO GC
	JRST AGC		;TO UNDERSTAND THE 3'S, SEE GSTRT7


MINCEL==6*NFF	;MIN NUMBER WORDS TO RECLAIM FOR EACH SPACE
IFG 40-MINCEL, MINCEL==40

GCCNT:				;FREELIST COUNTING LOOP TO RUN IN AC'S
OFFSET -.
	NIL			;SO THAT THE FOLLOWING INS WILL STOP ON NIL
GCCNT1:	SKIPE TT,(TT)
GCCNT4:	 AOJA GCCNT0,.-1	;OR MAYBE AOBJN
	JRST GCP4A
LPROG3==:.-1
GCCNT0:
OFFSET 0
.HKILL GCCNT1 GCCNT4 GCCNT0
;WHL AGC4 AGC AGC1 AGC1Q GCP4 GCP4A GCP4B

SUBTTL	GC - INITIALIZATION

WHL==:USELESS*ITS		;FLAG FOR WHO-LINE STUFF

   XCTPRO
AGC4:	HRROS NOQUIT		;ENTRY FROM FWCONS, FLCONS, AND THE LIKE
   NOPRO
	SUBI A,2		;ENTER WITH  JSP A,AGC4
	PUSH P,A
   XCTPRO
AGC:	HRROS NOQUIT		;ENTER HERE WITH  PUSHJ P,AGC
   NOPRO
	SKIPE ALGCF		;CANT SUCCESSFULLY GC WHILE IN ALLOC
	 JRST ALERR
AGC1:
;MUST HAVE DONE  HRROS NOQUIT  BEFORE COMING HERE.
;FIRST WE GET CURRENT RUNTIME IN "HOST MACHINE UNITS" IN GCTM1.
;THIS MUST BE DONE IN AND AROUND THE SAVING OF THE AC'S.
IT$	.SUSET [.RRUNT,,GCTM1]
	MOVEM NACS+1,GCNASV
10$	SETZ NACS+1,
10$	RUNTIM NACS+1,		;GET RUNTIME FOR THIS JOB
10$	MOVEM NACS+1,GCTM1
	MOVEI NACS+1,GCACSAV
	BLT NACS+1,GCACSAV+NACS	;BLT AWAY ARG ACS (AND NIL) INTO PROTECTED PLACE
20$	MOVEI 1,.FHSLF
20$	RUNTM			;GET RUNTIME FOR THIS FORK
20$	MOVEM 1,GCTM1
	MOVE NACS+1,[NACS+2,,GCNASV+1]
	BLT NACS+1,GCNASV+16-<NACS+1>	;SAVE NON-MARKED AC'S EXCEPT SP
	MOVE NACS+1,[UUOH,,GCUUSV]
	BLT NACS+1,GCUUSV+LUUSV-1	;SAVE UUOH STUFF, IN CASE STRT IS USED
	MOVEI A,TRUTH			;SPECBIND TERPRI TO T, TO PREVENT
	JSP T,SPECBIND			; AUTO-TERPRI IN GC MESSAGES
	   0 A,V%TERPRI
	MOVEM SP,GCNASV+17-<NACS+1>	;NOW SAVE SP
	SETZM GCFXP
	SETZ R,
REPEAT NFF,[
	SKIPN FFS+.RPCNT	;FIGURE OUT WHICH SPACE(S) EMPTY
	 TLO R,400000←-.RPCNT
]		;END OF REPEAT NFF
	SKIPN FFY2			;IF WE RAN OUT OF SYMBOL BLOCKS,
	 TLO R,400000←<-FFY+FFS>	; THEN CREDIT IT TO SYMBOLS
	MOVN D,R		;THIS IS A STANDARD HACK TO KILL ONE BIT
	TDZE R,D		;SKIP IF THERE WERE NO BITS
	 JUMPE R,GCGRAB		;JUMP IF EXACTLY ONE BIT ON
AGC1Q:	SETZM GCRMV
	AOSE IRMVF	;IF OVERRIDE IS ON, THEN
	 SKIPE VGCTWA
	  SETOM GCRMV		;DO REMOVAL ANYHOW.
	MOVNI TT,20		;TOP 40 BITS OF WORD ON
	JSP F,GCINBT		;INIT MARK BITS FOR LIST, FIXNUM, ETC.
	MOVE T,[SFSSIZ,,OFSSIZ]	;SAVE AWAY OLD SIZES OF SPACES
	BLT T,OSASIZ		; (USED FOR ARG TO GC-DAEMON)
	MOVE T,VGCDAEMON
	IOR T,GCGAGV
IFE WHL,	JUMPE T,GCP6
IFN WHL,	JUMPE T,GCP5
	MOVSI R,GCCNT
	BLT R,LPROG3
	SKIPN VGCDAEMON
	HRLI GCCNT4,(AOBJN GCCNT0,)
	MOVNI R,NFF		;MAY OR MAY NOT HAVE BIGNUMS OR HUNKS
GCP4:	SETZ GCCNT0,
	SKIPGE FFS+NFF(R)
	 JRST GCP4B
	SKIPN VGCDAEMON
	 MOVSI GCCNT0,-MINCEL
	SKIPE TT,FFS+NFF(R)
	 AOJA GCCNT0,GCCNT1
GCP4A:	TLZ GCCNT0,-1
	HRRZ F,GCWORN+NFF(R)	;ACCOUNT FOR LENGTHS OF ITEMS
	IMULI GCCNT0,(F)
	CAIGE GCCNT0,MINCEL	;IF LESS THEN MINCEL, THEN FREELIST WAS
	 SETZM FFS+NFF(R)	; "PRACTICALLY EMPTY" AND DESERVES SOME BLAME
GCP4B:	HRLM GCCNT0,NFFS+NFF(R)
	AOJL R,GCP4

;FALLS THROUGH
;GCP5 GSTRT0 GSTR0A GSTRT1 GSTRT2 GSTRT3 GSTRT5 GSTRT7 GSTRT8 GSTRT6 GCWHL2 GCWHL3 GCWHL9

;FALLS IN

;;;	PDLS ARE SAFE

IFN WHL,[
GCP5:	MOVE F,GCWHO
	SKIPE GCGAGV
	 JRST GSTRT0
	TRNN F,1		;1-BIT MEANS WE WANT TO SEE
	 JRST GCP6		; THE REASON FOR THE GC
	JRST GSTR0A		; IN THE WHO-LINE
]		;END OF IFN WHL
IFE WHL,[
	SKIPN GCGAGV
	 JRST GCP6
]		;END OF IFE WHL
GSTRT0:	STRT 17,[SIXBIT \↑M;GC DUE TO !\]
GSTR0A:	SETZB TT,D		;FIGURE OUT REASON FOR GC
	HLRZ T,(P)
	CAIN T,111111		;WAS IT INITIAL STARTUP? (SEE LISP)
	 MOVEI TT,[SIXBIT \STARTUP!\]
	CAIN T,333333		;WAS IT USER CALLING GC FUNCTION?
	 MOVEI TT,[SIXBIT \USER!\]
	CAIN T,444444		;WAS IT ARRAYS?
	 MOVEI TT,[SIXBIT \ARRAY RELOCATION!\]
	CAIN T,555555		;I/O CHANNELS?
	 MOVEI TT,[SIXBIT \I/O CHANNELS!\]
	CAIN T,666666		;SUSPEND?
	 MOVEI TT,[SIXBIT \SUSPEND!\]
	JUMPN TT,GSTRT8
	MOVNI T,NFF		;NONE OF THOSE HYPOTHESES WORK
GSTRT1:	SKIPN FFS+NFF(T)	;MAYBE SOME STORAGE SPACE RAN OUT
	 SKIPA TT,T
	  ADDI D,1
	AOJL T,GSTRT1
	JUMPE TT,GSTRT7		;NO, THAT WASN'T IT
IFN WHL,	SKIPN GCGAGV
.ALSO,		 JRST GSTRT4
	MOVNI T,NFF		;YES, IT WAS. PRINT MOBY MESSAGE!
	SETZ R,
GSTRT2:	SKIPE FFS+NFF(T)
	 JRST GSTRT5
	JUMPE R,GSTRT3
	CAIE D,NFF-2
	 STRT 17,[SIXBIT \, !\]
	CAMN T,TT
	 STRT 17,[SIXBIT \ AND !\]
GSTRT3:	SETO R,
	STRT 17,@GSTRT9+NFF(T)
GSTRT5:	AOJL T,GSTRT2
	STRT 17,[SIXBIT \ SPACE!\]
	CAIE D,NFF-1
	 STRT 17,[SIXBIT \S!\]
IFN WHL, GSTRT4:	MOVE TT,GSTRT9+NFF(TT)
	JRST GSTRT6


GSTRT7:	MOVEI TT,[SIXBIT \ ? !\]	;I DON'T KNOW WHY WE'RE HERE!
GSTRT8:
IFN WHL,SKIPE GCGAGV
	STRT 17,(TT)		;PRINT REASON

GSTRT6:
IFN WHL,[
	TRNN F,1
	 JRST GCWHL9
	MOVE D,(TT)
	MOVE R,1(TT)
	ROTC D,-22
	MOVSI F,(SIXBIT \!\)
	MOVE T,[220600,,D]
GCWHL2:	ILDB TT,T
	CAIE TT,'!
	 JRST GCWHL2
	DPB NIL,T
GCWHL3:	IDPB NIL,T
	TLNE T,770000
	 JRST GCWHL3
	HRLI D,(SIXBIT \GC:\)
	MOVE T,[-6,,GCWHL6]
	.SUSET T
GCWHL9:
]		;END OF IFN WHL

;FALLS THROUGH
;GCP6 GCP6Q0 GCP6Q1 GCP6Q2 GCP6Q3 GCP6Q4 GCP6Q5 GCP6Q6 GCP6Q8 GCP6Q9 GCP6R0

;;;	 PDLS ARE SAFE

SUBTTL	GC - MARK THE WORLD

;FALLS IN

GCP6:	HRROS MUNGP		;STARTING TO MUNG SYMBOL/SAR MARK BITS
	MOVE A,[<-20>←-NUNMRK]	;PRE-PROTECT CERTAIN
	ANDM A,BTBLKS		; RANDOM LIST CELLS
	MOVNI R,NACS+1		;PROTECT CONTENTS OF MARKED ACS
GCP6Q0:	HRRZ A,GCACSAV+NACS+1(R)
	JSP T,GCMARK
	AOJL R,GCP6Q0
	HRRZ R,C2
	ADDI R,1
GCP6Q1:	HRRZ A,(R)		;CAUSES MARKING OF CONTENTS
	JSP T,GCMARK		; OF ACS AT TIME OF GC, AND OF REG PDL
	CAIGE R,(P)
	 AOJA R,GCP6Q1
	MOVEI R,LPROTE-1
GCP6Q2:	MOVEI A,BPROTE(R)	;PROTECT PRECIOUS STUFF
	JSP T,GCMARK
	SOJGE R,GCP6Q2
IFN BIGNUM,[
	MOVEI R,LBIGPRO-1
GCP6Q3:	MOVEI A,BBIGPRO(R)
	JSP T,GCMARK
	SOJGE R,GCP6Q3
]		;END OF IFN BIGNUM
	MOVSI R,TTS<GC>
	IORM R,DEDSAR+TTSAR	;PROTECT DEDSAR
	IORM R,DBM+TTSAR	;PROTECT DEAD BLOCK MARKER
	HRRZ R,SC2
GCP6Q4:	HRRZ A,(R)
	JSP T,GCMARK		;MARK SAVED VALUES ON SPEC PDL
	CAIGE R,(SP)
	 AOJA R,GCP6Q4
	SKIPN R,INTAR
	 JRST GCP6Q6
GCP6Q5:	MOVE A,INTAR(R)
	JSP T,GCMARK
	SOJG R,GCP6Q5
GCP6Q6:				;PROTECT INTERRUPT FUNCTIONS
IRP Z,,[0,1,2]X,,[ALARMCLOCK,AUTFN,UDF]
	MOVEI R,NUINT!Z
	SKIPE A,V!X(R)
	 JSP T,GCMARK
	SOJG R,.-2
TERMIN
	SKIPE A,VMERR
	 JSP T,GCMARK
IFN PAGING,[
	SKIPN D,LHSGLK		;SKIP IF ANY LH SEGMENTS
	 JRST GCP6R0		.SEE LHVBAR
GCP6Q8:	MOVEI F,(D)		;CREATE AOBJN POINTER INTO SEGMENT
	LSH F,SEGLOG
	HRLI F,-SEGSIZ
GCP6Q9:	HLRZ A,(F)		;MARK FROM ALL ENTRIES IN THAT SEGMENT
	JSP T,GCMARK
	HRRZ A,(F)
	JSP T,GCMARK
	AOBJN F,GCP6Q9
	LDB D,[SEGBYT,,GCST(D)]	;FOLLOW LINKED LIST OF SEGMENTS
	JUMPN D,GCP6Q8
GCP6R0:
]		;END OF IFN PAGING

;FALLS THROUGH
;GCP6B1 GCP6B2 GCP6A GCP6F1 GCP6F GCP6F0 GCP6D GCP6D1 GSTRT9 GCWHL6

;;;	PDLS ARE SAFE

;FALLS IN

	SKIPN GCRMV
	 JRST GCP6B1
	JSP R,GCGEN		;IF DOING TWA REMOVAL, TRY MARKING FROM 
		GCP8I		;NON-TRIVIAL P-LISTS OF CURRENT OBARRAY
	JRST GCP6B2

GCP6B1:	MOVE A,VOBARRAY
	JSP TT,$GCMKAR		;OTHERWISE, JUST MARK OBARRAY BUCKETS
GCP6B2:	MOVEI A,OBARRAY
	CAME A,VOBARRAY
	 JSP TT,$GCMKAR
	MOVE R,GCMKL
GCP6A:	JUMPE R,GCP6D
	HLRZ A,(R)
	MOVE D,ASAR(A)
	TLNN D,AS<GCP>	;IF ARRAY POINTER HAS "GC ME" BIT SET,
	 JRST GCP6F
	TLNE D,AS<OBA>	;MORE CHECKING ON OBARRAYS
	 JRST GCP6F0
GCP6F1:	JSP TT,GCMKAR	; THEN MARK FROM ARRAY ENTRIES
GCP6F:	HRRZ R,(R)
	HRRZ R,(R)
	JRST GCP6A

GCP6F0:	CAMN A,VOBARRAY	; AND IF THIS ISN'T THE CURRENT OBARRAY,
	 SKIPN GCRMV	; OR IT IS, BUT WE ARENT DOING GCTWA REMOVAL,
	  JRST GCP6F1
	JRST GCP6F

GCP6D:	MOVE A,V%TYI
	JSP TT,$GCMKAR
	MOVE A,V%TYO
	JSP TT,$GCMKAR
	SKIPN R,PROLIS
GCP6D1:	 JUMPE R,GCP6H	;PROTECT READ-MACRO
	HLRZ A,(R)	; FUNCTIONS (CAN'T JUST GCMARK WHOLE
	HLRZ A,(A)	; PROLIS - DON'T WANT TO PROTECT
	JSP T,GCMARK	; READTABLE SARS)
	HRRZ R,(R)
	JRST GCP6D1


GSTRT9:	[SIXBIT \LIST!\]	.SEE GCWORRY
	[SIXBIT \FIXNUM!\]	.SEE GCPNT
	[SIXBIT \FLONUM!\]
DB$	[SIXBIT \DOUBLE!\]
CX$	[SIXBIT \COMPLEX!\]
DX$	[SIXBIT \DUPLEX!\]
BG$	[SIXBIT \BIGNUM!\]
	[SIXBIT \SYMBOL!\]
IRP X,,[2,4,8,16,32,64,128,256,512,1024]
	[SIXBIT \HUNK!X!!\]
IFE .IRPCNT-HNKLOG, .ISTOP
TERMIN
	[SIXBIT \ARRAY!\]

IFN WHL,[
GCWHL6:	.RWHO1,,GCWHO1
	.RWHO2,,GCWHO2
	.RWHO3,,GCWHO3
	.SWHO1,,[.BYTE 8 ? 66 ? 0 ? 366 ? 0 ? .BYTE]
	.SWHO2,,D
	.SWHO3,,R
]		;IFN WHL
;CGCMKL GCP6H GCP6H1 GCP6H8 GCP6H3 GCP6H4 GCP6H5 GCP6G GCP6H0

;;;	PDLS ARE SAFE

SUBTTL	GC - CONSIDER THE EFFECTS OF AN ARRAY DISAPPEARING

;;; UPDATE THE GCMKL BY SPLICING OUT ARRAYS TO BE SWEPT.
;;; IF ANY SUCH ARRAYS ARE OPEN FILES, CLOSE THEM.

CGCMKL:
GCP6H:	SKIPN F,GCMKL
	JRST GCP7
	JSP A,GCP6H0
GCP6H1:	HLRZ A,(F)
	TDNE TT,TTSAR(A)
	JRST GCP6G
	TDNE T,ASAR(A)
	JRST GCP6H7
GCP6H8:
	ANDCAM TT,TTSAR(A)
	IORM R,TTSAR(A)
	MOVEI B,ADEAD
	EXCH B,ASAR(A)
	TLNN B,AS<RDT>
	JRST GCP6G
	MOVEI AR1,PROLIS	;JUST KILLED A READTABLE
GCP6H3:	HRRZ AR2A,(AR1)		; - CLEAN UP PROLIS
GCP6H4:	JUMPE AR2A,GCP6G
	HLRZ C,(AR2A)
	HRRZ C,(C)
	HLRZ C,(C)
	CAIE C,(A)
	JRST GCP6H5
	HRRZ AR2A,(AR2A)
	HRRM AR2A,(AR1)
	JRST GCP6H4
GCP6H5:	MOVEI AR1,(AR2A)
	JRST GCP6H3
GCP6G:	HRRZ F,(F)
	HRRZ F,(F)
	JUMPN F,GCP6H1
	JRST GCP7

GCP6H0:	MOVSI T,AS<JOB+FIL>	;SET UP SOME ACS FOR THE GCMKL-LOOK LOOP
	MOVE R,[TTDEAD]
	MOVSI TT,TTS<CN+GC>
	JRST (A)
;GCP6H7 GCP6H2 GCP6H9 GCP6J1 GCP6J3 GCP6J9

;;;	PDLS ARE SAFE


;;; CLEAN UP AND CLOSE A FILE WHEN GARBAGE COLLECTED

GCP6H7:	MOVE B,TTSAR(A)		;ABOUT TO GC A FILE ARRAY
	TLNE B,TTS<CL>		;IGNORE IF ALREADY CLOSED
	 JRST GCP6H8
	PUSH P,F
IFN JOBQIO,[
	HLL B,ASAR(A)
	TLNE B,AS<JOB>
	 JRST GCP6J1
]		;END OF IFN JOBQIO
	PUSHJ P,ICLOSE		;OTHERWISE CLOSE THE FILE
	MOVEI R,[SIXBIT \↑M;FILE CLOSED: !\]
GCP6H2:	SKIPN GCGAGV
	 JRST GCP6H9
	STRT 17,(R)
	HLRZ A,@(P)
	HRRZ AR1,VMSGFILES
	TLO AR1,200000
	HRROI R,$TYO
	PUSHJ P,PRINTA
GCP6H9:	POP P,F
	JSP A,GCP6H0		;RE-INIT MAGIC CONSTANTS IN ACS
	HLRZ A,(F)
	JRST GCP6H8



IFN JOBQIO,[

;;; CLEAN UP AND CLOSE AN INFERIOR PROCEDURE WHEN GARBAGE COLLECTED

GCP6J1:
IFN ITS,[
	MOVEI R,[SIXBIT \↑M;FOREIGN JOB FLUSHED: !\]
	SKIPN T,J.INTB(B)
	 JRST GCP6J3
	MOVEI R,[SIXBIT \↑M;INFERIOR JOB FLUSHED: !\]
	.CALL GCP6J9		;IF INFERIOR JOB, OPEN IT ON
	 .VALUE			; THE TEMPORARY I/O CHANNEL
	.UCLOSE TMPC,		; AND KILL IT
	JFFO T,.+1
	MOVNS TT
	SETZM JOBTB+21(TT)	;CLEAR ENTRY IN JOB TABLE
]		;END OF IFN ITS
GCP6J3:	MOVSI T,TTS<CL>		;MARK THE JOB OBJECT AS BEING CLOSED
	ANDCAM T,TTSAR(A)
	JRST GCP6H2

IFN ITS,[
GCP6J9:	SETZ
	SIXBIT \OPEN\		;OPEN FILE (INFERIOR PROCEDURE)
	  1000,,TMPC		;CHANNEL NUMBER
	      ,,F.DEV(B)	;DEVICE NAME (USR)
	      ,,F.FN1(B)	;FILE NAME 1 (UNAME)
	400000,,F.FN2(B)	;FILE NAME 2 (JNAME)
]		;END OF IFN ITS

]		;END OF IFN JOBQIO

;GCP7

;;;	PDLS ARE SAFE

SUBTTL	GC - TWA REMOVAL

GCP7:	HRRZ A,GCMKL
	JSP T,GCMARK
	HRRZ A,PROLIS
	JSP T,GCMARK
	SKIPN GCRMV
	JRST GCSWP
	JSP R,GCGEN		;IF DOING TWA REMOVAL, THEN WIPE OUT
	   GCP8G		; T.W.A.'S AND THEN MARK BUCKETS
	MOVE A,VOBARRAY
	JSP TT,$GCMKAR

;FALLS THROUGH
;GCSWP GCSW1 GCSW2 GCSW2A GCSW5 GCSW7

;;;	PDLS ARE UNSAFE

SUBTTL	GC - SWEEP THE WORLD

;FALLS IN

GCSWP:				.SEE KLINIT ;WHICH CLOBBERS NEXT INSTRUCTION
	MOVEM FXP,GCFXP		;WE ARE ABOUT TO CLOBBER THE PDL POINTERS
	MOVNI SP,NFF		;NUMBER OF SPACES TO SWEEP
	MOVEM SP,GC99
;MAJOR SWEEP LOOP OVER ALL SPACES
GCSW1:	MOVE FXP,GCSWTB+NFF(SP)	;PUT INNER SWEEP LOOP IN AC'S
	HLLZ FLP,FXP		; AND INITIALIZE COUNT
	BLT FLP,(FXP)
	SETZ FXP,		;FXP HAS FREELIST, A HAS COUNT
	SKIPN FLP,FSSGLK+NFF(SP)
	 JRST GCSW7
;MINOR SWEEP LOOP OVER ALL SEGMENTS IN A SPACE
GCSW2:	MOVEM FLP,GC98
	JRST @GCSW2A+NFF(SP)	;DISPATCH ON TYPE TO SEPARATE ROUTINES
GCSW2A:	GCSWS			;LIST
	GCSWS			;FIXNUM
	GCSWS			;FLONUM
DB$	GCSWD			;DOUBLE
CX$	GCSWC			;COMPLEX
DX$	GCSWZ			;DUPLEX
BG$	GCSWS			;BIGNUM
	GCSWY			;SYMBOL
IFN HNKLOG, 	GCSWH1
REPEAT HNKLOG,[
IFL .RPCNT-4,	GCSWH1		;HUNKS OF LESS THAN 40 WORDS
.ELSE		GCSWH2		;HUNKS OF 40 WORDS OR MORE
]		;END OF REPEAT HNKLOG
	GCSWA			;SARS
IFN .-GCSW2A-NFF, WARN [WRONG LENGTH TABLE]

GCSW5:	MOVE SP,GC99
	MOVE FLP,GC98
	LDB FLP,[SEGBYT,,GCST(FLP)]
	JUMPN FLP,GCSW2
GCSW7:
	HRRZ A,@GCSW7A+NFF(SP)
	HRRM FXP,FFS+NFF(SP)	;SAVE FREELIST - DON'T DISTURB SIGN BIT
	HRRZ B,GCWORN+NFF(SP)
	IMULI A,(B)		;ACCOUNT FOR SIZE OF OBJECTS IN THIS SPACE
	HRRM A,NFFS+NFF(SP)	;SAVE COUNT OF WORDS COLLECTED
	AOSGE SP,GC99
	 JRST GCSW1
	HRRZS MUNGP		;WE HAVE UNDONE MUNGING OF BITS
	MOVSI F,TTS<CN+GC>
	ANDCAM F,DEDSAR		;MUST CLEAR BITS IN DEDSAR
	JSP NACS+1,GCACRS	;RESTORE ACCUMULATORS
	JRST GCPNT		;NEXT PRINT STATISTICS
;GCSWTB GCSW7A

;;;	PDLS ARE UNSAFE

;TABLE OF SWEEPERS FOR RUNNING IN ACS AND THE LAST LOCATIONS TO LOAD THEM INTO
GCSWTB:	GCFSSWP,,LPROG1		;LIST
	GCFSSWP,,LPROG1		;FIXNUM
	GCFSSWP,,LPROG1		;FLONUM
DB$	GCHSW1,,LPROGH		;DOUBLE
CX$	GCHSW1,,LPROGH		;COMPLEX
DX$	GCHSW1,,LPROGH		;DUPLEX
BG$	GCFSSWP,,LPROG1		;BIGNUM
	GSYMSWP,,LPROG6		;SYMBOL
IFN HNKLOG,	GCHSW1,,LPROGH	
REPEAT HNKLOG,[
IFL .RPCNT-4,	GCHSW1,,LPROGH	;HUNKS OF LESS THAN 40 WORDS
.ELSE		GCHSW2,,LPROGK	;HUNKS OF 40 WORDS OR MORE
]		;END OF REPEAT HNKLOG
	GSARSWP,,LPROG4		;SARS
IFN .-GCSWTB-NFF, WARN [WRONG LENGTH TABLE]

;TABLE OF AC FOR EACH SWEEPER WHICH HOLDS COUNT OF OBJECTS SWEPT
GCSW7A:	GFSCNT			;LIST
	GFSCNT			;FIXNUM
	GFSCNT			;FLONUM
DB$	GHCNT1			;DOUBLE
CX$	GHCNT1			;COMPLEX
DX$	GHCNT1			;DUPLEX
BG$	GFSCNT			;BIGNUM
	GYCNT			;SYMBOL
IFN HNKLOG,	GHCNT1	
REPEAT HNKLOG,[
IFL .RPCNT-4,	GHCNT1		;HUNK OF LESS THAN 40 WORDS
.ELSE		GHCNT2		;HUNKS OF 40 WORDS OR MORE
]		;END OF REPEAT HNKLOG
	GSCNT			;SARS
IFN .-GCSW7A-NFF, WARN [WRONG LENGTH TABLE]

;GCSWS GCFSSWP GFSP1 GFSP2 GFSCNT GFSP4 GFSP5 LPROG1 GCSWY GSYMSWP GYSP7 GYSP1 GYSP2 GYCNT GYSP3 LPROG6 GYSP5 GYSP5A GYSP5B

;;;	PDLS ARE UNSAFE

GCSWS:	MOVE P,GCST(FLP)	;GET SHIFTED ADDRESS OF BIT BLOCK
	LSH P,SEGLOG-5		;SHIFT BACK TO FORM WORD ADDRESS
	HRLI P,-BTBSIZ		;MAKE AOBJN POINTER OVER WORDS OF BITS
	LSH FLP,SEGLOG
	HRLI FLP,-40		;40 CELLS PER WORD OF BITS
	JRST GFSP1
;FXP HAS RUNNING FREELIST
;FLP HAS AOBJN POINTER OVER CELLS
;P HAS AOBJN POINTER OVER WORDS OF BITS
GCFSSWP:			;SWEEPER FOR LIST, FIXNUM, FLONUM, BIGNUM
OFFSET -.
GFSP1:	SKIPN SP,(P)		;GET A WORD OF MARK BITS
	 JRST GFSP5		;IF ALL 40 WORDS MARKED, THIS SAVES TIME
GFSP2:	JUMPGE SP,GFSP4		;JUMP IF SINGLE WORD MARKED
	HRRZM FXP,(FLP)		;ELSE CHAIN INTO FREE LIST
	HRRZI FXP,(FLP)
GFSCNT:	AOJ .,0			;RH COUNTS RECLAIMED CELLS
GFSP4:	ROT SP,1		;ROTATE NEXT MARK BIT UP
	AOBJN FLP,GFSP2		;COUNT OFF 40 WORDS
	TLOA FLP,-40		;RESET 40-WORD COUNT IN AOBJN POINTER
GFSP5:	 ADDI FLP,40		;SKIP OVER 40 WORDS IN SWEEP
	AOBJN P,GFSP1		;<BTBSIZ> BLOCKS OF 40 WORDS
	JRST GCSW5
LPROG1==:.-1
OFFSET 0
.HKILL GFSP1 GFSP2 GFSCNT GFSP4 GFSP5


GCSWY:	LSH FLP,SEGLOG
	HRLI FLP,-SEGSIZ
	JRST GYSP1
GSYMSWP:			;SWEEPER FOR SYMBOL SPACE
OFFSET -.
GYSP7:	(300,,0)	;3.8=PURE, 3.7=COMPILED CODE REFS (NOTE: TSNE WITH ITSELF ALWAYS SKIPS)
GYSP1:	HLRZ SP,(FLP)
	TRZN SP,1		;IF MARKED,
	 TSNE GYSP7,(SP)	; OR IF PURE OR COMPILED CODE NEEDS IT,
	  JRST GYSP3		; THEN DO NOT SWEEP UP
	JUMPN SP,GYSP5		;IF NON-NIL LEFT HALF, RECLAIM THE SYMBOL BLOCK
GYSP2:	HRRZM FXP,(FLP)		;CHAIN ONTO FREELIST
	HRRZI FXP,(FLP)
GYCNT:	AOJ .,0
GYSP3:	HRLM SP,(FLP)
	AOBJN FLP,GYSP1
	JRST GCSW5
LPROG6==:.-1
OFFSET 0
.HKILL GYSP1 GYSP2 GYSP3 GYSP7 GYCNT

;;; PART OF SYMBOL SWEEPER - RESTORES A SYMBOL BLOCK TO FFY2.
;;; ALSO ATTEMPTS TO RETURN THE VALUE CELL IF IT HAS ONE.

GYSP5:	EXCH SP,FFY2		;RETURN SYMBOL BLOCK TO FREELIST
	EXCH SP,@FFY2
	TLZ SP,-1		;MAYBE TRY TO RETURN A VALUE CELL
	CAIE SP,SUNBOUND
	 JRST GYSP5A
	SETZ SP,
	JRST GYSP2

GYSP5A:	CAIL SP,BXVCSG+NXVCSG*SEGSIZ
	 JRST GYSP5B		;CAN ONLY RETURN CELLS IN VC SPACE
	EXCH SP,FFVC
	MOVEM SP,@FFVC
GYSP5B:	SETZ SP,
	JRST GYSP2
;GCSWD GCSWC GCSWZ GCSWH1 GCHSW1 GH1SP1 GH1SP2 GHCNT1 GH1SP4 GH1SP5 GH1SP6 LPROGH

;;;	PDLS ARE UNSAFE

IFN HNKLOG+DBFLAG+CXFLAG,[

GCSWD:
GCSWC:
GCSWZ:
GCSWH1:	HRRZ P,GCWORN+NFF(SP)	;GET SIZE OF OBJECTS
	HRRI GH1SP4,(P)
	SUBI P,1
	HRRI GH1SP5,(P)
	HRRZ P,GCWORN+NFF(SP)
	MOVNI SP,40
	IDIVM SP,P
	HRRI GH1SP6,(P)		;BITS PER BIT BLOCK WORD
	MOVE P,GCST(FLP)	;GET SHIFTED ADDRESS OF BIT BLOCK
	LSH P,SEGLOG-5		;SHIFT BACK TO FORM WORD ADDRESS
	HRLI P,-BTBSIZ		;MAKE AOBJN POINTER OVER WORDS OF BITS
	LSH FLP,SEGLOG		;MAKE AOBJN POINTER OVER CELLS
	HRLI FLP,(GH1SP6)
	JRST GH1SP1
;FXP HAS RUNNING FREELIST
;FLP HAS AOBJN POINTER OVER CELLS
;P HAS AOBJN POINTER OVER WORDS OF BITS
GCHSW1:
OFFSET -.
GH1SP1:	MOVE SP,(P)
GH1SP2:	JUMPGE SP,GH1SP4
	HRRZM FXP,(FLP)
	HRRZI FXP,(FLP)
GHCNT1:	AOJ .,0
GH1SP4:	ROT SP,1←HNKLOG
GH1SP5:	ADDI FLP,<1←HNKLOG>-1
	AOBJN FLP,GH1SP2
GH1SP6:	HRLI FLP,<-40>←-HNKLOG
	AOBJN P,GH1SP1
	JRST GCSW5
LPROGH==:.-1
OFFSET 0
.HKILL GH1SP1 GH1SP2 GHCNT1 GH1SP4 GH1SP5 GH1SP6

]		;END OF IFN HNKLOG+DBFLAG+CXFLAG
;GCSWH2 GCHSW2 GH2SP1 GHCNT2 GH2SP5 GH2SP7 LPROGK GCSWA GSARSWP GSSP0 GSSP1 GSSP2 GSSP7 GSSP8 GSCNT LPROG4

;;;	PDLS ARE UNSAFE

IFG HNKLOG-4,[
GCSWH2:	HRRZ P,GCWORN+NFF(SP)	;GET SIZE OF OBJECTS
	HRRI GH2SP5,(P)
	SUBI P,1
	LSH P,-5
	HRRI GH2SP7,(P)		;BITS PER BIT BLOCK WORD
	HRRZ P,GCWORN+NFF(SP)
	LSH P,-5
	MOVNI SP,BTBSIZ
	IDIVM SP,P
	HRLI P,(P)		;MAKE AOBJN POINTER OVER WORDS OF BITS
	MOVE SP,GCST(FLP)
	LSH SP,SEGLOG-5
	HRRI P,(SP)
	LSH FLP,SEGLOG		;MAKE POINTER OVER CELLS
	JRST GH2SP1
;FXP HAS RUNNING FREELIST
;FLP HAS AOBJN POINTER OVER CELLS
;P HAS AOBJN POINTER OVER WORDS OF BITS
GCHSW2:
OFFSET -.
GH2SP1:	SKIPL (P)		;ONLY THE SIGN BIT OF A MARK WORD IS USED
	 JRST GH2SP5
	HRRZM FXP,(FLP)
	HRRZI FXP,(FLP)
GHCNT2:	AOJ .,0
GH2SP5:	ADDI FLP,1←HNKLOG
GH2SP7:	ADDI P,<<1←HNKLOG>-1>←-5
	AOBJN P,GH2SP1
	JRST GCSW5
LPROGK==:.-1
OFFSET 0
.HKILL GH2SP1 GH2SP2 GHCNT2 GH2SP5 GH2SP7

]		;END OF IFG HNKLOG-4

GCSWA:	LSH FLP,SEGLOG
	HRLI FLP,-SEGSIZ/2
	JRST GSSP1

GSARSWP:			;SPECIAL SWEEPER FOR SARS
OFFSET -.
GSSP0:	ADDI FLP,1
GSSP1:
	TDNN GSSP7,TTSAR(FLP)	;TEST IF SAR MARKED (OR OTHERWISE NEEDED)
	 AOJA GSCNT,GSSP2	;NO, COUNT IT AS SWEPT
	ANDCAM GSSP8,TTSAR(FLP)	;YES, TURN OFF MARK BIT
	AOBJN FLP,GSSP0		; AND TRY NEXT ONE
	JRST GCSW5
GSSP2:	HRRZM FXP,ASAR(FLP)	;CHAIN INTO FREE LIST
	HRRZI FXP,ASAR(FLP)
	AOBJN FLP,GSSP0
	JRST GCSW5
GSSP7:	TTS<CN+GC>,,
GSSP8:	TTS<GC>,,
GSCNT:	0
LPROG4==:.-1
OFFSET 0
.HKILL GSSP0 GSSP1 GSSP2 GSSP7 GSSP8 GSCNT
;GCPNT GCPNT1 GCPNT2 GCPNT6

;;; PDLS ARE SAFE

SUBTTL	GC - MAKE SURE ENOUGH WAS RECLAIMED

GCPNT:	SKIPN GCGAGV
	 JRST GCE0
	SETZM GC99		;GC99 COUNTS ENTRIES PRINTED
	MOVNI F,NFF
GCPNT1:	HRRZ T,NFFS+NFF(F)
	SKIPN TT,SFSSIZ+NFF(F)
	 JRST GCPNT6
	SOSLE GC99
	 JRST GCPNT2
	STRT 17,[SIXBIT \↑M; !\]	;TERPRI-; EVERY THIRD ONE
	MOVEI D,3
	MOVEM D,GC99
GCPNT2:	PUSHJ P,STGPNT
	STRT 17,@GSTRT9+NFF(F)
	CAME F,XC-1			;COMMA AFTER EACH BUT LAST
	 STRT 17,[SIXBIT \, !\]
GCPNT6:	AOJL F,GCPNT1
	STRT 17,[SIXBIT \ WORDS FREE!\]

;FALLS THROUGH
;GCE0 GCE0C0 GCE0C1 GCE0C5 GCE0C2 GCE0C3 GCE0C9 GCE0C6 GCE0K3 GCE0C7 GCE0C4 GCE0K2 GCE0K1

;;;	PDLS ARE SAFE

SUBTTL	GC - CLEANUP AND TERMINATION

;FALLS IN

GCE0:	MOVNI F,NFF
GCE0C0:	MOVE AR2A,MFFS+NFF(F)
	TLNN AR2A,-1
	 JRST GCE0C1
	HRRZ AR1,SFSSIZ+NFF(F)
	FSC AR1,233		;FIXNUM TO FLONUM CONVERSION
	FMPR AR1,AR2A
	MULI AR1,400		;FLONUM TO FIXNUM CONVERSION
	ASH AR2A,-243(AR1)
GCE0C1:	SKIPGE FFS+NFF(F)
	 JRST GCE0C5
	CAIGE AR2A,MINCEL
	 MOVEI AR2A,MINCEL	;MUST SATISFY ABSOLUTE MIN OF<MINCEL> CELLS
GCE0C5:	MOVEM AR2A,ZFFS+NFF(F)
	HRRZ TT,NFFS+NFF(F)
	CAIGE TT,(AR2A)		;ALSO MUST SATISFY USER'S MIN
	 PUSHJ P,GCWORRY		;IF NOT, MUST WORRY ABOUT IT
GCE0C2:	AOJL F,GCE0C0
	MOVEI AR2A,1
	SKIPN FFY2
	 PUSHJ P,GRABWORRY	;REMEMBER, F IS ZERO HERE
	SKIPN FFY2
	 JRST GCLUZ
	MOVNI F,NFF		;IF WE RECLAIMED LESS THAN ABSOLUTE
GCE0C3:	HRRZ TT,NFFS+NFF(F)	; MINIMUM FOR ANY SPACE,
	SKIPGE FFS+NFF(F)
	 JRST GCE0C9
	CAIGE TT,MINCEL		; WE ARE OFFICIALLY DEAD
	 JRST GCLUZ
GCE0C9:	AOJL F,GCE0C3
	SKIPE PANICP
	 JRST GCE0C7
	MOVNI F,NFF	;NOW SEE IF WE EXCEEDED MAXIMUM
GCE0C6:	MOVE TT,SFSSIZ+NFF(F)
	CAMG TT,XFFS+NFF(F)
	 JRST GCE0K3
	HRLZ D,GCMES+NFF(F)
	HRRI D,1004		;GC-OVERFLOW
	PUSHJ P,UINT		;NOQUIT IS ON HERE, SO INTERRUPT GETS STACKED
GCE0K3:	AOJL F,GCE0C6
GCE0C7:	MOVNI F,NFF
GCE0C4:	MOVE TT,SFSSIZ+NFF(F)
	CAMG TT,XFFS+NFF(F)	;IF A SPACE LOST TO GC-OVERFLOW,
	 JRST GCE0K2		; DON'T MAKE IT LOSE FOR GC-LOSSAGE TOO
	MOVEM TT,XFFS+NFF(F)	;JUST QUIETLY UPDATE ITS GCMAX
	JRST GCE0K1

GCE0K2:	HRRZ T,NFFS+NFF(F)
	CAMGE T,ZFFS+NFF(F)
	 JRST GCLUZ
GCE0K1:	AOJL F,GCE0C4
IFN PAGING,[
	HRRZ TT,NOQUIT
	IOR TT,INHIBIT
	IOR TT,VNORET
	SKIPN TT
	PUSHJ P,RETSP
]		;END OF IFN PAGING
	SKIPE GCGAGV
	 STRT 17,STRTCR
;FALLS THROUGH
;GCE0E

;;; PDLS ARE SAFE

;FALLS IN

	SKIPN VGCDAEMON
	 JRST GCEND
	MOVEI C,NIL		;CONS UP ARG FOR GCDAEMON
	MOVEI D,NFF-1		;WE CHECKED LENGTH OF FREELISTS SO
	SETZ C,			; WE KNOW CONSES WON'T RE-INVOKE GC
GCE0E:	MOVE TT,SFSSIZ(D)	;SIZE OF SPACE AFTER GC
	PUSHJ P,CONS1FX
	MOVE TT,OFSSIZ(D)	;SIZE OF SPACE BEFORE GC
	PUSHJ P,CONSFX
	HRRZ TT,NFFS(D)		;LENGTH OF FREELIST AFTER GC
	CAIN D,FFX-FFS		;ALLOW FOR THE SPACE USED
	 SUBI TT,4*NFF		; TO CONS UP THE GC-DAEMON ARG
	CAIN D,FFS-FFS
	 SUBI TT,6*NFF
	PUSHJ P,CONSFX
	HLRZ TT,NFFS(D)		;LENGTH OF FREELIST BEFORE GC
	PUSHJ P,CONSFX
	HRRZ A,GCMES(D)		;NAME OF SPACE
	PUSHJ P,CONS
	MOVE B,C
	PUSHJ P,CONS
	MOVE C,A
	SOJGE D,GCE0E
	JSR GCRSR		.SEE GCRSR0
	HRLI A,1003		;GC-DAEMON
	PUSH P,A		;FOR INTERRUPT PROTECTION ONLY
	PUSH FXP,D
	MOVS D,A
	PUSHJ P,UINT
	POPI P,1		;FLUSH SLOT "FOR INTERRUPT PRO ONLY"
	MOVE D,(FXP)
	MOVEM F,(FXP)		;USE AC F BELOW, SINCE GCLUZ REQUIRES IT
	MOVNI F,NFF		;IF THE RUNNING OF THE GC-DAEMON ATE UP ALL 
	SKIPN FFS+NFF(F)	; OUR SPACE, THEN LOSE BADLY!
	 JRST GCLUZ0
	AOJL F,.-2
	POP FXP,F
	JRST POPAJ		;REMEMBER! GCRSR HAS STACKED A SAVED "A"

;GCEND GCRSR0

;;; GC MUST EITHER JRST TO GCEND, OR JSR TO GCRSR BEFORE EXITING.
;;; THIS ASSURES THAT GCTIM WILL PROPERLY REFLECT TIME SPENT IN GC.
;;; THE VALUE IN GCTIM IS IN "HOST MACHINE UNITS".
;;; THESE ARE CONVERTED BEFORE BEING RETURNED TO THE USER.
.SEE SGCTIM

GCEND:
IFN D20,[
	MOVEI 1,.FHSLF
	RUNTM			;UPDATE GCTIM FOR D20
IFN WHL,	MOVEM 1,GC98
	SUB 1,GCTM1
	ADDM 1,GCTIM
]		;END OF IFN D20
	MOVE P,GCNASV+14-<NACS+1>
	MOVE SP,GCNASV+17-<NACS+1>
	PUSHJ P,UNBIND
	JSP NACS+1,GCACR
	SETZM GCFXP
IFE D20,[
IT$	.SUSET [.RRUNT,,NACS+1]
10$	SETZ NACS+1,
10$	RUNTIM NACS+1,
IFN WHL,	MOVEM NACS+1,GC98
	SUB NACS+1,GCTM1
	ADDM NACS+1,GCTIM	;UPDATE GCTIME FOR (STATUS GCTIME)
]	;END OF IFE D20
IFN WHL,[
	SKIPE NACS+1,GCWHO
	PUSHJ P,GCWHR
]		;END OF IFN WHL
	MOVE NACS+1,GCNASV
	HRRZS NOQUIT
	JRST CHECKI

;GCRSR:	0
GCRSR0:	HRLM C,NOQUIT		;RESTORE ACS, AND CHECK FOR ANY STACKED INTERRUPTS
IFN D20,[
	MOVEI 1,.FHSLF
	RUNTM			;UPDATE GCTIM FOR D20
IFN WHL,	MOVEM 1,GC98
	SUB 1,GCTM1
	ADDM 1,GCTIM
]		;END OF IFN D20
	MOVE P,GCNASV+14-<NACS+1>
	MOVE SP,GCNASV+17-<NACS+1>
	PUSHJ P,UNBIND
	JSP NACS+1,GCACR	;RESTORE AC'S
	SETZM GCFXP
IT$	.SUSET [.RRUNT,,NACS+1]
10$	SETZ NACS+1,
10$	RUNTIM NACS+1,
IFN WHL*<ITS+D10>,	MOVEM NACS+1,GC98
	SUB NACS+1,GCTM1
	ADDM NACS+1,GCTIM	;UPDATE GCTIME FOR (STATUS GCTIME)
IFN WHL,[
	SKIPE NACS+1,GCWHO
	PUSHJ P,GCWHR
]		;END OF IFN WHL
	MOVE NACS+1,GCNASV
	PUSH P,A
	HLRZ A,NOQUIT
	PUSH P,GCRSR
	HRRZS NOQUIT
	JRST CHECKI
;GCINBT GCINB0 GCWHR GCWHR8 GCWHR2 GCWHR9

;;; ROUTINE TO INIT MARK BITS FOR LIST, FIXNUM, FLONUM, HUNK,
;;; AND BIGNUM SPACES. INIT BITS IN TT, RETURN ADDRESS IN F.

GCINBT:	MOVEM TT,BBITSG
	MOVE AR2A,[BBITSG,,BBITSG+1]
	BLT AR2A,@MAINBITBLT	;BLT OUT MAIN BIT AREA
	MOVE A,BTSGLK		;INITIALIZE ALL BIT BLOCKS
GCINB0:	JUMPE A,(F)
	MOVEI AR2A,(A)
	LSH AR2A,SEGLOG		;GET ADDRESS OF SEGMENT
	HRLI AR2A,(AR2A)
	MOVEM TT,(AR2A)
	AOJ AR2A,
	MOVE T,GCST(A)		;GET END ADDRESS FOR BLT
	LSH T,SEGLOG-5
	TLZ T,-1
	CAIE T,(AR2A)
	 BLT AR2A,-1(T)		;***BLT!***
	LDB A,[SEGBYT,,GCST(A)]
	JRST GCINB0

IFN WHL,[
GCWHR:	TRNN NACS+1,2		;SKIP IF GC STATISTICS DESIRED
	 JRST GCWHR2
	MOVE NACS+2,GCTIM
	IDIVI NACS+2,25000./4	;GC TIME IN FORTIETHS OF A SECOND
	MOVEM NACS+2,GCWHO2
	MOVE NACS+2,GCTIM	;GC TIME
	IMULI NACS+2,100.	; TIMES 100.
	IDIV NACS+2,GC98	; DIVIDED BY TOTAL RUNTIME
	HRLM NACS+2,GCWHO2	; EQUALS GC TIME PERCENTAGE
	TRNE NACS+1,1
	 JRST GCWHR2
	.SUSET [.SWHO2,,GCWHO2]	;JUST SET .WHO2 IF WHO VARS NOT PREVIOUSLY SAVED
GCWHR8:	MOVE NACS+2,GCNASV+1	;RESTORE ACS
	MOVE NACS+3,GCNASV+2
	POPJ P,

GCWHR2:	MOVE NACS+2,[-3,,GCWHR9]	;RESTORE WHO VARS, POSSIBLY WITH
	.SUSET NACS+2			; GC STATISTICS CLOBBERED INTO GCWHO2
	JRST GCWHR8

GCWHR9:	.SWHO1,,GCWHO1
	.SWHO2,,GCWHO2
	.SWHO3,,GCWHO3
]		;IFN WHL
;GCACRS GCACR $GCMKAR GCMKAR GCMKA1 GCGEN GCP8A GCP8A1

SUBTTL	MISCELLANEOUS GC UTILITY ROUTINES

GCACRS:	MOVE SP,GCNASV+17-<NACS+1>	;RESTORE SP ALSO
GCACR:	SKIPN GCFXP
	 MOVEM FXP,GCFXP
	MOVE NIL,[GCACSAV+1,,1]	;RESTORE ALL ACS EXCEPT NACS+1
	BLT NIL,NACS
	MOVE NIL,[GCNASV+1,,NACS+2]
	BLT NIL,FXP
	MOVE NIL,GCACSAV
	SETZM GCFXP		.SEE CHNINT	;ETC.
	JRST (NACS+1)


$GCMKAR:	MOVE D,ASAR(A)
GCMKAR:	MOVE F,TTSAR(A)
	SKIPL D,-1(D)	;MARK FROM ARRAY ENTRIES.
	JRST (TT)
GCMKA1:	HLRZ A,(D)
	JSP T,GCMARK
	HRRZ A,(D)
	JSP T,GCMARK
	AOBJN D,GCMKA1
	JUMPE F,(TT)
	TLNE F,TTS<TY>
	TLNE F,TTS<IO>
	JRST (TT)
	MOVEI D,FB.BUF(F)	;FOR TTY INPUT FILE ARRAYS,
	HRLI D,-NASCII/2	; MUST MARK INTERRUPT FUNCTIONS
	SETZ F,
	JRST GCMKA1

;;; GCGEN GENERATES NON-NULL BUCKETS OF THE CURRENT OBARRAY
;;; AND APPLIES A GIVEN FUNCTION TO THEM. IT IS CALLED AS
;;;		JSP R,GCGEN
;;;		   FOO
;;; GCGEN WILL EFFECTIVELY DO A  JRST FOO  MANY TIMES,
;;; PASSING SOME NON-NULL OBARRAY BUCKET THROUGH ACCUMULATOR D.
;;; FOO IS EXPECTED TO RETURN BY DOING A  JRST GCP8A.
;;; WHEN DONE, GCGEN RETURNS, SKIPPING OVER THE ADDRESS FOO.

GCGEN:	MOVE F,@VOBARRAY	.SEE ASAR
	MOVE F,-1(F)
	SUB F,R70+1
	TLZ R,400000
GCP8A:	TLCE R,400000
	JRST GCP8A1
	AOBJP F,1(R)	;EXIT
	HLRZ D,(F)
	JUMPN D,@(R)
	JRST GCP8A
GCP8A1:	HRRZ D,(F)
	JUMPN D,@(R)
	JRST GCP8A

;GCMARK GCMRK0 GCMRK3 GCMRK6 GCMRK7 GCMRK4 GCMRK5 GCMKND GCMRK8 GCMRK1 GCMRK2 GCMK2A GCMK2B GCHNLN

;;; MARK AN S-EXPRESSION GIVEN IN A. TRACES IT COMPLETELY,
;;; MARKING ALL SUBITEMS BY SETTING A MARK BIT TO **ZERO**
;;; FOR LIST, FIXNUM, FLONUM, AND BIGNUM SPACES, AND TO
;;; **ONE** FOR SYMBOLS AND SARS. (THIS SPEEDS UP SWEEPING.)
;;; NEVER MARKS VALUE CELLS!!!! (THEY ARE NEVER SWEPT.)
;;; CALLED BY JSP T,GCMARK WITH OBJECT IN A. USES A,B,C,AR1,AR2A.

GCMARK:	JUMPE A,(T)		;NEEDN'T MARK NIL
	MOVEI AR2A,(P)		;REMEMBER WHERE P IS
GCMRK0:	JRST GCMRK1	.SEE KLINIT

GCMRK3:	TLNN A,GCBSYM		;MAYBE WE FOUND A SYMBOL
	 JRST GCMRK4		;NOPE
	HLRZ AR1,(C)		;YUP
	TROE AR1,1
	 JRST GCMKND
	HRLM AR1,(C)
	PUSH P,(C)		;PUSH PROPERTY LIST
	PUSH P,(AR1)		;PUSH PNAME LIST
	SKIPE ETVCFLSP		;A HAC TO SAVE TIME IF THERE NEVER HAVE BEEN
	 JRST GCMRK6		; VALUE CELLS TAKEN FROM LIST SPACE
	HRRZ A,@-1(AR1)
	JRST GCMRK1		;GO MARK VALUE OF SYMBOL

GCMRK6:	HRRZ A,-1(AR1)
	CAIGE A,EVCSG
	 CAIGE A,BVCSG
	  JRST GCMRK7
	HRRZ A,(A)
	CAIE A,QUNBOUND
	 JRST GCMRK1
	JRST GCMRK8

GCMRK7:	LSH A,-SEGLOG
	SKIPL A,GCST(A)		;SKIP IF VALUE CELL NOT A LIST CELL??
	 JRST GCMKND		;SUNBOUND, FOR EXAMPLE????
	HRRZ A,-1(AR1)		;POINTING TO A VC IN LIST SPACE
	JRST GCMRK1

GCMRK4:	TLNN A,GCBVC		;MAYBE WE FOUND A VALUE CELL
	 JRST GCMRK5		;NOPE
	HRRZ A,(C)		;YUP - MARK ITS CDR (THE VALUE)
	JRST GCMRK1

GCMRK5:	MOVSI AR1,TTS<GC>	;MUST BE AN ARRAY
	IORM AR1,TTSAR(C)	;SET ARRAY MARK BIT TO 1
GCMKND:	CAIN AR2A,(P)		;SKIP IF ANYTHING LEFT ON STACK TO MARK
	 JRST (T)		;ELSE RETURN
GCMRK8:	POP P,A			;GET NEXT ITEM TO MARK
GCMRK1:	HRRZS C,A		;ZERO LEFT HALF OF A, ALSO SAVE IN C
	SETZ B,
	LSHC A,-SEGLOG		;GET PAGE NUMBER OF ITEM (OTHER BITS GO INTO B)
	SKIPL A,GCST(A)		;CHECK GCST ENTRY FOR THAT PAGE
	 JRST GCMKND		;NOT MARKABLE - IGNORE IT
	TLNE A,GCBFOO		;MAYBE IT'S A VALUE CELL OR SYMBOL OR SAR
	 JRST GCMRK3		;IF SO HANDLE IT SPECIALLY
	LSHC A,SEGLOG-5		;THIS GETS ADDRESS OF BIT WORD FOR THIS ITEM
	ROT B,5			;B TELLS US WHICH BIT (40/WD)
	MOVE AR1,(A)		;GET WORD OF MARK BITS
	TDZN AR1,GCBT(B)	;CLEAR THE ONE PARTICULAR BIT
	 JRST GCMKND		;QUIT IF ITEM ALREADY MARKED
	MOVEM AR1,(A)		;ELSE SAVE BACK WORD OF BITS
	JUMPGE A,GCMKND	.SEE GCBCDR	;JUMP UNLESS MUST MARK THROUGH (REMEMBER THE LSHC)
	HRR A,(C)		;GET CDR OF ITEM
	TLNN A,GCBCAR←<SEGLOG-5> ;MAYBE WE ALSO WANT TO MARK THE CAR
	 JRST GCMRK1		;NO - GO MARK CDR
	PUSH P,A		;YES - SAVE CDR ON STACK
	HLR A,(C)		;GET CAR OF ITEM AND GO MARK IT
IFE HNKLOG, 	JRST GCMRK1
IFN HNKLOG,[
	TLNN A,GCBHNK←<SEGLOG-5>
	 JRST GCMRK1		;ORDINARY LIST CELL
	PUSH P,T		;FOR HUNK, SAVE T AND AR2A SO
	HRLM AR2A,(P)		; CAN CALL GCMARK RECURSIVELY
	MOVEI A,(C)
	LSH A,-SEGLOG
	HRRZ A,ST(A)		;GET TYPEP OF HUNK
   2DIF [HRL C,(A)]GCHNLN,QHUNK0	;C NOW HAS AOBJN POINTER
	MOVEI AR2A,(P)		;SET UP AR2A FOR RECURSIVE GCMARK
GCMRK2:	MOVEM C,-1(P)		;SAVE AOBJN POINTER IN SLOT PUSHED FOR CDR
	HLRZ A,(C)
	JUMPE A,GCMK2A
	JSP T,GCMRK1		;MARK ODD HUNK SLOT
	MOVE C,-1(P)
GCMK2A:	HRRZ A,(C)
	JUMPE A,GCMK2B
	JSP T,GCMRK1		;MARK EVEN HUNK SLOT
	MOVE C,-1(P)
GCMK2B:	AOBJN C,GCMRK2
	POP P,T			;RESTORE T AND AR2A
	HLRZ AR2A,T
	SUB P,R70+1		;FLUSH AOBJN POINTER
	JRST GCMKND

GCHNLN:	-1
	REPEAT HNKLOG, -<2←.RPCNT>	;LH'S FOR AOBJN POINTERS
]		;END OF IFN HNKLOG
;LSPGCM LSPGCS KLGCVC KLGCM1 KLGCND KLGCM2 KLGCSY KLGCSA ZZZ ZZZ KLGCSW KLGS1 KLGS1A KLGS1D

COMMENT |	ONE OF THESE DAYS I'LL DEBUG THE MICROCODE FOR THIS - GLS

IFN ITS,[ IFE SEGLOG-11,[ IFLE HNKLOG-5,[
;;; MARK ROUTINE FOR USE WITH KL-10 MICROCODE

LSPGCM=:070000,,
LSPGCS=:071000,,

KLGCVC:	SKIPA A,(A)
	 PUSH P,B
KLGCM1:	LSPGCM A,KLGCM2
KLGCND:	CAIN AR2A,(P)
	 JRST (T)
	POP P,A
	JRST KLGCM1

KLGCM2:	JRST KLGCSY
	JRST KLGCVC
	JRST KLGCSA
REPEAT HNKLOG, JRST CONC KLGH,\.RPCNT+1
REPEAT 8-.+KLGCM2, .VALUE

KLGCSY:	HLRZ AR1,(A)
	TROE AR1,1
	 JRST KLGCND
	HRLM AR1,(A)
	PUSH P,(A)
	PUSH P,(AR1)
	HRRZ A,@-1(AR1)
	JRST KLGCM1

KLGCSA:	MOVSI AR1,TTS<GC>
	IORM AR1,TTSAR(A)
	JRST KLGCND

IFN HNKLOG,[
ZZZ==<1←HNKLOG>-1
REPEAT HNKLOG,[
CONC KLGH,\HNKLOG-.RPCNT,:
REPEAT 1←<HNKLOG-.RPCNT-1>,[
	PUSH P,ZZZ(A)
	HLRZ B,(P)
	PUSH P,B
ZZZ==ZZZ-1
]		;END OF REPEAT 1←<HNKLOG-.RPCNT-1>
]		;END OF REPEAT HNKLOG
IFN ZZZ, WARN [YOU LOSE]
	PUSH P,(A)
	HLRZ A,(A)
	JRST KLGCM1
]		;END OF IFN HNKLOG


KLGCSW:	MOVNI T,3+BIGNUM		;SWEEP
KLGS1:	SETZB C,AR1			;ZERO FREELIST AND COUNT
	SKIPN TT,FSSGLK+3+BIGNUM(T)
	 JRST KLGS1D
KLGS1A:	MOVE B,GCST(TT)
	LSH B,SEGLOG-5
	TLZ B,-1
	MOVEI A,(TT)
	LSH A,SEGLOG
	HRLI A,-SEGSIZ
	LSPGCS A,1
	LDB TT,[SEGBYT,,GCST(TT)]
	JUMPN TT,KLGS1A
KLGS1D:	MOVEM C,FFS+3+BIGNUM(T)
	HRRM AR1,NFFS+3+BIGNUM(T)
	AOJL T,KLGS1
	JRST GCSW4A

]]]		;END OF IFLE HNKLOG-5, IFE SEGLOG-11, IFN ITS

|		;END OF COMMENT
;GSGEN RTSPC2 RTSP2A GGEN2 GGEN1 GFSPC GTSP5A BPSGC BPSGX

GSGEN:	SKIPN AR2A,GCMKL	;GENERATE TAILS OF GCMKL AND APPLY 
	POPJ P,			;FUN IN AR1 TO THEM
	PUSH P,AR1
	MOVEI AR1,GCMKL
	JRST GGEN1

RTSPC2:	JUMPE A,GGEN2
RTSP2A:	ADD D,TT
GGEN2:	HRRZ AR2A,(AR2A)	;GENERAL LOOP FOR GSGEN
	MOVEI AR1,(AR2A)
	HRRZ AR2A,(AR2A)
GGEN1:	JUMPE AR2A,POP1J	;TAIL OF GCMKL IN AR2A,
	HRRZ A,(AR2A)		;SPACE OCCUPIED IN TT,
	HLRZ A,(A)		;ALIVEP IN A
	MOVE TT,(A)
	HLRZ A,(AR2A)
	HLRZ A,ASAR(A)
	JRST @(P)	;ROUTINE WILL RETURN TO GGEN2


GFSPC:	PUSH FXP,AR1
	PUSHJ P,CNLAC	;COUNT NUMBER OF LIVING ARRAY CELLS
	POP FXP,AR1
	ADD D,@VBPORG	;NOW HAS TOTAL AMOUNT FREE IN BPS [COUNTING DEAD BLOCKS]
	ADD D,GAMNT	;NOW DIMINISHED BY REQUESTED AMOUNT
	CAMG D,BPSH
	JRST GRELAR	;IF ENOUGH SPACE, THEN RELOCATE
	JRST (R)

IFN PAGING,[
GTSP5A:	SETZB A,TT		;GIVE OUT NIL AND 0 IF FAIL
	JUMPLE AR1,CZECHI
	PUSHJ P,BPSGC
	JSP R,GFSPC
	SETZ AR1,
	JRST GTSP1B
]		;END OF IFN PAGING

BPSGC:	PUSH FXP,NOQUIT		;SAVE CURRENT STATE OF FLAG
	HLLZS NOQUIT		;FORCE OFF RIGHT HALFWORD
	PUSH P,[444444,,BPSGX]	;MAGIC NUMBER,,RETURN ADR
	JRST AGC
BPSGX:	POP FXP,NOQUIT		;RESTORE OLD SETTING OF FLAGS
	POPJ P,
;GCP8K GCP8J GCP8I GCP8G GCP8C GCP8B GCP8D GCP8H GCP8L GCP8L5 TWAP

;;; SOME ROUTINES FOR USE WITH GSGEN

GCP8K:	HLRZ A,(D)
	JSP T,GCMARK
GCP8J:	HRRZ D,(D)	;MARK ATOMS ON OBLIST
GCP8I:	JUMPE D,GCP8A	;WHICH HAVE NON-TRIVIAL
	MOVE A,D	;P-LIST STRUCTURE.
	JSP T,TWAP
	JRST GCP8J
	JRST GCP8K
	JRST GCP8J

GCP8G:	JUMPE D,GCP8A	;REMOVE T.W.A.'S FROM
	MOVE A,D	;BUCKETS OF OBLIST.
	JSP T,TWAP
	JRST GCP8B
	JRST GCP8B
	HRRZ D,(D)
	TLNE R,400000	;BUCKET COMES FROM LH OF WORD IN OBARRAY
	HRLM D,(F)	;IF AT THIS POINT R < 0
	TLNN R,400000
	HRRM D,(F)
	JSP T,GCP8L
	JRST GCP8G
GCP8C:	HRRZ D,(D)
GCP8B:	HRRZ A,(D)
GCP8D:	JUMPE A,GCP8A
	JSP T,TWAP
	JRST GCP8C
	JRST GCP8C
	HRRZ A,(D)
	HRRZ A,(A)
	HRRM A,(D)
	JSP T,GCP8L
	JRST GCP8B

GCP8H:	MOVE A,D	;MARK OBLIST BUCKET
	JSP T,GCMARK
	JRST GCP8A

GCP8L:	JUMPE TT,(T)	;IF SCO REMOB'D, THEN REMOVE FROM SCO TABLE
	HRRZ A,(TT)
	JUMPN A,(T)
	HLRZ A,(TT)
	MOVE B,(A)	;MUST NOT BE INTERRUPTIBLE HERE
	MOVEI A,0
	LSHC A,7
	JUMPN B,(T)
	HRRZ TT,VOBARRAY
	HRRZ TT,TTSAR(TT)
	ADDI TT,<OBTSIZ+1>/2
	ROT A,-1
	ADD TT,A
	JUMPL TT,GCP8L5
	HRRZS (TT)
	JRST (T)
GCP8L5:	HLLZS (TT)
	JRST (T)

TWAP:	HLRZ A,(A)
	JUMPE A,(T)		;NIL IS ALREADY MARKED
	HLRZ TT,(A)
	TRZE TT,1
	 JRST (T)		;NO SKIP IF ALREADY MARKED
	MOVE B,SYMVC(TT)
	MOVE TT,SYMARGS(TT)
	TLNN B,SY.CCN\SY.PUR	;SKIP 1 IF SYMBOL HAS SOME NON-TRIVIAL
	 TLZE TT,-1		;PROPERTIES:  ARGS OR COMPILED CODE REFERENCE
	  JRST 1(T)
	HRRZ B,(B)
	HRRZ A,(A)
	CAIN B,QUNBOUND
	 JUMPE A,2(T)		;SKIP 2 IF TRULY WORTHLESS SYMBOL,
				; I.E., UNBOUND AND NO PROPERITES
	JRST 1(T)		;SKIP 1 IF MEANINGFUL PROPERTIES OR VALUE
;STGPNT GCBT

;;; PRINT MESSAGE OF FORM "NNN[MM%] " FOR GC STATISTICS OUTPUT

STGPNT:	PUSH FXP,F		;NEED TO SAVE F (IN CASE OF IFORCE)
	PUSH FXP,T		;RECLAIMED AMNT IN T, TOTAL FOR SPACE IN TT
	IMULI T,100.
	IDIVM T,TT
	EXCH TT,(FXP)
	HRRZ AR1,VMSGFILES
	TLO AR1,200000
	MOVEI R,$TYO
IFE USELESS,	MOVE C,@VBASE	;BASE HAD DAMNED WELL BETTER BE A FIXNUM
IFN USELESS,[
	HRRZ C,VBASE
	CAIE C,QROMAN
	 SKIPA C,(C)
	  PUSHJ P,PROMAN		;SKIPS
]		;END OF IFN USELESS
	   PUSHJ P,PRINI2
	STRT 17,[SIXBIT \[!\]	;BEWARE THESE BRACKETS!!!!!
	POP FXP,TT
IFE USELESS,	MOVEI C,10.
IFN USELESS,[
	HRRZ C,VBASE
	CAIE C,QROMAN
	 SKIPA C,[10.]
	  PUSHJ P,PROMAN
]		;END OF IFN USELESS
	   PUSHJ P,PRINI3	;EFFECTIVELY, PRINI2 WITH *NOPOINT=T
	STRT 17,[SIXBIT \%] !\]	;BEWARE THESE BRACKETS!!!!!
	POP FXP,F
	POPJ P,


;;; VERY IMPORTANT TABLE OF WORDS WITH SINGLE BITS!!! USED FOR MARKING!!!
GCBT:	REPEAT 36., SETZ←-.RPCNT
;RETSP RTSP2 RTSP7 RTSP9 RTSP5 RTSPC1

IFN PAGING,[

SUBTTL	RETURN CORE TO TIMESHARING SYSTEM

;;; HAIRY ROUTINE TO DECIDE WHETHER TO RETURN SOME BPS TO THE SYSTEM.
;;; MAY ONLY BE CALLED WHEN NOQUIT SPECIFIES NO INTERRUPTS.

RETSP:
10$	POPJ P,			;NOOP ON D10'S RUNNING PAGING LISP
IFE D10,[
	MOVEI TT,4		;GTSPC1 IS ALLOWED TO GRAB 4 PAGES
	MOVEM TT,ARPGCT		; BEFORE INVOKING GC FOR LACK OF CORE
	PUSHJ P,CNLAC		;COUNT NUMBER OF LIVING ARRAY CELLS
	MOVE TT,BPSH
	LSH TT,-PAGLOG		;CURRENT HIGHEST CORE BLOCK IN BPS
	MOVE R,@VBPORG
	ADDI R,1(D)
	LSH R,-PAGLOG		;CORE NEEDED IF ARRAYS WERE PACKED
	CAML R,TT
	POPJ P,
	LSH R,PAGLOG
	ADDI R,PAGSIZ-1
	HRLM R,RTSP1		;NEW BPSH
	SUB R,D
	HRRM R,RTSP3		;NEW BPEND
	JUMPE D,RTSP5
	HRLM D,RTSP3		;NUMBER OF CELLS TO MOVE
	PUSHJ P,GRELAR		;GRELAR LEAVES BPEND-AFTER-RELOCATION IN TT
	HRL AR1,TT
	HRR AR1,RTSP3		;BLOCK PTR
	SUBI TT,(AR1)
	JUMPLE TT,RTSP2
	MOVNI TT,1(TT)
	HRRM TT,RTSP1
	ADD AR1,R70+1
	HLRZ C,RTSP3
	ADD C,RTSP3
	BLT AR1,(C)
	MOVEI AR1,RTSPC1
	PUSHJ P,GSGEN		;DO PATCH-UP ON ARRAY PARAMETERS
	JSP T,RSXST		;????
RTSP2:	HLRZ TT,RTSP1
	MOVE R,TT
	EXCH R,BPSH
	HRRZ D,RTSP3
	MOVEM D,@VBPEND
	LSH R,-PAGLOG		;OLD CORE HIGHEST
	LSH TT,-PAGLOG		;NEW CORE HIGHEST
	MOVEI F,1(TT)		;MAKE UP A POINTER INTO THE PURTBL
	ROT F,-4
	ADDI F,(F)
	ROT F,-1
	TLC F,770000
	ADD F,[450200,,PURTBL]
IT$	SUBM TT,R		;FOR ITS, MINUS THE NUMBER OF PAGES TO HACK
20$	SUBI R,(TT)		;FOR D20, THE POSITIVE NUMBER OF PAGES TO HACK
	AOS D,TT
IFN ITS,[
	HRLI TT,(R)		;-<NUMBER OF PAGES>,,<INITIAL PAGE NUMBER>
	.CALL RTSP9		;FLUSH THE PAGES
	 .LOSE 1000
]		;END OF IFN ITS
IFN D20,[
	SETO 1,			;-1 MEANS DELETE PAGES
	MOVSI 2,.FHSLF		;FROM SELF
	HRRI 2,(TT)		;INITIAL PAGE NUMBER
	MOVEI 3,(R)		;NUMBER OF PAGES
	TLO 3,PM%CNT		;SET ITERATION BIT
	PMAP
]		;END OF IFN D20
	LSH D,-SEGLOG+PAGLOG
	MOVE T,[$NXM,,QRANDOM]	;STANDARD ST ENTRY FOR A FLUSHED PAGE
RTSP7:	TLNN F,730000
	 TLZ F,770000
	IDPB NIL,F		;UPDATE PURTBL ENTRY FOR ONE PAGE
REPEAT SGS%PG,	MOVEM T,ST+.RPCNT(D)	;UPDATE ST ENTRIES
	ADDI D,SGS%PG
IT$	AOJL R,RTSP7
20$	SOJG R,RTSP7
	POPJ P,

IFN ITS,[
RTSP9:	SETZ
	SIXBIT \CORBLK\		;HACK PAGE MAP
	  1000,,0		;DELETE PAGES
	  1000,,%JSELF		;FROM CURRENT JOB
	400000,,TT		;AOBJN POINTER: -<COUNT>,,<PAGE NUMBER>
]		;END OF IFN ITS

RTSP5:	SETZM GCMKL	;NO ARRAYS ALIVE
	MOVE TT,R
	PUSHJ P,BPNDST	;SETQ UP BPEND
	JRST RTSP2

RTSPC1:	JUMPE A,GGEN2
	HRRE B,RTSP1	;-<SIZE OF SHIFT + 1>
	JSP AR1,GT3D
	JRST GGEN2

]	;END IFE D10
]		;END OF IFN PAGING
;GTSPC1 GTSP1B GTSPC8 GTSPC2 GRELAR GREL1 CZECHI GTSPC8

SUBTTL	GET SPACE FROM TIMESHARING SYSTEM

GTSPC1:	HLLOS NOQUIT
	JSP R,GFSPC		;SEE IF FREE SPACE ABOVE BPEND WILL ADD ENOUGH
IFN PAGING,[
	SKIPLE AR1,ARPGCT
	 JRST GTSP1B
]		;END OF IFN PAGING
	PUSHJ P,BPSGC		;WHEN COMPACTIFIED AND RELOCATED
	JSP R,GFSPC		;IF NOT, GC AND TRY AGAIN
GTSP1B:
IFE PAGING,[
	SETZB A,TT		;GIVE OUT NIL AND 0 IF WE FAIL
	JRST CZECHI
]		;END OF IFE PAGING
IFN PAGING,[
	CAML D,HINXM
	 JRST GTSP5A
	MOVEI T,(D)
	TRO T,PAGSIZ-1
	MOVE R,BPSH
	LSH D,-PAGLOG
	LSH R,-PAGLOG
	SUBM R,D		;NEGATIVE OF NUMBER OF PAGES TO GET
	ADDM F,ARPGCT
	MOVEI F,1(R)		;SET UP BYTE POINTER INTO PURTBL
	ROT F,-4
	ADDI F,(F)
	ROT F,-1
	TLC F,770000
	ADD F,[450200,,PURTBL]
	MOVEI TT,1(R)
	LSH TT,-SEGLOG+PAGLOG
	HLRZ AR1,(P)		;BEWARE! LH OF CALLING PDL SLOT = -1
	TRNN AR1,1		; MEANS THE GETSP FUNCTION IS CALLING
	 TROA AR1,3
	  MOVEI AR1,1
IFN ITS,[
	HRLI R,(D)
	HRRI R,1(R)
	.CALL GTSPC8
	 .LOSE 1000
]		;END OF IFN ITS
IFN D20,[
	PUSH P,D		;SAVE NEGATIVE COUNT
	PUSH P,R		;AND SAVE CURRENT PAGE NUMBER
GTSPC8:	AOS R,(P)		;GET NEXT PAGE NUMBER
	LSH R,PAGLOG		;TURN INTO POINTER TO PAGE
	SETMM (R)		;CREATE THE PAGE
	MOVSI 1,.FHSLF		;OUR PROCESS
	HRR 1,(P)		;CURRENT PAGE NUMBER
	MOVSI 2,(PA%RD\PA%WT\PA%EX) ;READ, WRITE, EXECUTE
	SPACS			;SET THEPAGE ACCESS
	AOJL D,GTSPC8
	POP P,R
	POP P,D
]		;END OF IFN D20
	MOVE A,[$XM,,QRANDOM]
GTSPC2:	TLNN F,730000
	 TLZ F,770000
	IDPB AR1,F		;UPDATE PURTBL ENTRY
REPEAT SGS%PG,	MOVEM A,ST+.RPCNT(TT)	;UPDATE ST ENTRIES
	ADDI TT,SGS%PG
	AOJL D,GTSPC2
	MOVEM T,BPSH		;FALLS INTO GRELAR
]		;END OF IFN PAGING
GRELAR:	HLLOS NOQUIT	;MOBY DELAYED QUIT FEATURE.
	HRRZ A,BPSH	;LEAVE BPEND-AFTER-RELOCATION AS RESULT
	MOVEM A,GSBPN	;TEMPORARY BPEND
	MOVEI AR1,GTSPC3
	PUSHJ P,GSGEN	;RELOCATE ARRAYS
	JSP T,RSXST
GREL1:	MOVE TT,GSBPN
	PUSHJ P,BPNDST
	MOVE TT,(A)
CZECHI:	HLLZS NOQUIT
	JRST CHECKI	;CHECK FOR ↑G THEN POPJ P,

IFN ITS,[
GTSPC8:	SETZ
	SIXBIT \CORBLK\		;HACK PAGE MAP
	  1000,,%CBNDR+%CBNDW	;NEED READ AND WRITE ACCESS
	  1000,,%JSELF		;FOR MYSELF
	      ,,R		;AOBJN POINTER: -<COUNT>,,<PAGE NUMBER>
	401000,,%JSNEW		;WANT FRESH PAGES
]		;END OF IFN ITS
;CNLAC BPNDST GTSPC3 GT3Z GT3H GT3B GT3A GT3C GT3D GT3D2 GT3D4 GT3G

SUBTTL	ARRAY RELOCATOR

CNLAC:	MOVEI D,0		;COUNT NUMBER OF LIVING ARRAY CELLS, IN D
	MOVEI AR1,RTSPC2
	JRST GSGEN

BPNDST:	JSP T,FIX1A		;STORE NEW VALUE FOR BPEND
	MOVEM A,VBPEND
	POPJ P,

;;; COMES HERE FROM GRELAR VIA GSGEN.  AR2A HAS TAIL OF GCMKL, TT HAS TOTAL LENGTH OF ARRAY
GTSPC3:	JUMPE A,GT3G		;RELOCATE AN ARRAY
	MOVEI AR1,-1(TT)	;LENGTH-1 OF ARRAY IN AR1
	HLRZ F,(AR2A)
	HRRZ A,ASAR(F)
	SUBI A,1		;ARRAY AOBJN PTR LOC IN A.
	MOVE C,GSBPN
	SUBI C,(AR1)
	MOVEM C,GSBPN		;LOC NEW BPTR IN C
	MOVEI B,(C)
	SUBI B,1(A)		;RELOCATION AMOUNT-1 IN B
	CAML A,C		;IS ARRAY ALREADY IN PLACE?
	 JRST GT3C		;YES, SO EXIT
IFN D10,[
	MOVE R,ASAR(F)
	MOVE F,TTSAR(F)
	TLNN R,AS.FIL		;IF THE ARRAY IS A FILE OBJECT,
	 JRST GT3H		; IS NOT CLOSED, AND HAS BUFFERS,
	TLNN F,TTS.CL		; THEN WE MUST LET THE I/O COMPLETE
	 SKIPGE F.MODE(F)	.SEE FBT.CM
	  JRST GT3H
IFE SAIL,[
	TLNN F,TTS.IO		;OUTPUT?
	 JRST GT3Z		;NOPE, JUST WAIT
	MOVE T,F.CHAN(F)	;GET CHANNEL NUMBER
	LSH T,27
	TLO T,(OUTPUT)		;FLUSH ALL OUTPUT BUFFERS
	XCT T
]	;END IFE SAIL
GT3Z:	MOVE F,F.CHAN(F)
	LSH F,27
	IOR F,[WAIT 0,]		;WAIT FOR THE I/O TO SETTLE DOWN
	XCT F			; SO WE CAN RELOCATE THE BUFFERS
GT3H:
]		;END OF IFN D10
	SUBI C,(AR1)
	CAMGE A,C		;BEWARE: C COULD GO NEGATIVE!
	 JRST GT3A		;GOOD, EASY BLT
	ADDI C,(AR1)
	ADDI AR1,1(A)		;FIRST DESTINATION LOC
GT3B:	HRRZI C,(AR1)
	SUBI AR1,1(B)		;CONSTRUCT SOURCE ADDRESS
	HRLI C,(AR1)
	HRRZI T,(C)
	ADDI T,(B)
	BLT C,(T)		;SERIES OF SMALL BLTS
	CAMLE AR1,GSBPN
	 JRST GT3B
	ADDI AR1,(B)
	SUB AR1,GSBPN
	MOVE A,GSBPN
	SUBI A,1(B)
GT3A:	MOVE C,GSBPN
	ADDI AR1,(C)
	HRL C,A
	BLT C,(AR1)	;FINAL (OR ONLY) BLT
	JSP AR1,GT3D
GT3C:	SOS GSBPN
	JRST GGEN2

GT3D:	ADDI B,1
	HLRZ A,(AR2A)
	ADDM B,ASAR(A)	;UPDATE ARRAY POINTERS BY OFFSET IN B
	ADDM B,TTSAR(A)
	MOVE C,ASAR(A)
	ADDM B,-1(C)	;UPDATE AOBJN PTR BEFORE ARRAY HEADER
	HRR C,TTSAR(A)		;FOR A BUFFERED FILE OBJECT, WE MUST
	TLNE C,AS.FIL		; RELOCATE CERTAIN ADDRESSES IN THE ARRAY DATA
	 SKIPGE F.MODE(C)	.SEE FBT.CM
	  JRST (AR1)
	MOVE C,TTSAR(A)
IFN ITS+D20,[
	ADDM B,FB.IBP(C)
	ADDM B,FB.BP(C)
	JRST (AR1)
]		;END OF ITS+D20
IFN D10,[
	TLNE C,TTS.CL		;DON'T HACK WITH CLOSED FILE OBJECTS
	 JRST (AR1)
	MOVE F,FB.HED(C)
	ADDM B,(F)		;UPDATE CURRENT BUFFER ADDRESS
	ADDM B,1(F)		;UPDATE BYTE POINTER
	HRRZ F,(F)
	MOVE R,F
GT3D2:	ADDM B,(R)		;UPDATE BUFFER RING POINTERS
	HRRZ R,(R)
	CAIE R,(F)		;DONE WHEN WE HAVE GONE AROUND THE RING
	 JRST GT3D2

IFN SAIL,[
	MOVE R,F.CHAN(C)	;GET CHANNEL NUMBER
	LSH R,27
	HRR R,FB.HED(C)		;POINTER TO BUFFER HEADER
	HRR R,(R)		;GET CURRENT ADDR OF BUFFER
	TLNN C,TTS.IO		;DO APPROPRIATE UUO TO MOVE BUFFER
	 TLOA R,(INPUT)
	  TLO R,(OUTPUT)
	XCT R
	JRST (AR1)
]	;END OF IFN SAIL
IFE SAIL,[
	TLNN C,TTS.IO
	 JRST GT3D4
	MOVE R,F.CHAN(C)	;GET CHANNEL NUMBER
	LSH R,27		;FOR OUTPUT BUFFERS
	HRR R,FB.HED(C)		;GET CURRENT ADR OF BUFFER
	HRR R,(R)
	TLO R,(OUTPUT)		;DO APPROPRIATE UUO TO MOVE BUFFER
	XCT R
	JRST (AR1)

GT3D4:	MOVSI R,TTS.BM
	IORM R,TTSAR(A)
	JRST (AR1)
]	;END OF IFE SAIL

]		;END OF IFN D10

GT3G:	HRRZ AR2A,(AR2A)
	HRRZ AR2A,(AR2A)
	HRRM AR2A,(AR1)		;CUT OUT DEAD BLOCK
	JRST GGEN1

	PGTOP GC,[GARBAGE COLLECTOR]
;PURCOPY PCOPY9 PCOPLS PCONS PCOPFX PFXCONS PFXC1 PFXC3

;;; ********** MEMORY MANAGEMENT, ETC **********

SUBTTL	PURCOPY FUNCTION

	PGBOT BIB

PURCOPY:
	PUSHJ FXP,SAV5M2
	PUSH P,[RST5M2]
	PUSH FXP,CCPOPJ
	PUSHJ P,SAVX5
	PUSH P,[RSTX5]
	MOVEI TT,(A)	;USES A,B,T,TT
	LSH TT,-SEGLOG
	MOVE TT,ST(TT)
	TLNE TT,PUR
	 POPJ P,
   2DIF JRST (TT),PCOPY9,QLIST	.SEE STDISP

PCOPY9:	JRST PCOPLS		;LIST
	JRST PCOPFX		;FIXNUM
	JRST PCOPFL		;FLONUM
DB$	JRST PCOPDB		;DOUBLE
CX$	JRST PCOPCX		;COMPLEX
DX$	JRST PCOPDX		;DUPLEX
BG$	JRST PCOPBN		;BIGNUM
	JRST PCOPSY		;SYMBOL
HN$ REPEAT HNKLOG+1, JRST PCOPHN	;HUNKS
	POPJ P,			;RANDOM
	MOVSI TT,100		;ARRAY
IFN .-PCOPY9-NTYPES, WARN [WRONG LENGTH TABLE]
	IORM TT,(A)		;SET "COMPILED CODE NEEDS ME" BIT
	POPJ P,

PCOPLS:	HLRZ B,(A)		;PURCOPY A LIST ALREADY
	PUSH P,B
	HRRZ A,(A)
	SKIPE A			;NEVER PURCOPY NIL
	 PUSHJ P,PURCOPY
	EXCH A,(P)
	SKIPE A			;NEVER PURCOPY NIL
	 PUSHJ P,PURCOPY
	POP P,B
PCONS:	AOSL TT,NPFFS		;PURE FS CONSER
   SPECPRO INTPPC
	PUSHJ P,GTNPSG		;NOTE: CLOBBERS TT
	ADD TT,EPFFS
   NOPRO
	HRLM A,(TT)
	HRRM B,(TT)
	MOVEI A,(TT)
	POPJ P,

PCOPFX:	MOVE TT,(A)
PFXCONS:	CAIGE TT,XHINUM	;PURE FIXNUM CONSER
	CAMGE TT,[-XLONUM]
	JRST PFXC1
	MOVEI A,IN0(TT)
	POPJ P,			;NOTE: EXITS WITH POPJ P,!!!
PFXC1:	AOSL A,NPFFX
   SPECPRO INTPPC
	PUSHJ P,GTNPSG
	ADD A,EPFFX
   NOPRO
PFXC3:	MOVEM TT,(A)
	POPJ P,
;PCOPFL PFLCONS PCOPCX PCXCONS PCOPDB PDBCONS PDBC3 PCOPDX PDXCONS PCOPBN PBNCONS


PCOPFL:	MOVE TT,(A)
PFLCONS:	AOSL A,NPFFL	;PURE FLONUM CONSER
   SPECPRO INTPPC
	PUSHJ P,GTNPSG
	ADD A,EPFFL
   NOPRO
	JRST PFXC3		;ALSO EXITS WITH POPJ P,!!!


IFN CXFLAG,[
PCOPCX:
KA	MOVE D,1(A)
KA	MOVE TT,(A)
KIKL	DMOVE TT,(A)
PCXCONS:	AOSL A,NPFFC
   SPECPRO INTPPC
	 PUSHJ P,GTNPSG
   XCTPRO
	MOVEI T,1(A)
	MOVEM T,NPFFC
	ADD A,EPFFC
   NOPRO
DB%	JRST PDBC3		;WILL DROP IN IF NO DOUBLES
]		;END OF IFN CXFLAG
IFN DBFLAG,[
PCOPDB:
KA	MOVE D,1(A)
KA	MOVE TT,(A)
KIKL	DMOVE TT,(A)
PDBCONS:	AOSL A,NPFFD
   SPECPRO INTPPC
	 PUSHJ P,GTNPSG
   XCTPRO
	MOVEI T,1(A)
	MOVEM T,NPFFD
	ADD A,EPFFD
   NOPRO
]		;END OF IFN DBFLAG
IFN DBFLAG+CXFLAG,[
PDBC3:
KA	MOVEM D,1(A)
KA	JRST PFXC3
KIKL	DMOVEM TT,(A)
KIKL	POPJ P,
]		;END OF IFN DBFLAG+CXFLAG


IFN DXFLAG,[
PCOPDX:
KA	REPEAT 4, MOVE TT+<2#.RPCNT>,.RPCNT
KIKL	DMOVE R,(A)
KIKL	DMOVE TT,2(A)
PDXCONS:	AOSL A,NPFFZ
   SPECPRO INTPPC
	 PUSHJ P,GTNPSG
   XCTPRO
	MOVEI T,3(A)
	MOVEM T,NPFFZ
	ADD A,EPFFZ
   NOPRO
KA	REPEAT 4, MOVEM TT+<2#.RPCNT>,.RPCNT
KIKL	DMOVEM R,(A)
KIKL	DMOVEM TT,2(A)
	POPJ P,
]		;END OF IFN DBFLAG

IFN BIGNUM,[
PCOPBN:	PUSH P,(A)
	HRRZ A,(A)
	PUSHJ P,PURCOPY
	HLL A,(P)
	SUB P,R70+1
PBNCONS:	AOSL TT,NPFFB	;PURE BIGNUM CONSER
   SPECPRO INTPPC
	PUSHJ P,GTNPSG
	ADD TT,EPFFB
   NOPRO
	MOVEM A,(TT)
	MOVEI A,(TT)
	POPJ P,
]		;END OF IFN BIGNUM
;PCOPSY PCOPS1 PCOPS3 PCOPHN PCOPH5 PCOPH2 PCOPH3

PCOPSY:	PUSH P,A		;SAVE POINTER TO SYMBOL
	HLRZ B,(A)		;FETCH POINTER TO SYMBOL BLOCK
	MOVE TT,SYMVC(B)
	TLNE TT,SY.PUR		;IF ALREADY PURE IGNORE COMPLETELY
	 JRST PCOPS1
	PUSH P,B		;SAVE SYMVC ADR
	HRRZ A,SYMPNAME(B)
	PUSHJ P,PURCOPY		;PURCOPY THE PNAME
	PUSHJ P,PSYCONS		;GET A PURE SY2 BLOCK
	POP P,B			;RESTORE SYMVC ADR
	HLRZ A,(A)		;GET POINTER TO PURE SY2
	HRRZ TT,SYMVC(B)	;GET THE VALUE CELL
	HRRM TT,SYMVC(A)	;COPY INTO NEW PURE SY2
	HLLZ TT,SYMARGS(B)	;ALSO COPY THE ARGS PROPERTY
	HLLM TT,SYMARGS(A)
XCTPRO
	HLRZ B,@(P)		;GET POINTER TO OLD SY2
	EXCH B,FFY2		;THIS IS NEW HEAD OF FREELIST, GET OLD HEAD
	MOVEM B,@FFY2		;PLACE CHAIN IN NEWLY FREED CELL
NOPRO
	HRLM A,@(P)		;STORE POINTER TO NEW SY2 BLOCK
PCOPS1:	LOCKI
	HRRZ A,(P)		;GET POINTER TO SYMBOL
	PUSHJ P,SYMHSH		;GET HASH VALUE
	IDIVI T,OBTSIZ		;MAKE POINTER INTO OBARRAY
	PUSH FXP,TT
	MOVEI A,(FXP)
	MOVE T,VOBARRAY
	PUSHJ P,@ASAR(T)	;BUCKET ADR
	MOVEI B,(A)
	HRRZ A,(P)
	PUSHJ P,MEMQ1		;FIND ACTUAL ATOM
	POP FXP,D
	JUMPN A,PCOPS3		;IF IN OBARRAY NO NEED TO GCPROTECT
	MOVEI T,1		;GCPROTECT
	HRRZ A,(P)
	PUSHJ P,.GCPRO
PCOPS3:	UNLOCKI			;CLEANUP AND GO HOME
	JRST POPAJ

IFN HNKLOG,[
PCOPHN:	SKIPN VHUNKP		;TREAT HUNKS AS LISTS IF HUNKP IS NIL
	 JRST PCOPLS
	PUSH P,A
	PUSH FXP,TT
	PUSHJ P,USRHNP		;Is this a user's extended object?
	POP FXP,TT
	JUMPE T,PCOPH5
	PUSH P,[QPURCOPY]
	MOVNI T,2
	XCT SENDI

PCOPH5:	POP P,A
PCOPH2:
   2DIF [HRRZ B,(TT)]GCWORN,QLIST
	PUSH P,B		.SEE INTXCT	;CAN'T USE FXP
   2DIF [AOSL B,(TT)]NPFFS,QLIST	;THIS WORD SERVES AS ARG TO GTNPSG
   SPECPRO INTPPC
	 PUSHJ P,GTNPSG
   XCTPRO
	MOVE D,B
	ADD D,(P)
	SOS D			;SINCE ALREADY AOS'ED ONCE
   2DIF [MOVEM D,(TT)]NPFFS,QLIST
   NOPRO
   2DIF [ADD B,(TT)]EPFFS,QLIST	;B NOW HAS ADDRESS OF FRESH PURE HUNK
	PUSH P,A
	PUSH P,B
	MOVE D,-2(P)
PCOPH3:	ADD D,-1(P)		;WE SCAN THE OLD HUNK FROM THE END BACKWARDS
	HLRZ B,-1(D)		;GOBBLE A CAR AND A CDR
	HRRZ A,-1(D)
	PUSH P,B
	PUSHJ P,PURCOPY		;PURCOPY THE CDR
	EXCH A,(P)
	PUSHJ P,PURCOPY		;PURCOPY THE CAR
	HRLM A,(P)
	MOVE D,-1(P)		;CALCULATE PLACE IN NEW HUNK
	ADD D,-3(P)
	POP P,-1(D)		;POP COPIED CAR/CDR PAIR INTO PURE HUNK
	SOSE D,-2(P)
	 JRST PCOPH3
	POP P,A			;RETURN NEW HUNK
	SUB P,R70+2
	POPJ P,

]		;END OF IFN HNKLOG
;GETCOR GTCOR4 GTCOR6 LHVB0 LHVBAR LHVB3 LHVB4 LHVB1

IFN PAGING,[

SUBTTL	GETCOR

;;; THIS ROUTINE IS SPECIFICALLY FOR PEOPLE WHO HAND-CODE LAP.
;;; IT IS USED TO ALLOCATE A NUMBER OF CONSECUTIVE PAGES
;;; OF MEMORY FOR VARIOUS PURPOSES, E.G. HACKING OF PDP-11'S
;;; OR INFERIOR JOBS OR WHATEVER.
;;; THE NUMBER OF PAGES DESIRED SHOULD BE IN TT; THE LOW ADDRESS
;;; OF THE PAGES IS RETURNED IN TT, OR ZERO FOR FAILURE.
;;; THIS ROUTINE DOES NOT ACTUALLY GET CORE; IT MERELY RESERVES
;;; ADDRESS SPACE.
;;; THERE IS CURRENTLY NO PROVISION FOR RETURNING THE MEMORY GRABBED.

GETCOR:	HLLOS NOQUIT
	LSH TT,PAGLOG
	MOVE T,HINXM
	SUBI T,(TT)
	CAMGE T,BPSH
	 JRST GTCOR6
	MOVEI F,(TT)		;GETTING F THIS WAY FLUSHES
	LSH F,-PAGLOG		; RANDOM BITS. (IT'S SAFER.)
GTCOR4:	PUSHJ P,ALIMPG
	 .VALUE			;HOW CAN WE LOSE HERE?
	SOJG F,GTCOR4
	SKIPA TT,HINXM
GTCOR6:	 TDZA TT,TT		;LOSE, LOSE, LOSE
	  ADDI TT,1
	JRST CZECHI



LHVB0:	WTA [BAD SIZE - LH↑<!]	;↑< = |
LHVBAR:	CAIL B,QLIST		;SUBR 2
	 CAILE B,QARRAY		;GROSS KLUDGE FOR LH
	  JRST LHVB1
	JSP T,FXNV1
	TLNE TT,-1
	 JRST LHVB0
	ADDI TT,PAGSIZ-1
	IDIVI TT,PAGSIZ
	MOVNI AR2A,(TT)
	PUSHJ P,GETCOR
	JUMPE TT,FIX1
	CAIE B,QARRAY
	 CAIN B,QRANDOM
	  XORI B,QARRAY#QRANDOM	;GROSS KLUDGE
	MOVEI D,(TT)
	LSH D,-SEGLOG
	IMULI AR2A,SGS%PG
	HRLI D,(AR2A)
   2DIF [MOVE R,(B)]GCWORS,QLIST
LHVB3:	MOVEM R,ST(D)
	SETZM GCST(D)
	TLNN R,$FS+BN+HNK
	 JRST LHVB4
	MOVE T,LHSGLK
	DPB T,[SEGBYT,,GCST(D)]
	HRRZM D,LHSGLK
LHVB4:	AOBJN D,LHVB3
	JRST FIX1

LHVB1:	EXCH A,B
	WTA [BAD SPACE - LH↑<!]	;↑< = |
	EXCH A,B
	JRST LHVBAR

;PDLST0 PDLST8

;;;	IFN PAGING

SUBTTL	PDL OVERFLOW HANDLER

;;; CALL BY  JSR PDLSTH
;;; F HAS THE ADDRESS OF THE AC HOLDING THE PDL POINTER.
;;; D HAS AN ADDRESS WITHIN THE PAGE TO GET.
;;; R MAY BE USED AS SCRATCH.

;PDLSTH:	0		;HACK ST FOR ADDING PDL PAGES
PDLST0:
	LSH D,-PAGLOG
IFN ITS,[
	.CALL PDLST8
	 .LOSE 1000
]		;END OF IFN ITS
IFN D20,[
	MOVEM A,PDLSTA		;SAVE AWAY AC'S SO CAN DO A JSYS
	MOVEM B,PDLSTB
	MOVEM C,PDLSTC
	MOVEI 1,.FHSLF		;DISABLE INTERRUPT FOR OURSELVES
	MOVE 2,[<1←<35.-.ICNXP>>] ;WE CAN'T HANDLE THE NXP TRAP THIS WILL CAUSE
	DIC
	MOVEI 1,(D)		;PAGE NUMBER
	LSH 1,PAGLOG		;MAKE AN ADDRESS
	SETMM (1)		;CREATE THE PAGE
	MOVSI 1,.FHSLF		;CHANGE ACCESS FOR OUR PROCESS
	HRRI 1,(D)		;THE PAGE WE JUST CREATED
	MOVSI 2,(PA%RD\PA%WT\PA%EX)
	SPACS
	MOVEI 1,.FHSLF		;REEANBLE NXP TRAPS
	MOVE 2,[<1←<35.-.ICNXP>>]
	AIC
	MOVE C,PDLSTC		;RESTORE AC'S
	MOVE B,PDLSTB
	MOVE A,PDLSTA
]		;END OF IFN D20
	MOVEI R,(D)		;CALCULATE PURTBL BYTE POINTER
	ROT R,-4
	ADDI R,(R)
	ROT R,-1
	TLC R,770000
	ADD R,[430200,,PURTBL]
	MOVSS D
	HRRI D,3
	DPB D,R				;UPDATE PURTBL
	LSH D,-22+PAGLOG-SEGLOG		;HORRIBLE HACKERY TO UPDATE ST
	ADD D,[-<SGS%PG+1>,,ST-1]	; WITHOUT AN EXTRA AC:
REPEAT SGS%PG, PUSH D,PDLST9-P(F)	; USE PUSHES! (CAN'T OVERFLOW)
	JRST @PDLSTH

IFN ITS,[
PDLST8:	SETZ
	SIXBIT \CORBLK\		;HACK PAGE MAP
	  1000,,%CBNDR+%CBNDW	;GET READ AND WRITE ACCESS
	  1000,,%JSELF		;FOR MYSELF
	      ,,D		;PAGE NUMBER
	401000,,%JSNEW		;GET FRESH PAGE
]		;END OF IFN ITS
;PDLOV PDLH0A PDLH2 PDLH2A PDLH2B PDLH3A PDLH4

;;;	IFN PAGING


;;; HAIRY PDL OVERFLOW HANDLER

PDLOV:	MOVE F,INTPDL
	MOVEM D,IPSWD2(F)	;SAVE D
	MOVEM R,IPSWD1(F)	;SAVE R
	SKIPL INTPDL
	 .VALUE			;I WANT TO SEE THIS! - GLS
	MOVEI F,P		;ALL RIGHT THEN, LET'S PLAY
	JUMPGE P,PDLH0A		; TWENTY QUESTIONS - IS IT REGPDL?
	MOVEI F,SP
	JUMPGE SP,PDLH0A	;SPECPDL?
	MOVEI F,FXP
	JUMPGE FXP,PDLH0A	;FXP?
	MOVEI F,FLP		;IF NOT FLP, THEN IT'S PRETTY RANDOM
	JUMPGE FLP,PDLH0A
	HLRZ R,NOQUIT
	JUMPN R,PDLH3A
	LERR [SIXBIT \RANDOM PDL OVERFLOW!\]

PDLH0A:	HRRZ R,(F)		;FETCH RIGHT HALF OF PDL POINTER
	MOVEI D,(R)
	CAML R,OC2-P(F)		;IF WE'RE OVER THE ORIGIN OF THE
	 JRST PDLH5		; OVERFLOW PDL, THEN ERROR OUT
	HLRZ R,F
	ADDI R,11(D)		;HERE IS A HACK TO PAGIFY
	IORI R,PAGSIZ-1		; UPWARDS, BUT KEEP WELL AWAY
	SUBI R,10		; FROM THE PAGE BOUNDARY
	CAML R,OC2-P(F)		;IF WE'RE ABOVE THE OVERFLOW PDL,
	 MOVE R,OC2-P(F)	; ONLY INCREASE TO THAT PLACE
	CAMGE D,ZPDL-P(F)	;SKIP IF WE'RE ABOVE PDLMAX
	 JRST PDLH2		; PARAMETER FOR THIS PDL
	TLO F,-1		;SET FLAG TO INDICATE THIS FACT
	MOVE D,MORPDL-P(F)	;PUSH UP THE PDLMAX
	ADD D,ZPDL-P(F)		; "SOME MORE"
	ANDI D,777760		;BUT KEEP AWAY FROM PAGE
	TRNN D,PAGKSM		; BOUNDARY (PICKY, PICKY!)
	 SUBI D,20
	MOVEM D,ZPDL-P(F)
	HRRZ D,(F)
	JRST PDLH2A

PDLH2:	TLZE F,-1
	 JRST PDLH2B
	CAMLE R,ZPDL-P(F)	;IF OUR GUESS WOULD PUT US OVER
PDLH2A:	 MOVE R,ZPDL-P(F)	; PDLMAX, GO ONLY AS FAR AS THAT
PDLH2B:	SUBI D,(R)		;CALCULATE NEW LEFT HALF FOR PDL PTR
	HRLM D,(F)		;CLOBBER INTO PDL PTR
	HRRZ D,(F)		;FIGURE OUT IF WE NEED TOP GET
	ADDI R,10		; MORE CORE FOR ALL THIS
	ANDI R,PAGMSK
	EXCH R,D
	CAIG R,(D)		;SKIP IF WE CROSSED NO PAGE BOUNDARY
	 JSR PDLSTH		;ELSE MUST GET NEW PAGE AND UPDATE ST
	TLZN F,-1		;SKIP IF WE WERE ABOVE PDLMAX
	 JRST PDLH3A
	MOVSI D,QREGPDL-P(F)
	HRRI D,1005		;PDL-OVERFLOW
	HRRZ R,INTPDL
	HRRZ R,IPSPC(R)
	CAIL R,UINT0		;AVOID DEEP INTERRUPT RECURSION:
	 CAILE R,EUINT0		; IF PDL OVERFLOWED WITHIN UINT0,
	  JRST PDLH4		; THEN JUST STACK UP THE INTERRUPT,
	JSR UISTAK		; AND SOMEONE WILL EVENTUALLY TRY CHECKI
PDLH3A:	HRRZ F,INTPDL
	JRST INTXT2


PDLH4:	MOVE R,FXP		;ELSE TRY TO GIVE A PDL OVERFLOW
	SKIPE GCFXP		; USER INTERRUPT IMMEDIATELY
	 MOVE FXP,GCFXP		;REMEMBER, PDL OVERFLOW IS NOT
	PUSH FXP,R		; DISABLED INSIDE THE PDL
	PUSHJ FXP,$IWAIT	; OVERFLOW HANDLER!!!
	 JRST XUINT
	JRST INTXIT
	
;MORPDL PDLMSG PDLST9 PDLH5 PDLH6

;;;	IFN PAGING

MORPDL:	400		;AMOUNTS TO INCREMENT PDLS BY
	100		; WHEN OVERFLOW OCCURS (THIS GIVES
	LSWS+100	; LOSER A CHANCE TO SSTATUS PDLMAX,
	200		; AT LEAST)

PDLMSG:	POVPDL		;REG
	POVFLP		;FLONUM
	POVFXP		;FIXNUM
	POVSPDL		;SPEC

PDLST9:	$XM,,QRANDOM		;TYPICAL ST ENTRIES FOR PDL PAGES
	FL+$PDLNM,,QFLONUM
	FX+$PDLNM,,QFIXNUM
	$XM,,QRANDOM

PDLH5:	IORI R,PAGSIZ-1		;BAD PDL OV - REALLY DESPERATE
	SUBI D,-2(R)		;GIVE US AS MUCH PDL AS IS LEFT
	JUMPL D,PDLH6
	MOVE P,C2
	MOVE FXP,FXC2
	SETZM TTYOFF
	STRT UNRECOV
	STRT @PDLMSG-P(F)
	JRST DIE

PDLH6:	HRLM D,(F)
	HLRZ R,NOQUIT
	JUMPN R,GCPDLOV		;FOO! HAPPENED IN GC - BOMB OUT!
	HRRZ B,PDLMSG-P(F)
	CAIE B,POVSPDL
	JRST PDLOV5		;PDLOV5 HANDLE WILL GET US TO TOP LEVEL
	MOVEM P,F		;FOR SP, TRY TO POP BINDINGS FIRST
	HRRZ TT,SPSV		; SO *RSET-TRAP WON'T OVERFLOW
	MOVE P,[-LFAKP-1,,FAKP]	;SO WE HAVE ENOUGH PDL FOR UBD
	PUSH P,FXP
	MOVE FXP,[-LFAKFXP-1,,FAKFXP]
	PUSHJ P,UBD
	POP P,FXP
	MOVE P,F
	JRST PDLOV5		;PDLOV5 WILL SET UP PDLS

]		;END OF IFN PAGING
;GRBPSG GTNPSG GTNPS8

SUBTTL	PURE SEGMENT CONSER

;;; GRBPSG RETURNS ONE PUREIFIABLE SEGMENT.  ADR IN AC T
;;; GTNPSG IS INVOKED AS FOLLOWS:
;;;		AOSL A,NPFF%	;SKIP UNLESS NO MORE LEFT
;;;	   SPECPRO INTPPC
;;;		PUSHJ P,GTNPSG	;MUST GET MORE
;;;		ADD A,EPFF%	;ELSE JUST FIGURE OUT ABSOLUTE ADDRESS
;;;	   NOPRO
;;; WHERE % IS SOME APPROPRIATE LETTER (E.G. S, X, L, B).
;;; GTNPSG UPDATES NPFF% AND EPFF% BY LOOKING AT THE AOSL, THEN
;;; RETURNS TO THE AOSL.

   XCTPRO
GRBPSG:	HLLOS NOQUIT		;GET NEW PURE SEGMENT
   NOPRO
	SAVEFX TT D R
	SKIPN T,PRSGLK		;SKIP IF ANY SEGMENTS IN PURE SEGMENT FREELIST
	 PUSHJ P,GTNPS3
	LDB D,[SEGBYT,,GCST(T)]	;IF SO, CDR THAT FREELIST
	MOVEM D,PRSGLK
	MOVE TT,[$XM+PUR,,QRANDOM]
	MOVEM TT,ST(T)		;SETUP ST TABLE CORRECTLY
	SETZM GCST(T)		;AND ALSO GCST
	RSTRFX R D TT
	JRST CZECHI

;GETS A PURE SEGMENT FOR CONSING PURPOSES
   XCTPRO
GTNPSG:	HLLOS NOQUIT		;GET NEW PURE SEGMENT
   NOPRO
REPEAT 2,	SOS (P)		;BACK UP RETURN ADDRESS TO PRECEDING INST
	SAVEFX T TT D R
	SKIPN T,PRSGLK		;SKIP IF ANY SEGMENTS IN PURE SEGMENT FREELIST
	 PUSHJ P,GTNPS3
	LDB D,[SEGBYT,,GCST(T)]	;IF SO, CDR THAT FREELIST
	MOVEM D,PRSGLK
IFE HNKLOG,	MOVE D,@(P)	;NOW D POINTS TO NPFF-
IFN HNKLOG,[
	MOVE D,(P)		;THIS ALLOWS REFERENCE TO NPFF- TO BE INDEXED
	MOVEI D,@(D)		; BY TT, WHICH MUST BE SAFE TO THIS POINT
]		;END OF IFN HNKLOG
   2DIF [SKIPN TT,(D)]GTNPS8,NPFFS
	 .VALUE
	MOVEM TT,ST(T)
	SETZM GCST(T)
	LSH T,SEGLOG
	ADDI T,SEGSIZ
	MOVEM T,EPFFS-NPFFS(D)	;UPDATE PARAMETERS FOR NEW PURE SEGMENT
	MOVNI T,SEGSIZ+1
	MOVEM T,(D)
	MOVEI T,SEGSIZ
	ADDM T,PFSSIZ-NPFFS(D)	;UPDATE STORAGE SIZE
	RSTRFX R D TT T
	JRST CZECHI

;;; TYPICAL ST ENTRIES FOR PURE SEGMENTS
GTNPS8:	LS+$FS+PUR,,QLIST		;LIST
	FX+PUR,,QFIXNUM			;FIXNUM
	FL+PUR,,QFLONUM			;FLONUM
DB$	DB+PUR,,QDOUBLE			;DOUBLE
CX$	CX+PUR,,QCOMPLEX		;COMPLEX
DX$	DX+PUR,,QDUPLEX			;DUPLEX
BG$	BN+PUR,,QBIGNUM			;BIGNUM
	0				;NO PURE SYMBOLS
HN$  REPEAT HNKLOG+1,  LS+HNK+PUR,,QHUNK0+.RPCNT 	;HUNKS
	0				;NO PURE SARS
IFN .-GTNPS8-NFF, WARN [GTNPS8 WRONG LENGTH TABLE]
	$XM+PUR,,QRANDOM		;SYMBOL BLOCKS
;GTNPS3

;CALLED TO GET NEW PAGE OF PURE MEMORY
;RETURNS C(PRSGLK) IN T
GTNPS3:	PUSH FXP,TT		;GTNPSG REQUIRES TT TO BE SAFE
IFN PAGING,[
	MOVE T,HINXM		;FIGURE OUT IF ANY ROOM LEFT
	SUBI T,PAGSIZ
	CAMGE T,BPSH
	 LERR [SIXBIT \NO SPACE FOR NEW PURE PAGE!\]
	MOVEM T,HINXM		;UPDATE HINXM
	MOVEI TT,1(T)
]		;END OF IFN PAGING
IFE PAGING,[
	MOVE TT,HIXM
	ADDI TT,PAGSIZ
	CAMLE TT,MAXNXM
	 LERR [SIXBIT \NO SPACE FOR NEW PURE PAGE!\]
	MOVEM TT,HIXM
]		;END OF IFE PAGING
	LSH TT,-SEGLOG		;UPDATE ST AND GCST FOR NEW PAGE
	MOVE D,[$XM+PUR,,QRANDOM]
REPEAT SGS%PG, MOVEM D,ST+.RPCNT(TT)
	MOVE D,PRSGLK
REPEAT SGS%PG,[
	SETZM GCST+.RPCNT(TT)
	DPB D,[SEGBYT,,GCST+.RPCNT(TT)]
	MOVEI D,.RPCNT(TT)
]		;END OF REPEAT SGS%PG
	MOVEM D,PRSGLK
IFN PAGING,[
	MOVEI TT,1(T)		;UPDATE PURTBL
	ROT TT,-PAGLOG-4
	ADDI TT,(TT)
	ROT TT,-1
	TLC TT,770000
	ADD TT,[430200,,PURTBL]
	DPB T,TT		;T HAS 11 IN LOW TWO BITS
				; (CAN PURIFY, WITH SOME CARE)
IFN ITS,[
	MOVEI R,1(T)		;NOT AN AOBJN POINTER,
	LSH R,-PAGLOG		; SO WE GET ONLY ONE PAGE
	.CALL GTSPC8
	 .LOSE 1000
]		;END OF IFN ITS
IFN D20,[
	PUSHJ FXP,SAV3
	SETMM 1(T)		;CREATE THE PAGE
	MOVEI 1,1(T)		;THEN GET THE PAGE NUMBER
	LSH 1,-PAGLOG
	HRLI 1,.FHSLF
	MOVSI 2,(PA%RD\PA%WT\PA%EX)
	SPACS
	PUSHJ FXP,RST3
]		;END OF IFN D20
]		;END OF IFN PAGING
IFN <PAGING-1>*D10,[
	HRRZ TT,HIXM
	CORE TT,
	 HALT
]		;END OF IFN <PAGING-1>*D10
	MOVE T,PRSGLK		;FORCE PRSGLK INTO AC T FOR CALLER
	POP FXP,TT
	POPJ P,
;GCGRAB GCGRB1


SUBTTL	FREE STORAGE SPACE EXPANSION

;;; THIS PORTION OF THE GARBAGE COLLECTOR DETERMINES WHETHER
;;; WE SHOULD JUST GRAB A NEW SEGMENT OF FREE STORAGE FOR SOME
;;; CONSER, OR DO A FULL-BLOWN GARBAGE COLLECTION. IT IS
;;; CONTROLLED BY PARAMETERS SETTABLE VIA (SSTATUS GCSIZE ...).

GCGRAB:	MOVN R,D
	JFFO R,.+1		;DETERMINE WHICH SPACE WANTED MORE
	SUBI F,NFF
	MOVEI AR2A,1		;MACRAK SEZ: GRAB JUST ONE
	SKIPN FFY2
	 SETZ F,
	JUMPE F,GCGRB1		; ... SEZ MACRAK
	MOVE D,SFSSIZ+NFF(F)
	CAML D,GFSSIZ+NFF(F)	;CAN'T JUST GRAB IF ABOVE SIZE
	 JRST AGC1Q		; SPECIFIED FOR "FREE GRABBIES"
	MOVE D,GFSSIZ+NFF(F)
	CAMLE D,XFFS+NFF(F)	;CAN'T GRAB IF IT WOULD PUT
	 JRST AGC1Q		; US ABOVE THE MAXIMUM SIZE
GCGRB1:	PUSH FXP,AR2A
	PUSHJ P,GRABWORRY
	POP FXP,AR1
	JUMPGE AR2A,AGC1Q	;GO DO FULL-BLOWN GC AFTER ALL
IFN WHL,[
	MOVE D,[-3,,GCWHL6]
	MOVE R,GCWHO
	TRNE R,1
	 .SUSET D
]		;END OF IFN WHL
	JRST GCEND
;GRBSEG GRBSG1 GCWORRY GRABWORRY GCWR0A GCWR0B GCWOR2 GCWR2A GCWR2B

;;; THESE ROUTINES WORRY ABOUT GETTING A NEW IMPURE FREE STORAGE
;;; SEGMENT. (FOR PURE FREE STORAGE SEGMENTS, SEE GTNPSG.)
;;; GCWORRY MUST DO SPECIAL HACKERY FOR SYMBOL AND SAR SPACES, SINCE THEY
;;; REQUIRE MORE THAN ONE CONSECUTIVE SEGMENT, AND PRINTS OUT PRETTY
;;; MESSAGES IF GCGAG IS NON-NIL.  MUST HAVE NOQUIT NON-ZERO.
;;; *THE FOLLOWING COMMENT IS HISTORICAL AND SHOULD BE IGNORED*
;;; MUST HAVE NOQUIT NON-ZERO AND ST/GCST PAGES IMPURE WHEN ENTERING!

;THIS ROUTINE ALLOCATES ONE IMPURE SEGMENT AND MARKS IT AS
; $XM,,QRANDOM IN ST TABLE.  POINTER TO SEGMENT RETURNED IN TT
; DESTROYS C, D, AR1, R
GRBSEG:	SKIPE TT,IMSGLK
	 JRST GRBSG1		;JUMP IF ANY SEGMENTS AVAILABLE
	PUSHJ P,ALIMPG		;ELSE MUST GRAB A NEW PAGE
	 POPJ P,		;FAIL IF NO NEW PAGES TO BE HAD
GRBSG1:	LDB D,[SEGBYT,,GCST(TT)]
	MOVEM D,IMSGLK		;CDR THE FREE SEGMENT LIST
	MOVE D,[$XM,,QRANDOM]	;MARK NEW SEGMENT IN ST TABLE
	MOVEM D,ST(TT)
	SETZM GCST(TT)		;RESET GCST TABLE ENTRY
	LSH TT,SEGLOG		;RETURN A POINTER TO THE HEAD OF THE SEGMENT
	AOS (P)
	POPJ P,

;THIS ROUTINE IS FOR NORMAL ALLOCATION OF SEGMENTS BY THE GC
GCWORRY:SUBI AR2A,(TT)		;ENTRY FOR GARBAGE COLLECTOR
	ADDI AR2A,SEGSIZ-1	;FIGURE OUT HOW MANY NEW SEGMENTS WE NEED
	LSH AR2A,-SEGLOG
GRABWORRY:
	HRRZ AR1,VMSGFILES
	TLO AR1,200000
	JUMPE F,.+2	;ENTRY FOR GCGRAB
	SKIPN GCGAGV		;MAYBE WE WANT A PRETTY MESSAGE?
	 SOJA AR2A,GCWOR2	;IF NOT, DECR AR2A (SEE BELOW)
	STRT 17,[SIXBIT \↑M;ADDING !\]
	SOJG AR2A,GCWR0A	;AR2A GETS DECR'ED HERE, TOO!
	STRT 17,[SIXBIT \A!\]	;KEEP THE ENGLISH GOOD
	JRST GCWR0B

GCWR0A:	MOVEI R,$TYO
	MOVEI TT,1(AR2A)
	PUSH FXP,AR2A
IFE USELESS,	MOVE C,@VBASE		;BASE DAMN WELL BETTER BE A FIXNUM
IFN USELESS,[
	HRRZ C,VBASE
	CAIE C,QROMAN
	 SKIPA C,(C)
	  PUSHJ P,PROMAN
]		;END OF IFN USELESS
	   PUSHJ P,PRINI9
	POP FXP,AR2A
GCWR0B:	STRT 17,[SIXBIT \ NEW !\]
	STRT 17,@GSTRT9+NFF(F)
	STRT 17,[SIXBIT \ SEGMENT!\]
	SKIPE AR2A
	 STRT 17,[SIXBIT \S!\]
GCWOR2:	SKIPE TT,IMSGLK
	 JRST GCWR2A		;JUMP IF ANY SEGMENTS AVAILABLE
	PUSHJ P,ALIMPG		;ELSE MUST GRAB A NEW PAGE
	 JRST GCWOR7
GCWR2A:	LDB D,[SEGBYT,,GCST(TT)]
	MOVEM D,IMSGLK		;CDR THE FREE SEGMENT LIST
	MOVE D,FSSGLK+NFF(F)	;CONS NEW SEGMENT ONTO LIST
	MOVEM TT,FSSGLK+NFF(F)	; OF SEGMENTS FOR THE
	HRRZ R,BTBAOB		; PARTICULAR SPACE
	HLL R,GCWORS+NFF(F)
	LSH D,22-<SEGLOG-5>
GCWR2B:	TLNE R,$FS+FX+FL+BN+HNK+DB+CX+DX	.SEE GCWR2C
	 IORI D,(R)		;MAYBE ALLOCATE A BIT BLOCK FOR
	IOR D,GCWORG+NFF(F)	; THE NEW SEGMENT FOR USE BY
	MOVEM D,GCST(TT)	; GC IN MARKING CELLS
	MOVE D,GCWORS+NFF(F)	;UPDATE ST ENTRY FOR THE
	MOVEM D,ST(TT)		; NEW SEGMENT
	MOVE D,FFS+NFF(F)	;ADD CELLS OF SEGMENT TO
	LSH TT,SEGLOG		; THE FREE STORAGE
	MOVEM D,(TT)		; LIST FOR THIS SPACE
	MOVE D,[GCWORX,,1]
	BLT D,LPROG9
	HLL TT,GCWORN+NFF(F)
	HRR GCWRX1,GCWORN+NFF(F)
	HRRI GCWRX2,-1(GCWRX1)
	JRST GCWRX1
;GCWR2C GCWR3A GCWR3B GCWR3F GCWOR4 GCWR4Q GCWOR6 GCWOR7

GCWR2C:	HRRZM TT,FFS+NFF(F)
	TLNN R,$FS+FX+FL+BN+HNK+DB+CX+DX	.SEE GCWR2B
	 JRST GCWR4Q
	HRRZ TT,BTBAOB		;DECIDE WHETHER THIS BIT BLOCK
	LSH TT,SEGLOG-5		; LIES IN MAIN BIT BLOCK AREA
	MOVEI D,-1(TT)
	CAME D,MAINBITBLT
	 JRST GCWR3A
	ADDI D,BTBSIZ		;YES - JUST UPDATE MAIN BLT
	MOVEM D,MAINBITBLT	; POINTER FOR CLEARING 
	JRST GCWR3B		; BIT BLOCKS (SEE GCINBT)

GCWR3A:	LSH TT,-SEGLOG		;ELSE AOS COUNT OF BIT BLOCKS
	AOS GCST(TT)		; IN CURRENT BIT BLOCK SEGMENT
GCWR3B:	MOVE TT,BTBAOB		;AOBJN THE BIT BLOCK
	AOBJN TT,GCWOR4		; ALLOCATION POINTER
	SKIPE TT,IMSGLK		;FOO! OUT OF BIT BLOCKS!
	 JRST GCWR3F
	PUSHJ P,ALIMPG		;FOO FOO! NEED NEW PAGE!
	 JRST GCWFOO
GCWR3F:	LDB D,[SEGBYT,,GCST(TT)]
	MOVEM D,IMSGLK		;CDR LIST OF FREE SEGMENTS
	MOVE D,[$XM,,QRANDOM]	;UPDATE ST AND GCST FOR
	MOVEM D,ST(TT)		; NEW BIT BLOCK SEGMENT
	MOVEI D,(TT)		;GCST ENTRY IS USED TO
	LSH D,5			; INDICATE HOW MANY
	MOVEM D,GCST(TT)	; BLOCKS ARE IN USE
	MOVE D,BTSGLK		;CONS NEW SEGMENT ONTO LIST
	DPB D,[SEGBYT,,GCST(TT)]	; OF BIT BLOCK SEGMENTS
	MOVEM TT,BTSGLK
	LSH TT,5		;CALCULATE NEW BIT BLOCK
	HRLI TT,-SEGSIZ/BTBSIZ	; ALLOCATION POINTER
GCWOR4:	MOVEM TT,BTBAOB
GCWR4Q:	JUMPE F,GCWOR6
	MOVEI TT,SEGSIZ		;UPDATE VARIOUS GC PARAMETERS
	ADDM TT,NFFS+NFF(F)
	ADDB TT,SFSSIZ+NFF(F)
	CAMLE TT,XFFS+NFF(F)	;MUST STOP IF OVER MAX
	 SOJA AR2A,.+2		;KEEP COUNT ACCURATE
GCWOR6:	SOJGE AR2A,GCWOR2	;ALSO STOP IF WE GOT ALL WE WANT
GCWOR7:	JUMPE F,CPOPJ
	SKIPN GCGAGV		;MAYBE WANT MORE PRETTY MESSAGE
	 POPJ P,
	SKIPL AR2A
	 STRT 17,[SIXBIT \↑M; BUT DIDN'T SUCCEED!\]
	STRT 17,[SIXBIT \ -- !\]
	STRT 17,@GSTRT9+NFF(F)
	STRT 17,[SIXBIT \ SPACE NOW !\]
	MOVEI R,$TYO
	PUSH FXP,AR2A
	HRRZ AR1,VMSGFILES
	TLO AR1,200000
	MOVE TT,SFSSIZ+NFF(F)
IFE USELESS,	MOVE C,@VBASE
IFN USELESS,[
	HRRZ C,VBASE
	CAIE C,QROMAN
	 SKIPA C,(C)
	  PUSHJ P,PROMAN
]		;END OF IFN USELESS
	   PUSHJ P,PRINI9
	STRT 17,[SIXBIT \ WORDS!\]
	POP FXP,AR2A
	POPJ P,
;GCWORG GCWORS GCWFOO GCWORX GCWRX1 GCWRX2 LPROG9 GCWORN

;;; TYPICAL GCST ENTRIES FOR IMPURE SPACES
GCWORG:	GCBMRK+GCBCDR+GCBCAR,,			;LIST
	GCBMRK,,				;FIXNUM
	GCBMRK,,				;FLONUM
DB$	GCBMRK,,				;DOUBLE
CX$	GCBMRK,,				;COMPLEX
DX$	GCBMRK,,				;DUPLEX
BG$	GCBMRK+GCBCDR,,				;BIGNUM
	GCBMRK+GCBSYM,,				;SYMBOL
HN$  REPEAT HNKLOG+1, GCBMRK+GCBCDR+GCBCAR+GCBHNK,,	;HUNKS
	GCBMRK+GCBSAR,,				;SAR
IFN .-GCWORG-NFF, WARN [WRONG LENGTH TABLE]
	0					;SYMBOL BLOCKS

;;; TYPICAL ST ENTRIES FOR IMPURE SPACES
GCWORS:	LS+$FS,,QLIST				;LISP
	FX,,QFIXNUM				;FIXNUM
	FL,,QFLONUM				;FLONUM
DB$	DB,,QDOUBLE				;DOUBLE
CX$	CX,,QCOMPLEX				;COMPLEX
DX$	DX,,QDUPLEX				;DUPLEX
BG$	BN,,QBIGNUM				;BIGNUM
	SY,,QSYMBOL				;SYMBOL
HN$  REPEAT HNKLOG+1, LS+HNK,,QHUNK0+.RPCNT		;HUNKS
	SA+$XM,,QARRAY				;SAR
IFN .-GCWORS-NFF, WARN [WRONG LENGTH TABLE]
	$XM,,QRANDOM				;SYMBOL BLOCKS

GCWFOO:	STRT [SIXBIT \↑M;GLEEP#! OUT OF BIT BLOCKS!\]
	JRST GCWOR7

GCWORX:			;EXTEND FREELIST THROUGH NEW SEGMENT
OFFSET 1-.
GCWRX1:	HRRZM TT,.(TT)	;OCCUPIES A,B,C,AR1 - MUST SAVE AR2A
GCWRX2:	ADDI TT,.
	AOBJN TT,GCWRX1
	JRST GCWR2C
LPROG9==:.-1
OFFSET 0
.HKILL GCWRX1 GCWRX2

GCWORN:	-SEGSIZ+1,,1				;LIST
	-SEGSIZ+1,,1				;FIXNUM
	-SEGSIZ+1,,1				;FLONUM
DB$	-SEGSIZ/2+1,,2				;DOUBLE
CX$	-SEGSIZ/2+1,,2				;COMPLEX
DX$	-SEGSIZ/2+1,,4				;DUPLEX
BG$	-SEGSIZ+1,,1				;BIGNUM
	-SEGSIZ+1,,1				;SYMBOL
HN$ 	REPEAT HNKLOG+1, -SEGSIZ/<1←.RPCNT>+1,,1←.RPCNT	;HUNKS
	-SEGSIZ/2+1,,2				;ARRAY SARS
IFN .-GCWORN-NFF, WARN [WRONG LENGTH TABLE]
	-SEGSIZ/2+1,,2				;SYMBOL BLOCKS
;ALIMPG ALIMP3

SUBTTL	IMPURE PAGE GOBBLER

;;; ALLOCATE AN IMPURE PAGE FREE STORAGE USE

ALIMPG:
IFN PAGING,[
	MOVE TT,HINXM		;MUST SAVE AR2A AND F FOR GCWORRY
	SUBI TT,PAGSIZ
	CAMGE TT,BPSH
]		;END OF IFN PAGING
IFE PAGING,[
	MOVE TT,HIXM
	ADDI TT,PAGSIZ
	CAMLE TT,MAXNXM
]		;END OF IFE PAGING
	 POPJ P,		;NO PAGES LEFT - RETURN WITHOUT SKIP
IFN PAGING,[
	MOVEM TT,HINXM		;ELSE UPDATE HINXM
IFN ITS,[
	MOVEI R,1(TT)
	LSH R,-PAGLOG
	.CALL GTSPC8
	 .LOSE 1000
]		;END OF IFN ITS
IFN D20,[
	SETMM 1(TT)		;CREATE THE PAGE
	MOVEI 1,1(TT)
	LSH 1,-PAGLOG
	HRLI 1,.FHSLF
	MOVSI 2,(PA%RD\PA%WT\PA%EX)
	SPACS
]		;END OF IFN D20
	MOVEI D,1(TT)		;COMPUTE A MAGIC BYTE POINTER
	LSH D,-PAGLOG
	ROT D,-4
	ADDI D,(D)
	ROT D,-1
	TLC D,770000
	ADD D,[430200,,PURTBL]
	MOVEI C,1
	DPB C,D			;UPDATE THE PURTBL
	HRRZ R,(P)		;GET THE CALLER'S PC+1
	CAIN R,GTCOR4+1		;DON'T HACK IMSGLK FOR GETCOR
	 JRST POPJ1
]		;END OF IFN PAGING
IFN <PAGING-1>*D10,[
	MOVEM TT,HIXM
	CORE TT,
	 HALT
	MOVE TT,HIXM
]		;END OF IFN <PAGING-1>*D10
	LSH TT,-SEGLOG
IFN PAGING, ADDI TT,SGS%PG
	MOVE C,IMSGLK		;UPDATE ST AND GCST, AND ADD
	MOVE AR1,[$XM,,QRANDOM]	; NEW SEGMENTS TO IMSGLK LIST
	MOVEI D,SGS%PG
ALIMP3:	MOVEM AR1,ST(TT)
	SETZM GCST(TT)
	DPB C,[SEGBYT,,GCST(TT)]
	MOVEI C,(TT)
	SOSE D
	 SOJA TT,ALIMP3
	MOVEM TT,IMSGLK		;EXITS WITH LOWEST NEW SEGMENT # IN TT
	JRST POPJ1		;WINNING RETURN SKIPS
;RECLAIM RECL1 RECL2 RECLFW REBIG RECL9 RECL9A

SUBTTL	RECLAIM FUNCTION

IFN BIGNUM+USELESS,[

RECLAIM:	HRRZS A		;SUBR 2
	JUMPE A,CPOPJ		;GC A PARTICULAR SEXP
	LOCKI
	PUSHJ P,RECL1
	MOVEI A,NIL
	UNLKPOPJ


RECL1:	SKOTT A,LS+PUR
    2DIF JRST (TT),RECL9-1,QLIST	.SEE STDISP
	TLNE TT,HNK+VC+PUR	;DON'T RECLAIM VALUE CELLS!!! (OR HUNKS)
	 POPJ P,			; - ALSO DON'T RECLAIM PURE WORDS
	PUSH P,A		;SAVE ARG
	JUMPE B,RECL2		;B=NIL => RECLAIM ONLY TOP LEVEL OF LIST
	HLRZ A,(A)		;RECLAIM CAR
	PUSHJ P,RECL1
RECL2:	MOVE T,FFS
	POP P,FFS
	EXCH T,@FFS		;RECLAIM ONE CELL
	MOVEI A,(T)		;AND THEN GO AFTER THE CDR
	JRST RECL1

RECLFW:	JUMPE B,RECL9A		;B=NIL => DON'T RECLAIM FULLWORDS
	TLNE TT,$PDLNM		;DON'T RECLAIM PDL LOCATIONS!!!
	 POPJ P,
   2DIF [MOVE T,(TT)]FFS-QLIST	;RECLAIM NUMBER
	MOVEM T,(A)
   2DIF [MOVEM A,(TT)]FFS-QLIST
	POPJ P,

IFN BIGNUM,[
REBIG:	MOVE T,FFB		;RECLAIM BIGNUM HEADER
	EXCH T,(A)
	MOVEM A,FFB
	MOVEI A,(T)		;RECLAIM CDR OF BIGNUM
	JRST RECL1
]		;END OF IFN BIGNUM

RECL9:	JRST RECLFW	;FIXNUM
	JRST RECLFW	;FLONUM
DB$	JRST RECLFW	;DOUBLE
CX$	JRST RECLFW	;COMPLEX
DX$	JRST RECLFW	;DUPLEX
BG$	JRST REBIG	;BIGNUM
RECL9A:	POPJ P,		;SYMBOL
HN$  REPEAT HNKLOG+1, .VALUE	;HUNKS
	POPJ P,		;RANDOM
	POPJ P,		;ARRAY
IFN .-RECL9-NTYPES+1, WARN [WRONG LENGTH TABLE]

]		;END OF IFN BIGNUM+USELESS
;MAKVC3 MAKVC4 MAKVC8

IFN PAGING,[

SUBTTL	VALUE CELL AND SYMBOL BLOCK HACKERY

;;; ROUTINE TO GET MORE VALUE CELL SPACE.
;;; EXPANDS VALUE CELL SPACE BY GETTING NEXT PAGE IN THE HOLE
;;; LEFT FOR THIS PURPOSE, AND EXTENDING THE VALUE CELL FREELIST.
;;; IF NO PAGES LEFT IN THE HOLE, A LIST CELL IS USED.
;;; MAY CLOBBER ONLY A AND TT.

   XCTPRO
MAKVC3:	HLLOS NOQUIT
   NOPRO
	SOSL NFVCP
	 JRST MAKVC4
	PUSHJ P,CZECHI
	PUSHJ P,CONS1
	SETOM ETVCFLSP
	JRST MAKVC1

MAKVC4:
IFN ITS,[
	PUSH FXP,R		;MUST SAVE R
	MOVE R,EFVCS
	LSH R,-PAGLOG
	.CALL GTSPC8		;GET A NEW PAGE
	 .LOSE 10000
	POP FXP,R
]		;END OF IFN ITS	
IFN D20,[
	PUSHJ FXP,SAV3
	MOVE 1,EFVCS
	SETMM (1)		;CREATE THE PAGE
	LSH 1,-PAGLOG
	HRLI 1,.FHSLF
	MOVSI 2,(PA%RD\PA%WT\PA%EX)
	SPACS
	PUSHJ FXP,RST3
]		;END OF IFN D20
	MOVE A,EFVCS
	MOVEM A,FFVC
	LSH A,-SEGLOG
	MOVE TT,[LS+VC,,QLIST]
REPEAT SGS%PG, MOVEM TT,ST+.RPCNT(A)	;UPDATE SEGMENT TABLE
	MOVSI TT,GCBMRK+GCBVC
REPEAT SGS%PG, MOVEM TT,GCST+.RPCNT(A)	;UPDATE GC SEGMENT TABLE
	LSH A,-PAGLOG+SEGLOG		;UPDATE PURTBL
	ROT A,-4
	ADDI A,(A)
	ROT A,-1
	TLC A,770000
	ADD A,[430200,,PURTBL]
	MOVEI TT,1
	DPB TT,A
	AOS TT,EFVCS		;EXTEND FREELIST THROUGHOUT NEW PAGE
	HRLI TT,-PAGSIZ+1
	HRRZM TT,-1(TT)
	AOBJN TT,.-1
	HRRZM TT,EFVCS
MAKVC8:	PUSHJ P,CZECHI
	JRST MAKVC0

]		;END OF IFN PAGING
;LDPRG9 ARGCL7 MAKVC9 MAKVC5 MAKVC6


;;; SYMBOL BLOCK COPYING ROUTINE - TRIGGERED BY PURE PAGE TRAP, OR EXPLICIT CHECK
;;;	B POINTS TO OLD SYMBOL BLOCK
;;;	LEAVES POINTER TO NEW SYMBOL BLOCK IN B
;;;	CLOBBERS TT, LEAVES POINTER TO VALUE CELL IN A

LDPRG9:	TLCA B,LDPARG		;FASLOAD CLOBBERING ARGS PROP
ARGCL7:	TLC B,ARGCL3		;ARGS CLOBBERING ARGS PROP
	HRRZ A,(B)
	JRST MAKVC6

MAKVC9:	TLC B,MAKVCX		;MAKVC CLOBBERING IN VALUE CELL
	JRST MAKVC6
MAKVC5:	PUSH P,SPSV		;MUST PRESERVE SPSV AS WE CAN COME HERE FROM
				; WITHIN A BIND AND AGC DOES BINDING ALSO
	PUSHJ P,AGC
	POP P,SPSV
   BAKPRO
MAKVC6:	SKIPN FFY2		;COME HERE IF HRRM ABOVE CAUSES
	 JRST MAKVC5		; A PURE PAGE TRAP - MUST COPY
↓MOVE TT,@FFY2		; SYMBOL BLOCK FOR THAT SYMBOL
   XCTPRO
	EXCH TT,FFY2
   NOPRO
	HRLI A,SY.ONE\SY.CCN\SY.OTC ;ASSUME COMPILED CODE @≥∃	&A∪PA
∨$↓∨)⊃H~∀∩∩$∩vA)!≤Aπ¬→_A+U≡O&~(∪≠∨-∃~AαYM3≠-ε!)(R∩l@Q)⊃%≥⊗Aβ	∨+(AQ⊃∪&AM∨≠
A5∨%
R4∀∪≠∨Y
AαYM3≠!≥¬≠
Q∧$~∀β≠=-~A∧Y'3≠A≥β≠
!)(R~(∪⊃%%hAαXQQ(R~∀%⊃%→~↓)(Y! R
∀%1π⊂↓)(Y∧4∀∪⊃→I4A)(1)(~∀%∃%'(Q)(R4∀~∀_vIβ1→∨ε@⊃β→→εX@Iβ→1αr@I¬→→εnIβ→→p@Iβ1→εh~(~∀
∃M+¬))0∪β→→=αA
+9π)∪∨8~∀4R"ε22|→h&∞J∃α¬e"JVR@H%nNαX%∩β∀¬R∧%→h∀lL4λ∀ddx1PPJ	*%≥"∧H∀dd6QPPM8ZDz∧eA⊂HK8~$;mDπSr∧X→4*¬Z∧∧dM:APPLYλ4B∧eI∀tD_)∃ H↔85∀|99∃≤B	It≤\∀¬R∧$xZ4r≥D	U,ttλeEQ!∀l⎇ii∩¬∩Ihd0h$H∀dd6g M¬Z9α∧5λ¬D<5:9∃B\βQQE
J".j85Q(
Zλ∃P)J00SλT⊃⊂5λ⊃"B4
Zrλ⊃K
⊗⊃HjhsQHe∀J"'9∪pri∀⊂¬bbT)P$jλ!gg)Rij"g∃εE∧h∃id⊂#⊗(⊗&c⊃)Qg#⊃∀)∀FB∧`ge∪⊂)⊗∩⊂f&![βE$c'λ( cdS!V⊂)⊃h"`jλ~⊗∧h∃id⊂#⊗(⊗,(⊃&∃W)∀!g"εB∧fgk⊃fP#⊗∩g$$a∩j∧D]Qhj`f∪,P!i∪aadiR⊂*g&∪aadFB∧h*iR%⊂(⊗⊂d"aeRFE∧h∃id⊂()≠XεB$c'⊂∀ cdg⊃V-FEαfgk"RP)⊗~βE∩ f∪!\]∧T'h⊂#⊗(⊗**βEijP⊂**⊗⊂β2-1(R)
	TLZ TT,-1
	JSP T,FIX1A
	MOVE B,(P)
	PUSHJ P,CONS
	MOVEI B,QREGPDL-1(R)
	PUSHJ P,XCONS
↓MOTEM A,(P)
	SOJG R,$ALLC9
U		9END OF IFN PAGING
	MOVEI R,NFF
$ALLC7:	SKIPN SFSSIZ-1(R)
	 JRST $ALLC8		;S@ACE CIZA IS ZERO - IGNORE IT
	POP FXP,TT
↓PUSHJ P,SSGP2A
	PUSHJ P,NCONS
	MOVEI B,(A)
	POP FXP,TT
↓JSP T,FIX1A
	PUSHJ P,CKNS
	MOVEI B,(A)
	POP FXP,TT
α	JSP T,FIX1A
	PUSHJ P,CONS
	MOVA B,(P!
	PUSHJ P,COJS
	MOVEI B,QLIST-1(R)
	CAIL B,QRANDOM
	 MOVEI B,QARRAY
	PUSHJ P,XCONS
	MOVEM A,(P)
	JRST $ALLC4

$ALLC8:	SUB FXP,R70+3		;FLUSH GARBAGE
$ALLC0:	SOJG R,$ALLC7
	JRST POPAJ
;$ALLC0 $ALLC5 $ALLC3 $ALLC2 RS.FF RS.VMO RS.SQX RS.BRK RS.SCO RS.WSP RS.DOT RS.MAC RS.SLS RS.RBO RS.SL1 RS.PNT RS.SD9 RS.ALT RS.ARR RS.SGN RS.DIG RS.XLT RS.LTR NWTNE NWTNN RS.FF RS.FMO RS.SQX RS.BRK RS.SCO RS.WSP RS.LP RS.DOP RS.RP RS.MAC RS.SLS RS.RBO RS.CL1 RS.PNT RS.SL9 RS.ALT RS.ARR RS.CGN RS.DIG RS.XLT RS.LTR NWTNE NWTFNRS&CMS RS.SCS RS.OBB RS.WTH BS,SEE
	α
$ALLC0:	HRRZ A,(AR2A)
$ALLC5:	JUMPE A,TRUE		8π	π=	∃αdJNQα|1αBεM∩L4(LB2JI∧⊃1"¬HH%nε∀9α&M∧b&NQ∧z→αNj∃α~⎇∩5αε_h(&"∃∩`∩∧~"$
bλ⊃⊂HK4λ∩αtI~5αr¬	∀`)5
(λ→q31)@*εE∧R&)-⊂⊂T∀ i TFEαa`dfλ!⊗(i⊃ch"&βE	 CAILE B,QSPECPDL
↓  JRST $ALLC3
	MOVEI D,1←-1		;SSPDLMAX
	PUSHJ P,SSGP3$
	JRST $ALLC0

$ALLC3:	JSP R,SFRET
	 JRST $ALLC0
α	 JRST $ALLC0
	SETZ AR1,
	MOVEI F,(C)
	SKOTT C,LS
↓ JRST $ALLC2
↓HRRZ AR1, C)
↓HLRZ C,(C)
	HLRZ F,(AR1)
	SKIPE AR1
∩AM↔∪!α↓β$bX!β$bR4∀∩@AM↔∪!α↓Yε~(∩@@A!→%$A¬$bXQ¬$bR~(Iβ→→dt∪≠=)∩A⊂Xg>Zβλ$%Nα:4<≥9≠$(h!~¬-≤	$¬αe88uβ~AQ LlzhTJ∧5E∧2HQ!∀l⎇hY∩∧"F[rkλ⊃↔5≥≤x9T
@Q!∃¬-9	"¬αJ:4=β4APPLYzd,Jλ5BD
&∃⊂hPα33jH2(⊃¬Fwk,!⊃.p	iQafdgβE	PUSHJ P,SSGP3$
	JRST$ALLC0
α

	PGTOP BIB,[MEIORY MANAGEMENT STUFF]

;+@ END MF GC@IB 247


;;@ READER 236		READ AND RELATED FUNCTIONS
3;;   **************************************************************
;;;   ***** MACLISP ****** READ AN@ RELATED FUNCTIONS **************
3+;   **************************************************************
;+;   ** (C) COPIRIGHT1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************


	PGBOT [RDR]


SUBTTL	HIRSUTE READER AND INPUT PACKAGE


SUBTTL	HAIRY READER BIT DESCRIPTIONS

	;OBJECP FLAGS  - AS AN OBJECT ACCUMULATES, THE LH OF ACC T
	;	HAS BITS SET TO DESCRIBE THE STATE OF THE OBJECT
	;BIT	VALUE	MEANING
	;3.1	1	TOP LEVEL OBJECT
	;3.2	2	FIRST OBJECT OF A LIST
	;3.3	4	DOTTED PAIR OBJECT - SECOND HALF
	;3.4	10	DELAYED DOT READ
	;3.5	20	ALPHA ATOM (I.E., NON-NUMBER ATOM)
	;3.6	40	NUMBER ATOM
	;3.7	100	DECIMAL NUMBER
	;3.8	200	FLOATING NUMBER
	;3.9	400	NEGATIVE NUMBER
	;4.1	1000	EXPONENT-MODIFIED NUMBER, E.G. ↑ OR E (OR SPLICING, IF MACRO)
	;4.2	2000	LSH-ED NUMBER, I.E. ←
	;4.3	4000	LIST-TYPE OBJECT
	;4.4	10000	SIGNED NUMBER ATOM, E.G. +A
	;4.5	20000	MACRO-PRODUCED OBJECT
	;4.6	40000	BIGNUM BASE 10.
	;4.7	100000	BIGNUM BASE IBASE
	;4.8	200000	HUNK
	;4.9	400000	A form has been seen after a dot.  For error checking
	;		splicing macros.

	;CHARACTER FLAGS - THE RH OF AN ENTRY IN THE RCT TABLE
	;	GENERALLY HAS THE ASCII TRANSLATION FOR THE CHARACTER,
	;	EXCEPT MACRO-CHARACTERS, WHICH HOLD A FUNCTION TO EXECUTE
	;	THE LH HAS DESCRIPTOR BITS AS FOLLOWS:
	;BIT	VALUE	MEANING
	;3.1	1	ALPHABETIC, I.E. A,B,C,...,Z
	;3.2	2	EXTENDED ALPHABETIC, E.G., !,",#,$, ETC. AND LOWERCASE
	;3.3	4	DECIMAL DIGIT, I.E. 0,1,2,...,9
	;3.4	10	+ OR -
	;3.5	20	↑ OR ←
	;3.6	40	SECOND CHOICE DENOTER FOR 3.4, 3.5, 4.1, AND 4.3
	;3.7	100	PRINT SHOULD SLASHIFY IF NOT FIRST CHAR
	;3.8	200	. <DECIMAL POINT> KIND OF DOT
	;3.9	400	PRINT SHOULD SLASHIFY WHEN IN FIRST POSITION
	;4.1	1000	THE RUBOUT CHARACTER, OR THE TTY FORCE FEED CHAR
	;4.2	2000	THE READ "QUOTE" CHARACTER, I.E. /
	;4.3	4000	MACRO CHARACTER, E.G. ', OR SPLICING MACBO
	;4,4	10000	)
	;4.5	20000	. <DOTTED-PAIR> KIND OF DOT
	;4.6	40000	(
	;4.7	100000	<SPACE> OR <TAB> OR <COMMA>
	;4.8	200000	CHARACTER OBJECT
	;4.9	400000	WORTHLESS CHARACTERS, AND ANY WITH BIT 3.8
	;		OR BITS  4.1-4.8 ON.

IFN NEWRD,[
;;;DEFINE READER-SYNTAX BITS

;;;THESE BITS OCCUPY 2.1-3.8.  DO NOT USE 3.9 (SEE TYIPEEK)
¬
RS.FF==004000$,			;FORCE-FEED CHARACTER
RS.VMO==002000,,		;VERTICAL MOTION X==001000,,		;EXPONENT MARKER, STRING QUOTE
RS.BRK==000400,,		;SPECIAL ACTION NEEDED ON INPUT
RS.SCO==000200,,		;SINGLE-CHARACTER OBJECT
RS.WSP==000100,,		;WHITE SPACE - SPACE, TAB, COMMA, CR
RS.LP ==00004⊂,,		;LEFT PARENTHESIS
RS.DOT==000020,,		;DOTTED-PAIR DOT
RS.RP ==000010,,		;RIGHT PARENTHESIS
RS.MAC==000004,,		;MACRO)CHARACTER (RS.ALT = SPLICING)
RS.SDS==000002,,		;SLASHIFIER
RS.RBO==000001,,		;RUBOUT, FORCEFEED
RS.SL1==400 00			;SLASH IF FIRST IJ @NAME
RS.PNT==200000			;DE@π∪≠β0A!∨∪9(@Q
=$A≥+5¬%&$~∃%&9'_rztb```@`∩∩∩m'→β' A∪A9∨(A
%%'(A%≤A!≥¬≠
~∃I&]β→Pzz`h@```∩$∩wπ⊃¬≥∂
A5β≥∪9∞A∨↓∨)⊃HA¬∪)L~∃%&9β%$zt`d``@`∩∩∩m≥+≠¬∃$A≠∨⊃∪
∪I&A>A¬≥λA<4∃%&]M∂≤zz@b```@∩∩∩w9+≠¬I&A'∪≥≥&@V↓β≥λ@4~∃%&9	∪∞zt``h`@`∩∩∩m	∪∂∪Q&@`AQ⊃%∨+≥⊂@r~)%&]11(zz`@d``@$∩∩ga)≥	∃λA→Q)%&Q→∪↔∀@tR~)%&M→Q$zz`@b```$∩∩w¬∃∂+→βHA→)Q%&@!→∪↔
↓0R~∀4∃∪% ↓αXY7→Y-≠<Y'#01↓%⊗YMπ≡Y/M Y→ 1	∨(YI Y≠βY'→&1%¬∨:4∀∪%&∀Cαzzq%&\C∧⎇>dd4∃)%5∪≤~∀4∃≥/)9
zzuQ%≥
~)≥/)≥8zzu)I≥≤~∀4∃↓
%≥∃αu:R9αU↓2ε
e~`4(M"∩9εU↓αε
eZJM→
~bt4U"⊗J6Lp4(Q+PK\YhB∧Lid∧d-z(@hPQ)∀4*	hU :Q⊗aQNjnhH1R3HT∀Q0(H4K4jK3U⊂+∧⊂R5
1"C"J*iQQGW,β"J*kQS)w/,β!*TkTj≠∂/,↓QTTkH*Ro/&Fλε↓ TTejpso'VLεεβ"TJ5UttπW,,εεβ"J*iS∀πW-εεβ"TJ5Q∪uπW,Lεεβ"TJ5TT∂'V,ε↓"TTei00o'Vα_⊂_βE))W∀f)V↑L__⊂εB))W)⊂αO==1000
RS.SL1==4⊂0
αRS.PFT==200
RS.SL9==100
RS.ALT==40
RS.ARR==20	
RS.SGN==10
RS&DIG==4
RS.XLT==2
RS.LTR==1
αIRP A,,[FF,VMO,SQX,BRK,SCO,USP,LP,DOT,RP,MAC,SLS,RBO]
	RS%!At{%&\¬α~∃)∃%≠∪≤4∀~¬≥])≥
ztq)→≥∀~∃≥∂Q→≤zzi)→≥≤4∀~∃	∃
∪≥
↓≥/)≤ααbAH_2e≥↓Q M$I`∃Eαλ_2e∃5d∃≥@Q*D-∀Y→`hPβ"W!↔q3Q∧	qH∩(h(∪Q*@i"εEβE))W⊂fi↑↑T)W⊗!∀%UafUif≤Jf`a←α]ad T aj"T⊗f`aT'P)lS* lεB))W)Pi↑↑i∀W≡!)∩Uif_Jif≤UTag←∧Nidg#S"Vad⊂i⊗ga∩⊂)lg∃ lεEαD@D]Tlg* V⊂#'iλ!d i∀P*$ U⊂!"cRe⊂'a∩"a`∀S
RS.OBB==RS.,SQX+CCO+LP+MAC+SLS+@!9(W'∂8W	∪∞αZb2Q\bRIXhRJM:="!`+Z*2sdx("\$zE5∃α8~%∪P↔:¬∀-JK∩∧mX9αb∧→k∩¬<z*DEJλ9∧
⊂β"TJ5Tq1'W4TkGJu∩∃Uih∃i⊂αO+FF>	3ALMH∂' αε:@∀λ4D
$
DD
D∀m(⊂	"Pd Y SEE

~∀_vI%∃β	π⊂↓%	π⊂⊂A%β⊃π⊂A¬⊃π⊂f@⊃β'π∪$A%	π d~∀~)'+¬)Q_∪%¬	π⊂A¬≥λAβMπ∪∩A→+≥π$J6 55DhPQ$E∀,_H4CP→*5α∧EI∀d≤→I@hP⊃∀αα¬∀J$,H9hU(H4B∞C"J(01⊂iπB4∃*9⊂¬⊂(*,dFB)"!d]fgUα@
A%!2∧4PJ*JN αJ∩∞A⊂4(Q$D
≤9→∪@L*:α¬"Hk∧u3⊃Q%∀$9ε#@! ¬∧aPdg⊂*∃⊗→_→BD]`∩ARA CASE GHEJ @%∃β	π⊂↓∪&Aπ¬→→λ↓
%∨~ααP≤MI	∀`H!∀∧U∃:@¬∀,_H4@H↔4∧
¬(X∀$d~:Bαj	X∃J¬8XR∧
λ
4-,IuU≥∧_8RpH*8∩ L8→∀b¬JAC≠Q⊃∪\@StS(→∩6Q$λtH⊃IzH⊂p)→β"Th∀α(∪)zQ2(
J-!Q@03HI(⊃∃¬F-mc!!33uHT⊂K∃
A"B3)zQ(⊃¬JSpP**P6#!!01⊃	∀∃∃	XU∀r+%l#"A~Suλ
J,!QB2U)Z∪λ∃
EJlaQB2∪
+H⊂+λε*⊃
!QB2TJ:λJf!"B2
*VH⊂%H*⊃¬⊃"B2JY4∪Hλ∃⊂t∪j	C"B)*Tuλ
(⊂r∪aQA"@↓Gv∩3H83∪λ	→Pp4jD∩3Pj83h⊗	→Pp,$	3Pp)Iλ∩3H83
λ	→Ptuε$∩3Pj:h∩)htu
∧	3Pp)F(∩3H83(	→Pp3∧∩3PI→Qλ∩)hSMλ	→PSL$	3PSG∀∪∩3H)N(∩)hp3D	3PtjF(∩3H83
hλYqPSF∧⊃3qH)3QλλYqPSF4⊃3qH)M(⊂hYqPSFQ"C"AQC"TjXU∃∪↓→Q5r)t∩3T
Zλ⊃U)hu∩3id⊂4Qj4∀∀Sh84tsj!"C"G7nb2J:λ⊃	→Pp3	A"Nng1"4/λiSP3(WC"Ng7h∀∀Ixq4thZh⊂4Hz313JJh⊃Sj$⊂3H	→T∃5∧λU3PjI3sH
H2r3Ht∀q⊂)h⊂4Q↓QNnndλ4Qu)X3U∀d¬⊃3qD
P3∃(T⊂3Q¬ytH⊃I→α"P T) lTK⊂)`k⊃iP#↔βE→]]Be)h⊂⊃⊗,$g⊂`f&εB≥]]DBh↑#'∪ fb←βE≥]]H$iP)Rfdf T⊗⊂!*U⊂$g)Rij)P∪e⊂ P⊃$l'*SP)"iUf*⊂∀⊃'i⊂*⊗dV⊂*⊗dh"bRTVεE∞]]P S"⊂"l∀ ¬C@)LA∧A$yα∞>u"ε&9∧*&Bα-⊃↓
~MAE	α⎇⊃↓
∞∧zB)	ph)mmZαNεZ-→αεI∀	↓"N,)αRfMα⊗⊗-Jp4(Q+∧LT8→DcPQ!∀U,Z	b¬"K	∀`(p,#!!4∃4i∧∀⊃AQTqP$Q2TTjD*⊃¬⊃ R1ID∀qP%Kc"R)@!`ij∞∧h*iR%⊂ ⊗∩dεFGET		;GEPS VIJFILE AN↓β$b~(∪'↔∪A
A)βA%βλ~(∩Aπβ%_	αε∪	2RJ-" $λJ↓α"J∃QαεI
bQεRLH4(εE∩2j%¬!2εMu~~∧$KZε"⊗≤Yα~>∩αε9αα8dλh!~D$td
Bd
8~"D
&⊃⊂K\izTtαλ→b¬≤h↔phP∀	%∃≥Dε∩Dα⊃⊃∪L@St⊃%D∀Q5
ZSH∀I_r∃λ~p6#!!2∪∀K$∃∃¬λλ∧DDNcbj∀'dg*⊃i⊂"'H'h⊂!∩jεE∧Sek"P∃⊗∀**
DD]cQj⊂"$⊃P aj∃`f⊂!∩hεE∧Sek"dH**⊗)T↔+gfBDXCHEC@⊗A¬∂β∪≥M(Aπ≥=(∞ 2λ¬∩	→β#iFB∧j"'∪⊂*⊗ ∃*)`i
 i_DB]a`gλ$j⊂"∪P*$$TP)`⊂E@π∪
∪A∨!Iβ)&|q|4(Jα*JN ↓E"⊃HH%niuB¬∀X¬∃*)H⊂4d	StS(→β"R)Htq3g↓33uHY(⊂k	→β!`∪ELε∩αw≥∪ ~∃∧JQαN|j⊗R	→d:¬Yi∃
1#"A~∃0	dλ#, ⊗⊃∧D]fPlP'"Qb⊂"'H)"`∀URN IF OVER-RUBOUT
	PUSHP,AR1		;@%∃≠≠¬∃$A)⊃∀A'
α4∀∪!+M⊃∀A 1∪')π¬_∩∩we&HAA%∨πM&A∪(4∀∪!∨@A
1 1λ∩∧∪A∨ A 1β$b~(∪πβ∪∀AαY∪9π'≡$∩w	∪⊂A)⊃
↓'
αAI ∩Vα)b∧,xgphPα(∩J*uλE6c"B$∧∀⊃4i	H⊂λYβc∧DNβHANDLA EOF	α	  JRST INCASP		;IF @%∃)+%≤ααR"⊗pαBJ>≤*⊗⊃α
∩0≥h@λλ_p23AQ@∧fgUα@
A%!1"¬Hh(&B⎇α)αAb$%@9irb¬(ZE-∀aQ%hHα.q)@ ∧ IFL SFA
P⊃∪9∞¬EPJR2x⊂λλE""'d¬U@'PA⊃β-∀A¬∪19+⊂∃αα(U≥3∃β!$g!`S&≥εE∀c R∧R*f`"H*⊂IN@πβ' H%nj-∩0~∧~(u_h*8d
(α2U)Z⊃(∃¬F*⊃∀CE	AOJL D1∪⊂~∞aH (!~4-%$λ∃∪
AQ L-λ9α∧
&⊂¬
λ∧DDNβDEFAUHT NIHλA
=$A∨_A-β→U
~*Lr≤FG LUYZ∧*∧~ %H3qPI@_∧]g∪h∧ IF NIL
λ	JSP TT,XFOS@ $∩w
∪1
A>∩αN~¬xh %αU∩NAα,z~
9H%nizB∧Ld
Bb∧z$∧L2	iu"∧i→D(hαR1ID∀qP%Kc"B$∧∩TTjD⊂3Ph→
#"I→β!`∪T2:↓HLRZ DT,(D)		;GET P@∨∪9)β$AQ~A>αα∀MAQ LlzhR¬"E
E"Hα".hx5λ∃	λαP aU*`f⊂⊂αIT
	MOVEI TT1'$]∂=~∩αw
⊃⊗∞X∧∧<→→e≥λ∩sIZβc⊂*∩$g#iCE	TDLN @(αbαRR≤
I"ε⊃	$%@88∀`$⊂5λIh⊂
$∩iP ∪PEC@∪
%
αzλU∀
I→t`'βFE∧H%))jλ$g!`S-		;L¬≡@1∧Bε 4IHR∧tz)T@⊂ε,]λ&#kbT⊂ EVEHλA<J21ααJ$
Q!∃∧⎇∧
αd_⊃⊃∪@8q1⊂⊃dπF VAH	+
4⊂λ&Rdr0∩∧EF⊂HKαq6
λαa`∀IL¬≥αλ∧∧4Mα∪U)T∀Q4jY∃∂c!↓(∩TJ:λ∩4jHp3α!↔pπ'h⊃T∧ CALL @)!
A'%∩⊗ε5∧
2⊃α<yα>aQ M¬X∧r∧
λε!DB]i"fQd¬BER EOF T¬β→+∀Aβ∂β%_λ ()→d
≥F7 LLzhTJ∧5I∀`(tp
3		0↔≥∃(
α⊗|1αZεe*∃ "λ∧siX5∩∩)@ π @+9∪#+
4⊂λ&BαZ4DRλ∧	~u⊂p)A .ph→α  TH@
A≤2∧4!~∧`:λ⊂λD@		;R@'$zJ*λYt2¬h→E,(β"B(`dg A(@∪≥
' ⊃LHI`≤$_@λ
I⊃(∀hh(⊂	"U*i'1dπF >4⊂λ%αU∩N@"	→d:u
α!↔v14eD⊂∧ g⊃&"P$U∧¬∀∪)' A ¬D5DβP_BDXELSE @)!
A-β1+
A∀*RVJt*⊃αX¬4jD⊂Q(λ∀⊃R6	@*fFEαh#h%λ(⊂

INCSPλht%'↔&∧qα¬2_H%n~⎇⊃α¬αu*21α,z→αZbV∃1¬~0∀02r)K εE∧H&gk"RP V$Sα0 ~@λH%mα≤b&AαLq↓5DhP&*NααQ2~β	e & ∧D]Qd∧SE Tπ⊃β(ααP≤
4
¬∀⎇i_D, Q!∃∧⎇	$¬α`⊃⊃∪@4⊂ε`∃ST BE A FIXL¬+~~):∩αw∃_
"	_db¬8h⊂hT→h4CTεB)Yβk"P⊂T∧TTSAR(AR1)	;GEPλAβI%β %¬"fB∃∧∩&BLhP&BIib∧
JJE≠d→w`HKαs5*:λ⊂Q$	3P∃*Aα@
	 JRSD↓∪⊂~∞aD4!_UD≤αλ⊂%H4L#!∧h"iR%⊂ ⊂,Xπ∪∨_↓0∞ 4z@λλ→β⊂$g∀*j⊂#∩d∧E@'AεC;t~∀&-B≤Bλ⊂λ~L#"A→TTu∧	3Pp)Fβ"R)@!`f_Nα	TLNL∧AαYQ)&y)d|∩αw%A))dAβ→→=(
α
LrεJ@∀	Tl$QQ J¬IId`$⊂+∃
Jo⊂SGa .s*Zuλ∪I@h∧ BE BINARY FILA~∀$@A¬%M(A&t~ε %!Q L-α⊂r∧λ+⊂4F⊃ ¬∧h∃i`λJ P,[IOL [NOT ASCII FIL@
C;t~∀&-B≤Bλ⊂λ~L#"A→TTu∧	3Pp)Fβ"R)@!`f-∞α	POP P →α$∩∩`.α(U≥⊃tQ$λ3qH
@ f*bCE$g!∩dεD:	SKAPE B,AR1
∀∩↓∃%' ∧∧L@PS@~βE	PUSH@∀A@Y∪≥
≥ ∩∩m∂)&↓(
&:4J2*	→b∧
&⊃P@LYzd,Jλ ¬λ4L"!QR3PIf∞B0h→3H⊂EJ∀U5	↓α@
	 TDZA↓
 $1Q Jαλ94M∧∀λ2e]J*U$EQQ Jα∧	¬∃∃αH⊂*&+∃I*K2#"GDh"iR%⊂ ⊂,AP@∪
=⊗~∀v%+≥→∨
↔∩4PJ6 =h∧r$
λε⊗f∩dεBNd∩∩`.⎇α⊗96≤z∩&:8∧∧`8H⊂	h⊃aa$g⊃∧¬∀∪5≠ ~⊗h∧¬≥αJ:¬≥⊂Q)∀`(SH&A→∀TVD
∃∩)@!'∀T∃∀@
	HRRZ R, @)PR~(LBJ2¬¬⊃1"R ¬⊂hPα4∃*9λ⊂	h)
	HLRZ R,ANBL∧rQλ$~∀&%∩0∀rλ∧@⊗
β0∞nnβ1@ (αB(	
TVH
%λ⊂@∀CE	MOT¬⊗5¬⊃1"R ¬⊂hPα03h%'⊂*$g!'L¬&A	!
A%¬_∩∧vl∩@@AU→%λX1+∃%¬	≠β≤$p
↓αt*P~¬h→E,*aQ#@7b(λ
(01∀¬E∀Q0(J⊂ε`gβE&$g⊂'≤↑NKα-INBL9¬

λ¬∪≥π¬_d`(L
6*1¬!2&:≤
1\4PJB>A¬↓2∧⊃⊃∪@:α+gP⊂i#iFBα	POP P →βHb~(LRV -λT∧
∪∃I∀`(R3Q↓Q@∧a`Rdε AR1(	)%U)⊂~∀$A∃%'PA∪≥¬%_
 Q!∃¬-9λ
¬⊂""'i`k"H gc⊂∃αALUE
∪∃M A)(αbb4z:hU8h∩(Jλ∧ri~⊂#"J8P)")*Tq⊂∩dεCAL5
∃∪→_	αN4	2l4PIα*J≥!α&:≥~QDQ!∩α∧**5"∧α3Ph→α~FEαP⊂⊂%∀)j⊂$SαCSDH~∃∪≥
' ⊃EPJt%@8Yd"∧α1SD
qP#!↓10!R⊂ V T_@		;MP	↓HA≠+≥!α
∃∧2& $Tλ∃∃∀≠⊃P@LYzd,Jλ⊃BEαα""'ij'i⊃P ∞EW EOF T¬β→+∀~∀&U∩NQαLr≤FA⊂K\β02hT∀p
i⊃P#j$⊃i⊂$iH!gi)⊃ajεEβE$g!Pd∧7:	HRRZ D, D$∩∩`.lzJ¬ααI∧Rλ¬∃i@P i#T]⊂#'SβEY.
λ	JRST S %]_
ε0hP4*⊗|2α9ARαB>BJαA1DHI`≤<X@λλYβc⊂+⊂d∧UE OFF STACK
λ	MOVEI A(AR1$~∃∨→
&:!P4(~ID`)H⊃⊗D@	;BIH
λA→_∞IαLrBVQ∧*0≤2λ¬∀H~β"B$	TTu∧λ3qPI@→FE∧T*id P,F		8π
∨$↓_
V6-∩&∞εbα& 5λZB∧∀eD∧4Mαλλ@ Lπ$AπA_∞B!Q M⊂ε'P⊂T∧400000
EH∂
¬8ft&¬*N!ααb∧4!~¬-≤αλ∀¬Hq3qH'~FEαe)`⊂ T,E@%M) ∩∩m'(AU AαA→%β≠
4⊂λ&6⎇2⊗ *λ∧λYβc ∩TL∧∩αwQ⊃∪&A%&Aβ≤αα⊗ <dλe∀XQP@!4q5	(⊂QJ
Q∀α!∃β)bbH gc→βE)c IDh ∃SHJ @ 0bQλR$∩w%+8Aπβ→1∪⊂~≥∧2V 48¬∩)@dε~∃M
αH∪5≠ ~⊗Jα~@λ∧ @)		3@)!∪&A∪LA)"*α⊗ <d
d@∃1(λitH∀hh4c"J8P)α*
4r∩D
λε$g⊂βAS@($∩w"r∩2∃∧
0∩¬8h∩b∧YJ4*¬*Yb¬$α⊃(λ`f&"T∧¬∀∪5_∞@59∀∧"bβ3⊃*ε*hλ@(P)∩wI')∨I
A
∀
6∃αα:E,4aQ LE*)∩∧λε"i∀* ∞
	BLTD,E@%I)≤W→∃ bZ@λh ⊂M8¬0D
λε-f⊃i)`∀P+2,,LERS@)@Ve 4KZ~2Vα9α∧TP3(Q ¬∧h∪βP@∀A@X∩$KZJ-JZ$`$λ⊂	"Th¬LTIHAααα0≥∩λ¬∃¬⊃ ¬εE⊃dπFBN5:∪!= A Y∧∩∩αw
_∞ ,T	∧-∀T	t`$⊃3qAQ@∧j&⊗αN A0h``@β↓@ (αPq)@c!'58∧⊂∀!~∧`:⊂¬⊂( gc!∪α5¬
	SK@∪!8Aα$HI`≤4z λλ∀⊂π ∃LL EOF VALUE(λA≤r⊗ε.Lbd4!∀¬≤\~λ∩¬%EK∧
@,""'P)f$T⊂ 	N↓α@@5α⊂λ	→β)`∀EAD
	  BSP T →
a_
YDHI`≤,J8R¬<α⊂5∧
p4h

SuR(HαbεEαh ∂PJ P _∩$∩vA≠U' ⊃α∀)α¬α4Jb:Vhh ⊂c\Yxb∧3qLDλαgc≤λ ¬OF1 @∨\A⊗>3!α,xg∩∧3qM$λαgc-βE

λ¬'+¬Q)_∪≥∃(∞&=∧*0∀"β3qEXR3⊃$	⊂3Q	I3Qc!∧¬
;lp
αλ→d$dTλT`8H∪sD
u⊂3HH4Q_i3⊃(λ~TP6$	3H⊂*&+C"AQQ3qG∧h ∃SHJ FXP,SAV5
∀∪!%% )¬!2
~α
$%⊃↔49⊃0rd
p∧"j∩ ¬R IL∧A%¬λ⊂∀!→%,@4∪@⊂∃⊗"gc⊃i
ELπdt4⊂
N~λ∧@L@3uTi∀∃∃⊗⊂iP∞@'→α~*≤2¬⊂&$"0∀(⊂
* i`i
 i_@)	;DID AN SFA GET EOF?
αSFA$	 JRST ELπ
 (HI`≥LX∧k∧	Q0"T⊂ g,H ¬OFFL∧~(Lj0≥Q2(
Jλε#$Kα@∨4⊂λ&"α*%@$⊂K⊂
J∀p4Eλ4L ∀CE	JUMPE B,@∨T~∀&-B≤Bλ λ~L#"A~p¬dh⊃P V"SβFRTN
∩A!%% )∧	162-∩N@%¬P%λ*"+J81(⊃)@c!$g⊃∧¬
	EXC@⊂A∧Y∧4PJ≤IHbβ∩Eλ∃∪
⊃Q LUYZ∧`$⊂+⊃)@c~εE⊃dπF 0βP&N9~∧*¬H~¬∀1α"'i"`b∩dεG FRO@~A%_
~&d)|4!∀¬¬-9	"¬αβ∩3J	tα"'lb`∪, P@∨ ↓)⊃
A%_
BVα@
≥⊂0raQ@∧h*Td 
 P,@∨\~∃∨_bt&U~AαIeα∩2¬⊂¬S(hαB4	@h 
 P,λ
(hR⊗<d¬nA→∀TVDλ+ →
(⊂			8π'β-∃λAβ$βλ4(→Yu (αP ∀T,TTSAR(A)
λ∧∪)→9_	αR ¬E%%4π∃↔@∧D]Q'`∞'T C@→∨M
A))dA∪≥¬*Q04PIαBVα9∧R¬¬I∀9α'ibBDX FLπ$A$Bε@"λ¬p*4⊂εbi⊃d∧Y OT¬⊗Im∩V
>- 4(~	u∧Rλ∧↓Q@εE"SβF4:	@πβ∪≤βαP∩R∃*R 4PIα*J≥!α,xf⊂hPα4ri~⊂π⊂* gc)∃'
	 JRST @∨`~∀&E∩J5αλ¬Bl@⊃0	)U(⊂
 "αBQ$∃j4,*λYt4∀→h@hTYxcKPα33j@ ¬ @ 1⊂≡~α*D`! ∧W)QbP ∀YPK9
	JRST @%$βλ4(Q(T`8M(
∧T*id%λ(⊂EOF7
ELπ
 )PJN.~λR¬$~
$, ⊃↔4`)h⊃3hd⊃P
g⊂βP	∪∨8X	αJ,
∩&:8∧∧5∀yPλ	→β#$f⊃←FE∧H(*`∪HJ P,IL¬!>H%nf-→1αB⎇↓αRλT¬≥⊂0raQ@∧ieRh ∞ ELπ
%)8~∀%∧RJNQ∧*0≤3⊃Q LU*:B∧3qN!Q@↓Gp∧g(∃X⊂$g∀*id IH
!
DA∪≥¬)EIαLrBUI∧J0∃¬T∧h	→β('hλ$g ⊂U5 @∪≥A*`→αLrBU]∧J0∃¬Tεβ!∧¬∀~)' ⊗
%"0&:-:& :	→e¬-9λλj3Pu	→β`∞

0⊗@Xπ2∧D→~%J∧α3T
Zp∧⊂#∃dεC@)%_∞ 2d
¬-≤α⊃4dλβ$f"H'`∞DO IN@'Qβπ-`h ∪[4ε`⊂∪βR MAYBE PUS@⊃LA∪≥
%→αXA=$A6
J∀(⊂λ'T)P∞
8εvvA%_
Bz∧¬∧⎇λ∧h	→β)`∀A@π⊗A∪9)≡A∪9
∪→
↓_∞ 48U`hPβ"R)@(*P⊂:	P∂)ααα`≤∀_@λλ~Qh$	3Pλ*Td⊂nFBαIN@!U'⊂t∪
β∪≤A∧Y)%+Q⊂∩αwM+¬$@D~∀&E∩Jiαλ¬E $αj,dCE	JSP TT1β
∪→∃ ⊂∀!→%∃≥D	∀`*∃(	εBα	P@+M⊃∀Aαbε@$α1Si1"B5)@&#aeRF@
	EXC@⊂A∧Y-∪≥→∪⊂∩∀hP&"J∃Qα	24J0∃≥H_4Xh!~¬-≤α∩H
¬⊂ssJ1"B3)Zβ"f@ @∧Y-∪9' ∩ε≤X4*&uαUEHM~.&Bp∧∧
@∃R3Hi3⊃#!∧e))U⊂ 	NPU12
	CAIN A,TRUP@⊂~(∪'%R5αR
αJ,AQ M∧z	"¬αββ"AQR3T
V,NB*
4r∩D
λε$g⊃&*`~
λ∧∪∃%M(A&uαUDQ!P@)3Pλ*L≥ieSh∧T A,BP≥
	JRST IN@!T`⊂∀!~4\M	`λ
Jλε∀ JF@
	JRST IL¬!*@λh ⊂L*YU∧bλ¬∃¬I3Pλ*MF@
INPU3 4%⊃%%4↓αP∩ZLr~&2(H%nεp∧∧L@T⊂
iR⊂ OOPλ
(LBJJ@$λ"e4→j5$91P@!4⊂
iR%⊂ ⊂,@π⊂≡h∧c!∧fgk⊃d¬ A1(
&:α:D≤αc"A~pπe#H**⊗$SαPU &4⊂λ&*∃~Qα→j¬+λβ"C!$g ⊂OP:∪≠=(
:%¬"Q1DhP&BVα9α¬αβ⊂"!↔pε`∃ST SAVE A (E(
∞\αaαN⊗*α2>ε ¬⊂hPα4∃*9λ⊂λ⊗⊂βPGPAJλ
¬∪9!*j@PJBVN@∧∧5E¬JE HαR3J
-H
∧Te`h'λ V+$SαSTACK
	JRST IL¬!*@@h ⊂L	J%@$⊂4@_K∀ TFBα;	PUSH@∀A@Yβ)∪→_∞,4SX&V:dz≤\α#"A→⊃∀VDλ4L ⊗
 TFEαd¬OVEM ARDY-∪≥→∪⊂∩∀hP&"J∃Qα¬1D	$4!→T`:β"f@ A(	-∪9' ∩ε≤X4(_→u≤<T¬∧5E¬⊃P@!2TTjD⊂∧g(∃Xε~∃%_
BUαp∞A~u0@⊂⊃,(⊗)
β0 ⊗@λh ⊂L**5"∧α3T
V εEεBαIN@!Tpt&lzP∀2(⊂%J∀U5	↓α@
	MLπ ~⊗h∧∧
@∃R3Hi3⊃#!∧e))U⊂ 	NPU3
;TYI$ %@)e∩A)3$A+≥	e∩A+≥Q3∩fAM+⊂~RLH4(Q!P@*u0U
Iα5⊗)∀⊃P
g⊂βP	&|qαε: ∧¬∀H~D,"λ∧SjZ⊂∧g"TFEεE∃,dR:	S@↔∪AαAY

∪ !α⊃⊂K]8¬0J$λ∧'$S⊂⊂∞ 0) @≥π¬→→β¬1
~(Jα6 =hY∩∧∩H:∧`:⊂¬εEαh*`∪H P →4⊂λ&*∃~QαRLH4)⊗αK∀KPα4ri~⊂(⊃EHqR6ε⊃ ∧]f∀h¬BRP`@\α↓I%αt~ε $β⊂0IHα@
	 MOVEI F,CPOPJ
λ∧∪∃'@A⊃K	∀`(p3∪↓QTqP$Q(λλ
∀5⊗2!QTqP$A(λλi`∂.TYI,,],,Q%TYI~∃Q3∩`(Lj0≥Q2(λ∃α(Rj⊗d@
	PUSH↓
1 Y	
!%	@~∀&E∩2j5∧	2
~α
$%Q!∃¬-9	"¬αβ⊂∃→303AQ@∧h'T⊂# _P,BF@!I	 ~∀%≠⊂≡Z,Iα¬1E"Q$⊃↔4(4QC!∧h'h∩⊂(⊗εBαλ
(hQ`≠[4	TLd
T`*⊗2(
)u0
$Sα@
4SY`≠X__484⊂
)H!`λARACTER IN A AND↓∪⊂~BαZB∧∀→HR∧Ld
dL@QR3λUβ
;8εv∪'Q∪π.α4∧9⊂4P(h∧E@$αα∀90λ	→β*'P⊂βHARAAP	∧αα∃,hhU∩pQ'3@7b0s	@a!"i∀P V! i_@,T,TTD.  MUST SAP
A@Q'∀A%β⊂RP_Q!PE,hK∀KPα4∃*9⊂¬⊂($g##Qh∧D]Qbj)P∃$g#$S ¬ IN AR1
λ	SKIP@
A$
BJ⊗ h %α≤
& 2λ~#
@∃∀U*Iβ"B$∧⊂⊂	)⊗α AR⊃,V%@)e∩~*L20∩¬8h∩eXQ!∀l]h∧r$
∃⊂*5TqP!⊃,r⊂)Hα E DIFFERANDLY @∪↓β∀A≤2∧4λM"∩:∃¬"Q2ε≤
I"ε⊃	$%@8∧ri~λ∩1D	Su⊂⊂e⊂ ∪FA
∀∩↓∃%'λααNF:%J$$↔:44
λ¬3JK2#"KQ .q)@ ∧ IFL SFA
∪≠=(
,∀λBc≠∧∧εελ∧ @)	;U@'∀@d``@``A¬%(@A∪8Aπβ'∀A∨AyR4PJ6 =hY∩¬%EHdJ@PPPa⊃,¬`∀HE 100000 BIPλA∪LAαAπI_∞∞4λdm∩λ∧∀H~α*εEαD@		;THAT↓≠β≥LA↓=∧r>@"λ
U"∧9λ∃∩∧zZB∧|dλT9⊂πc$S iFEαd&)-λ*⊂@TTSARλAR1)	8π∂(ααN&:<b∃α
,2~⊗J,!α∞α
⊂4(→*Tm∧T
Be,jK∀K_⊃↔5$DX∧Q$	4h∪Iyβ"P⊗H* $iH$iP"PilFEαd))-λ!⊗ *∃)`i∧⊂i_TDNβFOOEY  ~A]
A-~Qα∞|rMαRD(4(→Yu (αdP*∃⊗∩Y0000  !(Rαv↓_∞"⊃∧∩V~~-∩⊗⊃α∀
ε-α≤BεHQ!∀U≥∧
Bd∃α⊂si@)DD]H$g ∀O T@⊃
↓→∪'λααR=αd*ε@4T
$`9βbFEαh*`∪HJ P,CMH
&∩$p
α~⎇⊃αRλT∧d5h∪i@ ¬¬
	MH∂-$A)(Y→∩P~
∀_4(→
%∃TTλ∩d¬JJ4
∩λ~#
Hβ"U)@*,dYNα	H@%1~AλY↓))'βHQβ$bαH%n
,2~-$λ$≤αh∪HZβP!d⊂i
	POPJ P,

λ¬∪
≤ααN~¬eX4*NαYe%L↔!∃¬-9λ
¬⊂b"'a`g'∪βPλA¬¬'⊂Aε4⊂λ&6⎇2⊗%ααJBbD∃⊃⊂K\9λ∃∀8¬⊃*$⊂∧g*∪β TT
λ∧∪∃'@A(@25Bε <h∧b!↔qq3HZP5⊃$λ(∪∩*:λ⊃R+	U3#!∧fgk∀dP",SH∞M,rP$%]*:RfJα0≥∧X∧P*I3sC!∧fgk⊃dP!V
 TDDNβARGUMENT↓∪⊂~Rzα~αα⊂rλ~P0uλZH⊂
'H*g",RT@
	PUSHJ P →∪M)πβ_$∩w∂≡↓)≡A$B∃αN4	α∞εdb⊗HQ!∃∧⎇∧
αd_Q!∃∧⎇	$¬α`Q+PHKαq3HD⊂∧c'λ)c FBαAS ESUAL
]	0↔9λA∂↓∪
≤AM
α4PJ6>Zα9∩¬"JJE≠d9G`hP~HDt(⊃⊗∃*)`i
 i_DCE	 JRST $DVLUZ		3INPUT (FILE) CDOSED LOSSAGE!
α$DER0*	LOCKI
∪≠=)∃αα@
J∀p4Eλ4L"!QI⊃⊃*@_X
	SKIPN↓)(I
$Y¬¬ε!(R4PIα*J≥!↓α∩-1H$(M"2j9¬"Q1Iβ↓AA@hP%α
∃~Q↓∩$*P∪⊃Q LDJ+"¬%EJE H↔9t`(αP!d⊂i⊂$iH⊃!*c⊃ i"bλ⊗⊂!gH* ebH$jεEαiadh⊃P"εEαP λ@%I0
Mα4I0∀∀(5¬"HQ!∀U∃:@λ∧Hα"k_Pα	α$DEPcαβP&&>5→αRQbBRQ∧HI`≥⊂⊃4HT⊂∧iP⊂P!*c⊃"i⊗a⊂a` LIST
	SCIPE D
	 @⊃→I0
5ααJBd4∃h$∧~λ@
!↔hPq
$H∩5∧	1H∪IZα⊂&bT f,P∀ ¬EKIL¬ε~∀%≠⊂≡Z*αRQ⊃E"Q$⊃↔4@Qλ∃λ→q(∃	@h⊂!d⊂iαE∩⊃ ¬V #λp∪)%i_A)(0b``@@`∩αvD```@β↓α6⊗rMα∩|q≡Aα⎇*RBVα@λ
Ih⊃0i	qR3λZc"B$	TTu∧∧⊃⊃5HXpπFEαjg&%T'h%∧BU)bbH*g*,RFAεEβ≥R""Uα2 $DEP
→~α↓∩%iIUBαHJddm∀∧D%4IP∧∧α"+&∪XP∩"⊃hεP@&I∩Zα
3
αHJe¬≠∧∧D%5λ∧v∧∧α"+(∀Y⊂∩"∃αPS &4⊂λ (αN`≥Nβ @≥≡↓∞"ε∃→α
V42⊗J⊗ ∧∧(0r`⊗λ)`∂ DISPAT@π⊂A∨8A~&d)αRf∧(4(Q$D$5H	:	H@→%hA$Y¬→!%	 4⊂λ&Rdr0∩¬EJE%≠JK∪pH↔9∀2¬I	∃~∧α4sDzα⊂ @ TTY,
λ∧∩A∃I' ⊃↓$"⊗@3A⊃∪@4∃∩⊃)@⊂#'i⊃bj⊂!S ¬VER HACKS
α	CAIN R,Q%@)e∩∩%\J→αRDJMα~4α*⊗2(ED∃∩⊃)@∧¬
	 JRS@(α↓∩$X¬P)↓ ∧]@ PULL @π⊂∩⊗αhU∩∧_:DMP5∩)@dε HA@π⊗~∀%≠⊂≡Z*α→2→tj0≤$U
BHhαL@_	∧j&'⊃P#⊗#⊂αT<LN>λ
)⊂εα J	*%≥λ	⊃λZβ&&FBα	JUMP@
A⊂¬B$⊃0~αDXNIL @≠¬_
Mαtyα∞HZd-∀hZ5~∧~@λλ→α 
	HRRZ R,TI,¬¬
≤αBQ$Q!∀U,X∧∪D
K	⊃λZβ( ∪
λ∧∪)→9_	α→d2∃#HjSpHα.sI@P( ∩E-SCAN @
+≥
)∪∨≤αA∪≤A→∪⊂∩∀hP%α**5"αHHU &β"B*Yβ&'aRd@			8ππβ≥P@E!∀*N∞εp∧"∧TSs$
∃⊗(
@dj$,Y↔⊗a∩h∧ CHARS
	PU@'!∀A Y%_
4J[ hPα2TJ:α⊂∩"⊃hε$

0⊗vβYα2→hTl@q⊃(λitH∃
K<c"AQR1SDλα→_⊗⊗β
∀I⊃ ~2hπ LE)IR∧λε∀(
F@
	PLπ A
a Y)(α$$↔:∧`:λ⊂
$⊃P OCKI @/=%⊂4PJBVNDQα5α∀
85H
FBα	P@+M⊃≤A
a Xp@αp4(~94M∧T
D,@Q0(βE	 JRST $DVLMX
∪≠=(
⊗%β	15@ε¬b[
λk¬αλβ"B)
S∩(ε∃α~~04ε``~(∪⊂⊗>4)↓I2]∩↓-Izαβ#∧∧KQ ¬∧iQh∧Z 3,λ
(Lj0≥Q(∀EF ∧DDNβSAVE BP IL∧A$~(∪⊃%%=~A)(αb& 4	_$Mα".m\8¬rP≥x⊂↔5LOCKI
∪%⊃))2~(∩A∀R6AαLJ0≤-*!P@!2⊂	)⊃dP#⊗X∧0  8PdR~(∪∃%'P@@∩∩4b6DQ$D%4I[β@! ¬∧fSβP
∩dX@5βεα`%l*⊃K
λ∧FEαd)&$H→⊗~4070 -λ∧∪≠∨Y∩@@~aQAAph ⊂LYzd,J∧¬ε6βFE∧SdπVEI 1,-D~∀&E∩J>T
E"dα3R	_R5β!∧fgk⊃P)⊗→βE	SIL∧~(Jα⊗J*m↓α&&|*JHQ!∀E∃(Y∩∧K ~_⊂∞(LR~(Lj0≥Q(%F@εE∧R))⊂→→FE∩⊃+&&hNα
∀∪)+⊂⊗Bpε→1∩%225@hP%αB⎇α%α~β
αcC¬aP@!(⊂λ*Td⊂#,∀⊗**∧BDXRESP	∨%∀A→>≤Z%α↑⎇∩⊂ (!∀∧U∃8¬∀Hα+ ⊂SX	∩∩m1& ∧∧@Qλ∃
+(⊂1h→3H∩(d⊂π'j∩$g#@ IH
!- 4(Q$D%4IPπ⊂( ∃SH F@1@Y)(∩$∩w%M)∨%
↓→∨π↔$A/>∀ 4(~Ydd|99⊂HHα".jYβ&'aRP*'P∀ ¬RMIT CONSING
λ∧∪≠∨Y∩A∧αb0∀LAQ"$∃S∪&↔@∧df⊃!⊂ ∀T,R~∀%∞ε&pεRQF6phPα(∪)@hεEI TT →=4~∀&U~AαQd2b∞yj0hPα4∃*9⊂¬⊂(!`∂NS
∪≠=(
∃α⊂¬DλhαB0)@e&⊂#⊂∧DVLM1~∀%!∨!∩↓
1 X``\4PJBVNDQαAIj$-Q0	)QD@	;CLπ⊂~M¬*AαRD)α2~:@hPα33j@ ¬ C,A
∀∪)%'(@⊃	-!≠λ$$↔0λλ→β"⊂%∪βIN "PRE@'
β⊂~:-⊃∩∧9xD(hαW"!↔q3Q∧	qH∩(iH⊃→∧¬∀~(~∀4SY`≠Z	Yt+(⊂dSαNING PRES@πβ≤AIβ	HA~>⊂∧¬%%≤∧c!⊂∧DEVPS:	HRL@~A⊂XQ R$∩w&u20≤\T
DD(⊂λ)⊃T¬SCAL∧A
,r≥⊂∧ggλ∧¬∀∪A+'"Rα~bAe~ε@3Q⊃∪@8R4TjEλ⊂	`Uα@
A$B∃α↑⎇∩2"λ¬∩λYβ⊂!`S&⊂ ∀HE SCAL¬≥⊂h ⊂LYzd,Jλ~#∀
E
"HHα.qJYβ!`∀ILπ⊂→ααy∃$B∧4∧
∀zYT,@U∀nAQ@∧fgUα@∩A∧XQβ$β	$$↔0αC
∀
DD(⊃R)HαP i∀ h	
	HDRZ B,BFPRDP		; (HRA)⊃∀A~Vt~R&>p∧¬$zλ*T4Q0	 FOR
	H		∧ααQ2mβ↓IEAαa2
~α
$%¬Q↔2αC5∀∧L2¬E∀⊂∧iP	i"`b⊂*$"CE	UNLOCKI
∪!U'⊂A
a Y(∩$p
↓↓α↓α:Vl∩⊗Iα|1α"εt:& 4t	u∧3C"A→3uQ)∀⊂k
λk∀
"!↔hλλ∧∧∀⊂4HYβ*$"TbiFEαh*`∪H BP@ 1
5λ∧Q
↓ ¬∧h∃i`⊂#⊗(⊂LPL@
∀%∞ε2d1↓MEλ∃∪∀∃⊃P@!4∪t∧λT∧ ⊂,LP@≥4⊂∪!∨@A¬ "α¬D(β( ∩DPλ
(M~V	α5BA2I;↓-DQ!∀E∃+$∧
∪∃ES
E¬⊃P@L*YU∧(⊂ ⊗	 ∧VEF0	↓;NIHλA≠∃β⊂~M∧zP∀4K4JXSu5¬D⊃0	#Sβ EOF
∪≠=(
,∀λ2bD∃⊃P@!4rr*λαP ⊗.RSE@(4⊂λ%α≤
& 2λ∧@⊗∀h∧TYBUF∩∩m	∨9=!α:⊗,!αRtλ4D0r`⊂∀ ¬S@+1(A&0h ⊂J∧	%∃≥D∧D%5λ6⊂HKαh∩*D∃p4d	u0	 Lπ⊂∩⊃∧2J&⊗t!αRRL∩V_Q!∀l@uQ2$λK
⊂e⊃ ¬∧d∪)(
 A,(B)		;@→∨= A)≡↓(
-)_eJ¬Iλ∃"¬(Z5,@∃∀hλjSs ⊂∃*,FEαP 
SP B,TYLπβ%∞$∩vA↓I'πβ8Aβ%
↓∪⊂~∩,*⊃αε≤~&%ααh∀e,X∧c!∧P$)∀-⊂!,(B)
	 @∃+5!≤A∧αa0∩k1Q"$∃Pλ)L]	LO@π↔$hQ∩%h∧∀fπ@∧d)∀-⊂ iT∧ ~BαBA$⊃Q L@3uQ$
	∃∃
84J⊂*&*#"A_4∧!dλ!PFI,¬¬¬ε!(R%]~0~∧_HB∧dα4u∧	qH⊂iλ4Th
Ih⊂U(hβ"`∩5
ε∞Xh ⊂L*YU∧rλ5B$∃Pλ)L∧@	;@A>⎇αM "λ∧siX(λTi@ ¬AKED" IN
$DVPSX 4%∃' AHY!	→∧dZj~(∪⊃	%hA⊃E
αHhαB5)@& ∂CKI
∀∪)%'(@⊃	⊗Y H%nεt!αRJJαε≡εLq∧4!Q"$∃Pλ)L≥	TLX¬∃α~aIAAαεβ@"B(	*Tp
 $@	-¬→L4!→T`:β"P K εI.B@¬ε@"α@
!⊃ ¬∧fShεEI @∧X@"~H$%@8*T4Q0	-@¬βπ⊗αα2&N ∧α*pπ"`Rbb⊃ UP IN T@⊃
↓≠β≥Q∪⊂⊗∀hP&BVα9∧R¬¬Ed`(pπg!BDX JUST TAC@⊗A%(A>p∧∧,@Qλ

93Pq$	5λ∃h~hλSλ~α"a")
α	JRST $DVP@'`~∀4R"∩ZB≠→`&6⎇2⊗%ααJBbD5⊃⊂K\*Xd4
%X$≤αh⊂iλ4HλJ9Q02hXλH∃*∧⊂3@⊂∃$"P&Q`g ∀IME~∀%≠⊂≡Z,Iα
⊃h ⊂LXε⊂i∧⊂k⊃I∃β!!!J*⊂		;LIS@(αα~J>h∧¬%%~84@H⊂λ&⊂abb IHAε4⊂λ&Vtb0≤≤αr"!⊃,¬c'Sβ! @!∃%≠∪(αα≤@pπ ∪IL¬≥dλd`9βPP⊂⊃'`∂!A~>z	 (αB2J:λ⊂
,FXCONS
α	PUS@⊃∀↓ Y:≤z0∃_Q!∀l@uQ(λ∃α!FEαh*`∪HJ P,.L¬π>t_4(→*%≥λ	⊃
@()P⊃
λ∧⊂∀ cZHHU &λ⊂
,Rl!`∀I∩⊗αfD$	⊃⊃*@~!P*⊗dhλCT TYIX@π ⊃↓$"⊗@54¬⊂	 ∧E@,Q&@I	∃(	RUα"∩-d¬⊗D∧α""k
*⊂∩"⊃hεAH↓)3∪π¬_@I	Yβ⊂b@⊃	⊗YαIPhPβ"Ng]P ∃NIPλA∪9!+(A=_	αJ,
1α∩-2&∞∃I5α→h4e,I→d:α*JEJ∩	→b∧≤~8R∧|dλ4@⊂ε⊂*∪β TYI @
+≥
(∩(hQ∩$XfC@!4rr*	λ⊃KλeS3qλU∃
"!∃β)bbH εBT9∞ (β"B$	TTu∧∧α""k
F@
	HRRO TT, ⊃
a R$HI`≥~~0→H40r bet`)∃`	β∨,εBπεTπ<=Y0∩λ$g$$PαIT
		∩∩$X
N⊗*↓∩$XfhPα33j@ ¬M TT, INHIBIT		∩wQ+%≤AQ⊃∃αdz≤\α(∩)@* ∂ A .5LO@π↔$hR&~9∧JRMK1P@!33uHT∀K⊃E@!`λAN(T ∩~(∪⊂∩N@∧¬∩c&qP@!23tD
K⊗cI→βj⊂_**.FBα   SP@π¬∩0~∧α3U
K4∧εE∃,dl!U≥l!U⊂)∧DB]`	NPUPλAπ!β%βπQ$4R↓↓αiz¬∀xQ$D$5H
!∞α	JUMPL @)PX@∩∩-2⊗_⊃↔4U,X∧∧`9β⊂"gQ∧¬∀∪¬_∞Mα2r~Bz5¬"Hα".i@h∧@⊃I(∞&N*α& 48∧Q)X3Q⊂⊃$f"P∀'idj∩dπ@≤@!_∞-α-2⊗ 2	_b∧∩hiD,@H∪Q(u εE∧R))b $@	304*@Q⊃∪@83Q⊂∪βF IFL∧Aβ)L~∃∪
8A⊃Iαb`_h$HD-M⊂nA~∃0	d∩⊂# _P,SAV3
∪⊃I%4@@λ¬D2t(ibE"α#"D∧λ⊂	h⊃ah ∩O IN@)Q30~∃Q3∪ "≥!`⊂L)→`HHα.r)@(*`∀↓∞"ε∀
≥⊃0	εBα	 ERJMP $D@,@% 4)↓αα2>Bα)phPα33j@ ¬ @)PXd4PJBVNDQα5α⊂λ⊗∀)j→FBα	AOS F.FPLπ&@"α@
!⊃,¬gj∩ ¬RWISE IN@π%≠∃_
Qα4J2*λ∧∪j95∩3i@⊂⊂λOK @-8A∪A_X
4HYb∧tXp
!Q@∧ieRh ∞ TEH
E4(∀	%∃≥D∧D$5HεBα	TRNL∧AXD`∩αwMβ∪_A⊃∨&AQ⊃∪&AQ_∞ ;qQ M∧β∪Q$λK⊃PJGα#*←αDXI DO@≤OPA+≥	∃%')β9λA)⊃%&~∀∩↓∃%'λα↓∩$Xf`hPα0p)→β⊂ ∀T,37		8π ∩⊗t*aαzzα&Mα≥⊃1α

∩_ (!∀∧l@uQ2$
∃↔IQ ∧]o↔P⊂
 <αα≥⊂β"B)*Tq⊂	 ∧EF6
P~∩$p∞⊗: ∧∧`8H∩1I@⊂"→λβE$c'λ ∧10,Y
SA$ $DET∧iε@PH$%@8∧p)→α⊂ ↔ANT'S LINMOD CHE@π⊗AY⊂→α4zIαRLH4(→Yu (αP ∩10∞&:≤BV "λ¬∃Q ¬∧j∪''⊂# εBT≤LN0≤~)'αJ@⊃	⊗YαH3@!α@
	 MH∂-
↓$Y7∪9∞"J8∧¬%%QQ"ααλ∧tλXt⊂	'H$g ∀TYX
TYIP⊃πPpλ&@λ:B¬⊂β"H∧∧⊂π'h∀'FE$Q'⊂ ∪AIHλY64⊂λ&R∀r∃α→c	@$↔8d`:Qq5∧
⊂∧$iH$ aeH!'i∩d¬AGE MODE
∩A)%'(@⊃	⊗YαaP@!33uHY(⊂	,(TT)		;CANMH
∪π¬→∪ **αεN∞LIα∞≡$*L4(M"2:∃∧124*CD5+a⊃∪@9(⊃∪i@⊂πT UL¬∩⊗α*5$h@λ
I⊂4c!∧e))U⊂∩""UαS4		8π¬+λαα≤@pπ#"T*⊂$gλ''g-FULL MH∂	
4⊂∪πβ%_	αIc→H$%]"& $HW"β≠$πSrβ⊗r`hPα(∩
*Sr(
%-`≠βE	CAIHA⊂¬CmB"'i$cd∃⊂!) PbY⊂_Mβ0@@hπbβvQP@J	
%∀|∀
"cvQP@L8→∀`$∀K&@X¬∩∩mβ⊂∩Rlz∩+αH&@X¬  :βq↓ML PROCEED
]	↓;EL¬⊃α|1α&~p∧¬≤→AP@*p)"(`df⊂∃*∩~_αDXCOLTROL C@ARS CAUSE AN IN@)∃%%+¬!α↑α,qαJ⊗ 4*Nλ(%α
∃~Q↓∩$*P∪0Q$D$
dJS@L
)Dj∧EE¬αHβ"B)Yβk"dH ⊂(TT)∩∩m_∞ 4K∀∧L@U⊃4J*4⊃⊂∩c⊂$g∃⊂#"g⊂βP@∪∨8Aβ "M~RL4PJJ>Q∧!15DHI`≤≤β⊃5HZH⊂4J(4∧P Pab`∪S AS PER @)Q3∪π⊂4⊂λ&ε$"%α⊃d2∩t*XbE"α#"A~∃0	dλ!( ⊂,Rλ
(LB2J@$
"bDE⊃P@M99∃∧q(⊃↓Q@∧P$∀)(
 R,(D)
λ∧∪∃+5!∃αα ∧Hα"c~⊗αλ
(Lj6@4Y∀∧"cFεβββ¬
E"Hβ"B)
S∩(λEλ∧ iT@D]U$"`∩E IS NLεA>∃2& =X∧h	@ ¬ED↓
∨$AQ⊃∪&A9_∞@8Q!∃¬-9	"¬αβ∃0i	3P
∧B]cdk⊃P*`∪ER @∪≥Q%%+A(A
∨HA))2↓∪⊂~Q∧~"εHhQ∩$X¬M≥	POP F@1@Y$4PJ"2JRα⊃1λ¬⊂hSαh∀h∀λ	⊃λZβ~+≥αh ∂P FXP,TT	↓;RESTORE THE C@∨≥Q%∨_A
⊃β%β
)⊗HhP&*J≥!↓$HZc !α@
]		;END OF IFN DD`⊂∀!Q$L4dλC∪αK1PB$HZc%#!_u%≥J1P@MIIdbβ%E∧=~XYt2Hβ"B$	TTu∧	23q**@εE∧R))b $@	
∃∩¬:$∩w≥⊂A∨A%
≤AλH`∩(hP4)@4εndλ(⊃∀I_p¬`→ HACK↓)≡A¬∀Aπ2-2⊗Iα∩6@-D	∀lLXI∀
∧Tλ∀
⊂∧k U$ggεB≥]U@ Tπ⊃≤ααRf%αB6Iαα(T$9∧	tH∃iλ5⊃5HZJ(∩*4⊂∧g+∪d∧VED,∧⊂∀!Q"$⊃0 R≥ieRh  F,F.MOD@
Q(αH%nX¬4jD⊂Q(
I⊃(∃
K(⊃Sj$∃∩∩*4∃∪h
@dπRK
λ∧∩A∃I' ⊃↓$"⊗@3QQ LE*)r¬%EE∧5E¬⊃⊂K]M
↔4~_9∧Y=≥↑H→y.D≥~→$∞x8 %d @∪≥!∪¬∪(4⊂λ$⊃⊃∩`*q1(∧Hα"c_βE	MOT¬⊗5¬"Q2→i∧L∀~A∪@:α*`∩N T@⊃
↓→∨π↔$A∪≥$yα¬↓q*2>∞\H4*& (&*J≥!↓$HZc$_⊃↔4L<βStHT⊂ε$g⊃P 
ODE(λAβ9λA+≤)α∞α
∩ε∞R-⊃α&:α
U"¬X¬3aQR1SD	5∀kFA⊂⊂λ)h"aT)'P$S**,lβE*,dPβAL:	,¬πβ→0@A	Xi~$KZ≡.
∀b∃α∞D
I1α-2⊗ 2	_b∧tz@λλ_u∩5H~⊃1β!∧λλ∪I@h)'FB∧P↔&∪βSE 1400
	IOVE TT,TTSAR!β$bR4⊂λ&N\JB9αα λjPsJ5∃∃∀CE	 JRST $DVAHD∩∩`.$z0∀(∩1D	Sh⊂*:pπadPh∧ED↓_∞@-J
U"¬JK⊂hPα2∀II(⊃⊗
(⊂	
	H∨-∀A)(YQ)'β$αBI$↔:U∧⊂5⊃$λp∧ i∀'iP Sα@λA→%_
,h¬3$λβ)'fH!j`∩SLπ$4PJBVN@∧∧5E¬J@hPα4∃*9⊂¬⊂#⊗(⊂CLRO4		8εA!∨M∪ ∩→yb∧|dλ∃≥≤βpr(~α"b Lπ ⊗R¬*QαR%H4(~	uα∧hε∀¬Jβ"B)	∀VHλEλ∧ ∀CE	MOT¬∃ααJBe%J8∃∩D~ %⊃ ¬∩"∃αAH "βP&⊗@λ9α¬"β∃∃↓Q@∧e)∀h∧ $DEPi∧4⊂λ (αI⊃λZβ~&@:	SE@)h~∀&≤Jb
& αr&>%`$%@9∃t`4∃∀P)@)c"iβE	  500  0X@⊗RL
≥α".j(α`b @π⊃β%¬∞@$X λ	→αfbb∩`j"f⊗P"`⊗EL∧A&2α0∀⎇Dλ∀
∩5P*ItC"A∀λλλ∧∧λε⊗#αC@⊃β8Q(@$KZ≤D→id,@λλc!∧Z_→__⊗⊗∃∧@]iRdεGLE C@⊃βHA%%*J:⊗ ∧∧D4Q(¬
λε⊂'∪βPλA%!¬$Q+PHKαq3HD⊂πc⊂∩c'⊂$U)FEεBαλ
(1m∩$*P∪,∀∧D$5H
P	 ∧E@,U⊗@I	∃(

V2αRf&≤	E↓∩$*P∪-$∧D$5H
iH⊂∧DEV5H
4R4)@70∞dλpπb"H εORFILE ARRAYS WITH A BUFFER
~∀4⊂	∩∩-1V¬@!~¬-≤α∩H
¬	⊃⊃
@!*c∧B]cbjλ P'"Uβ BUFF@$A1⊂∞ε⊂p¬α↑ε$~!αzZB∧St@_YβcεEαP 
RST $DET¬∩4⊂	∩∩-1Uh⊃⊃⊂K\(~4L~λxU"k∃X4D
$λe∀|β(⊂JXQQ4HXλ⊃R)HαFE_L⊂∧	HRRZ @)PY~λtB⊗⊃
@
!⊃L,	↓~pπicQP⊃∀*∃∀@
10 
∪'='∂
A→	:∞u!"Q⊃⊃∪@8pπaBL@
A≥∃1(A∪9!+(A
⊃β$~(∩A*∃~Q↓∩$"P∪,⊃⊃∪@906(	@"bb5'P#bU⊂ ∞EW BUFFER~∀D`@⊂&Lb∩	ααJBc
λ¬∃¬⊃ ¬_@0%	ILD@∧A)(αb~	:∃↓"Q⊃Q#αA~Ddtd
Be%J7DL@/B"'dg⊂$S`cbP∪dπDE, W@⊃βPA3∨*↓'~α&Mααy∧
λ⊂gUP#bj∀F@
1@H∩A∃U≠!
AQ(XI	∃(	T⊃↔4L@H⊂4hddP&SβDE, A @≥,b1α~4∧dMJHU∀
	it`$⊃tP*H εE∧R))`∀$@	32P_hαC"AQL¬]@; READ IN A NE@.αα∃,hhU∀dβp1∧∧λεP)Rdh⊂)⊃h∧U@%8A∨9¬~V∞∞-~M "	ir¬≤αr4∧	pπ⊂"SβF~∀lp
mα-BB,8¬∀dλ4TP+∀∀⊂
)λ$g⊂ T_V⊂*∃)`i2dε @(α↓5αN
2⊗Mα ∧∧@Qλ⊃AQ@εE↔∀bbP#∀'iP∃
λ∧@∩∩-1V-hHH$%@9Iu≤Lhpλ
;30SiD⊃StDλα)e@:JL@⊗@\b&NBαD¬∧
H9hRHHU (U1NA~∃0	dλ εP⊃ 1λ⊂∀!→T`:β"P" εB.BT¬ε@"α@
!Q@∧`b⊃&P",F.F@!=&Q(R$p∞@-λH∃$(⊃R)Hαh'iH!(	 NUH¬HA∨AYβ⊂∩_@+5⊃4aQ@∧ibU-&P#⊂α.BVC(T ∩~)∪
≤A%)&@2Xh ⊂LXε⊂i∧∃∃
Aα@
	MLπ ~∃∧!24%h$4bα⊂
*
DXBYT@
Aπ=+⊂~PhP& ,zhR¬"β⊃PE@$a(∀∃*⊂		;@¬3)
↓!∨&u"⊗HQ*ELL8⊂'∧W!`S&⊂ ∪ILπ ⊂4PI↓:2⎇~∃↓E εβ@ ¬∧bV!`λ T,TT
	SUB↓λY
∧αr∀S
∃¬⊃ ∧]g⊃c`j$Uα@
A∨_A≥+≠	%&A=A¬3Q&A∀*ε⊂4PJ6 =iiR∧λε#!αC@≥ ¬¬"Hβ"B)Yβk'&H ∧ →
λX

Z~BQ$Q+PHKαq3HD⊂πc⊂∩c'⊂$U)FE$Q'⊂"20,[
	PU@'!∀A
E↓2Nε3_$%@8∧∀HZq0	+⊃P OW T@BEE AC'S
α	HRRP∀@DY→:T20∩EE⊃P@!33uHTK⊃H↔$a(
*⊂	
	IOVN 3 →
λX

~bBQ$Q!∃≤La⊃⊂K](X∀"∧∀λ%,4hZ$5,AQ LH@λε5⊃P@↔⊂α@
_QPR~(Lj6@4YPλε5⊃P@↔⊂dεT(T)	0↔≥"0≥∀Tλ4`:αg"∪βF BYT@&AIβλA%_	α~Lb∃αx)$,≥AQ L@3uQ)Tk⊃H↔!+!J*⊂	
	IOVE @λ@1_h &BαZ4DRλk¬αe*:C_h+Q⊂K\YhB∧|d	∀4rλ@F↓α@
IFL∧Aλb@Y6~∀%≠⊂≡Z*αRQHed9⊂3@∀∃∀@
	LS@⊂AQ(Xdn4⊂
&~*αNε&bb`_h!~Ddtd
Be%J5d∧hQ!∩∧U*:Bα⊃⊃5FZ@εE∧R))-⊂∃*⊂FB,¬⊃λαBQ$↔9T
L(T∧*1QQ*$⊂∧ iH!"bgλ)"f'PβATED? THEL∧A
∨H~∀&lzP∃≤α(⊃¬E⊂QKI→βjTPβE	ANDCAB↓λYQQ(R$KZRVJu→α>~2α∃,hhU∩l→`*Zq(⊂I~α⊂ g⊃⊂ b+⊂dεCES BUFFER~∀%'↔β!≥
@@" ¬⊂HKαpQE@$gjP∪h¬S@(αα∀(⊂R*D
@≤H εOR↓)⊃&~αR=ααyu∀XQ!∩∧U*:Bα⊃⊃5FZhβ"A→3uTi∀∃∃⊗∃*)W!∪F@
	AL¬∩∞iαRQe"RNε⊂¬∧
∪∃⊃∪@:α*`∩N OFF  ¬¬+
→$[≠=(
,D λλ$j⊗⊂⊂αUT LEAVE @UF AD@	$A%_	α⊂hP&&>4)αRQd10∀≤α⊂3E
λ∧FEαd∧SH↓)(@1⊂εphPα2∀J$∃∃⊗⊃∧¬∃:$p∞⊗: ∧∧`8H∩1HT∀p2)Aα@
$DEPk⊂π M⊂ε'P∃*⊂(IL∧@`X$~∀&D~QαR H$%@8∧Q(_λ⊂ ⊂∪α@.A	+

I
+_~(∩A*∃~Q↓∩$*P∪,Q⊃∪@:u0phZth#!)`RDPdεDCMI TT0Zb4PJb>I¬"Q2mβJ5$
Itβαdα3kHYβc⊂≡y∪≤@@Xp~@QQ MD8¬~Jβ"B$	TTu∧	23q**@∧D]S'iblK& ∂SEY
∃∪→_	αNJ12lhP& ,zhR∧λε#!αHED!(R4PJ6 =hT∧"c%λBHhαB3)@hεEM↓λY
∧αr∃45
BHhαB2JYαh#@ D,$DET∧k~~):∩%\*0∀λ∪qD	1S@⊂∀`dfεBαX
$KZ⊗ 4D	t2∧α1SDλα_XεBαIFN↓∪ ∩M\!IAA→%,@4∪@⊂⊃⊗∩""Uα5M		8πλA⊃=→∩Mα∩2>Ql*0≤2X∧ hPα(∀	@h⊂#,∀⊗"∧DNβFALLS THRU TO H@%
↓_∞ 2λYt2∧9yd$MI→t`!α@
	PLπ!)¬↓0$⊃↔2∧h@λλ[⊂∧j)H+`	THMP(AM↔∪!∧J0∀c"C!$c' D10*<1('β%_p→2Xh ∩⊃⊃5FZnH∩
*T¬⊂*∃⊗#!.H@λQPR~(LBJJ@)PλλEλ∧ ∀T)	∩wM)∨%
↓∞@-*(T`*λ⊂U(hβ"`∩↓β		$αα& 2λ9t`*∀Ss∧λS∪pi1 ¬∧j∪-⊂",-1~∀%β	λA⊂Y6`@8εβαbβ7!Q@∧j&∪α@
A ¬E%%5h$`!α@
	 TLC D,0700 ε`⊃Qβ4(→Yu (αfP"_T ∀T)	∩w
_∞ 58¬∀JXuλ∪HZβP!(λ εOR↓
V~4*H (αB3)@hεE D,(D)
λ∧∪)→9_	αQe"RMh)`hPα(∩)Zαf$P⊃⊗~FEαd¬OVEM D,2(TT)		;S@)=%∃αt*P~∧+~D*∧9zTe"	→dM⊂πP!∃c#"i⊂βH∂:αJ$`9α⊂
BLLππ,hQ`≤4→IB¬$α⊂	*H* ∂ $D@,@,h4*@Q↔4,@Qλ∪hd⊂∧c'λ ∧10*<1-CAIL>

$DET∧k~T$∩∩%\j0≥∀T	∀`*∃0
 Tπβ&A=↓)β∪9λA¬dA¬+
→%λαα& 5λ¬5↓QR1SDλα_X⊗⊗β
∀∪5≠ ~∃∧!24%i∧,"α⊂
)
∪≠=(
*λ@ε%⊃
"!↔pπ ∃M@¬⊗I∧z→αZb&⊃α∃JR-1Q L@3uQ)T⊃⊃H↔!+!J*⊂	
]	0↔9λA>2α&~9∧!E@4Rr⊗ %8UE@1 ¬∧fSβP
AQ(Y
∧αr&
AE!$4!→T`:β"f@ TT →
λX

AE!$%@9→dM⊂∧`f∩m"P!∃c#"iλ( ∂INT@$~):∩`.,r⊃αxdα`(αf)bCE	POP F@1@Y⊂4PJ*JNα@λ
	t∩L!⊃,¬`∪KIP @%∃)+%≤β_∞ 2λ∧u(ab`∪S
~∀_vI	∃(	Y↓$"⊗@3h¬`⊂	 ∧EF6A $DET∧m∧@⊃	⊗Z,~0~αHHU (αc⊂∩⊃+"c_H⊂∧DVEF0

λ∧⊂∀'0∞gP+i T⊂*`⊂, W@∪) A≥8∧∧9⊂4@⊂∩dε @)PX	↓ααZ∧$
HTα*⊂1q)@*fQ AH
λ@	→∪≥9+⊂∃	bαε 4DλT9⊂πFEβE∩""Uα62	SEP	>h∧∧L@R∩0I~α⊂∧DNβRECOL¬-∃!↓9Vdz≤\α(∃	@P OCKI~∀%'↔β!8A∧Y
$X


~BQ$Q!∩∧U*:Bα⊃⊃5F@+FE∧R)&&@ D, ⊃$~∀&lzP∀(⊂	,Tλ
(MαVN	$∧5E¬J4
M#"A→Tpλ
E⊃P!SβH
&~(∪!+≤B)αAdr≤@pπ ∪
λ∧∪≠∨Y
AεY∧~∀&U∩NA↓$"P∃¬4∧β!↓α@
$DEPm∞βP&*Vmα1α⊃Lπ!)¬↓0$!Q hRHHU (αc⊂~	UNLOCKI∩∩$p∞∞yXR∧DX∧Q$	qH⊃)@cαE∩⊃+"c_Nα	MOVL¬∩A%!1DQ!∀U,XλR∧αβ⊂t	Z⊂¬∧DNβH∂:eIαB⊗,Z& 4uD¬≤Z	XU∀3⊗(
(5∃4I@⊂∩P⊃
λ∧∪!-~")αα¬D,@qB"'i`	GNAHλA=⊂∀λLRJNQα"∩-i_4(Hα.tHZα),P∩c⊂ ↔E SU@%Y∪ ~∀hP4)∩%2⊗→Aβ!∀U≥∧
"e∧IH∪∩kQ⊃∪@83qHλ_U⊃4D
∃⊗4h`g'$SαC
	JRSDI∩Z,1D4(hP4(1m∩$*P∃≤h⊂α$⊃1Tε∀	⊃⊃*@(→⊂∩⊃ k "H$g##U_⊂$g⊃!bj $@	-→U0Aβ≥→→5 )∧J24J[ hPβ"Ng]P&'Tdg#@⊂βKDE FOR "$@EFI@π
E∪9∞AαAM
α
∀4⊃∪
≤ααN~¬eX4)∩$*P∃≤h∪ M¬X∧r∧λT⊂λ⊗⊃∧@]iPhεE D OVER CALL
∪!U'⊂A 1α~∧∪A+'A@Y∧4PJBVN@∧¬αd1Q M¬X∧r∧
λε iFA∧h∃i`⊂( i→ CE	SETZ C,		↓;NIHλAβLA∨ A⊃!≥⊃⊂~Q∧
J∞LhP&*Vmα∃α⊃b"∩εZαλPHK8∧⊃(Yp3QeD⊃21i
λ∩⊂)Hα""P∃$"P)Q P"$Q εE@%∃_
R2Hh &"∀b`∀Jλ¬⊗∀eW ∀YI	∩w]
Aβ%∀A	>Lr≥ᬬ"f$Q$D$5T'∧h ∃SHJ @,ISTCAL		;IL¬)∀rε!α≤2¬α∞b11α≤2¬α→`λλ~L#"DHα"c(≥∧h'T⊂(⊗ T→ FEαh'h⊂∀⊗ i_CEh'T⊂(⊗!CE∧h'T⊂(⊗!βE	POP FHP,D
	SKIPE A↓		8πβ→→=*A:L`4(∀	%≥α
@λk⊃UL!⊃,r3J:4Q(λi4∧'*SP g"λ#bj∩dεTO TT
	JUMPN A,POPAJ		8π∪A9≠∀[≥%_A)⊃∃_	α≡⎇!αNyXU$Dα3QeD∀sh
(5∃4ID∩5β!↓33uI@$P ∀T,1~∀%∃+≠↓∀A⊃J	u∧!⊃∪@9βc&,H("beRe#V⊂∀eP&bT f,P∀ j*i∪α %!
λ	PESHJ @ 1⊂≡_HI`≥≤_ydBλYt0H!~∧mα
¬Dλh!→%∃≥D∧D$5R0hQ .tHZα),P∩c⊂ ↔E SU@%Y∪ ~∀hP4)∩$*P∃∧TεB)Yβk"dH**⊗)T↔+gfBDXCHEC@⊗AQ⊃∃ααy∧L≤α3jλαi j∩dπ@≥ε↓≠β'⊗αα~>I¬"f&B,*,4(Lj6@59∀¬"e9ue$M↓Q M∧IhR¬"β⊂∃
Jp4@∀⊂TD]aPdε IT D@≡A%(}~∀$A∃%'P@A	Y b$KZf⊗Mbα∩=αM!α$α4Q(h∧@→24⊂λ&6⎇2N%α ¬E≤@iP
,RD@	;ELSE DLεA& ∧∧
~λ¬⊗)∃βjg*⊗d@
	MH∂-$Aβ$bαa"¬$HI`≥≥J(T@(∩3Dλ4L ⊂⊃'i⊂$Th∧CAL
∪!U'⊃)¬↓2&NαH4@⊃↔4$zλ¬∩λT∃⊗2!Q@∧e*Sh"P K⊂∧DEVP2∩∩m⊃∪(A∃_∞_4PJBVN@∧¬αd⊃⊃∪@:Q31)XQ0	 THE CHAR WE WERE @⊃β9	⊗⊂hP& ,zj4J¬EJ4`5β*g*αDXNOTεA+≥Q3∩A$B∃α∞D
Jε∞αHU⊂@ ¬∧fSβP
∩↓
 "α⊂ ∀BDX@)!
Aβ%≤A∪&AQ⊃∃α≤BεJε≥"⊗HQ!∀l@uQ(λ∃α⊂
 $αBA$⊃↔4<-D
DD(⊂	c⊂P iP⊃$i)jλ i#FBα	P@+M⊃∀Aαb&NR≤
0$¬\"0~¬IλR¬,hK∀HhαB4	Zλ⊂λ⊃ ∧D]Q*b#bH* λE @π⊃β%¬β ∩⊗⊂∧∧
~λ¬∩λT∀Q5
ZSQ1∧
P3∃(Q ¬∧e∀)j⊂∩⊃ ¬V@2
P~∩m⊂~⊃∧J~9αα8dλhαC"AQR3QHzα_⊂~	PUSHJ P →∪9
→+Ph ∀Lhht-∞B4i94∪@⊂⊂i_V+∩dεFILE	0↔∂∃(A-∪9
∪→
↓∪⊂→α
⊃D4!∀∧U∃8¬⊂∩dεFGT0λ
(Mα0≥∧αH∀¬Aα@

$@	-→U0	hε¬*N!ααb`~$HZb%@ εE$SαFLZZ8∧∪'↔%!αA ¬E@;tr6λ$j⊂.∩dεFILE CLOSED!\]]~∃%_
4J[#@!33uHY(⊂
,Xπ'β1	∪ ⊃αβH$"λ¬P)J1(⊃I@i⊂$g⊃$f"PW,¬~∀%!+'⊂ααA2∧hP& ,zhTJ∧∃JE∃-I↓⊂K\α3QI→α"P$TP P&∪βSE@$αλ4(_[∧9λ⊂ ⊗∃αINFIL@
4PJBVN@∧¬αd8∧∪jλ2C"A∀1P0d¬∃
#!∧¬∀_w¬3QβεA5↔⊂~I4→α6.α 
HH@εEεBαλ
*≥*αRR`JJ,_IDM≥ED∧L@4∪∪hHαV⊂&Pe`∞AM
~∀4⊂

@~HT≠Tπ5
Aα@

MK@≥⊂εd7@∧fgUα@~APY≠↔≥
⊂⊂∀!→%≥αλ¬∃¬I4Q⊂!Q@∧ieRh FE∪ei≠"⊂α:∪∪⊃!∧A¬e)⊗ε~b_hαB4
Zp∧%⊂∀⊗ &eSαC@⊂~(∩A*∃~QαJ$
⊗ 4AQ M≤βrQhT⊃∪):MQ⊂AQ@∧h*Td⊂#,∀⊗!,j⊃`aFEαh*`∪HJ F@1@Y%	αβ 4(→*5α¬J@	~Q⊂ _CE	POP F@1@Y¬#)∃βε~∀%'⊂≡(⊂λλE⊂εei
α@	∧~(~∀4P1nJ,
∩2ε≥!αJ∩eα⊗-αα(De%→∀¬∀∧JK∪
¬(IE%K4
$$eK↔∩¬∀IJEK∩λ∧Q	J⊂¬P⊃R@		+9)3∩AIβλmA$mεD~∀4Ph ∃∀X_DdM8@∞AQ@∧e*Sh"P K)"&_Lε@
	MMP
∩↓Y%	1)3∩~(∪⊂⊗>4*%α
e∩∩2Vu"f$Q!∀U≥∧
Be≥λX4)3Qβ!↓(λλε∧⊂+∀HI⊂4QaQ@∧P⊂λ_⊂!,TYIMAL∧⊂∀!∀ααβ∧λ2e,jK∀L@03C!∧fgk⊃dP @,R@@∪≤4⊂λ&BαZ4DRλ∧
(α`b0A
∀∪M↔∪!
↓(Y%	1β%∞∩$p∞J⊗b2eα⎇*≡"Q¬"0~∧→ID`:βFE∧H!`dgλ*⊂-D∩∩`-∧	αRJJ2&:8∧¬≥∧_8PhPα(λ	*Tp
 UH
¬∪9λ⊂∀!→D-∃$
$%∀T∧"!↔u∪sd	03V$λp∧ i∀FAεE∞β;; READLISPλA∧*⊗-αr⊃αRLIαJ>-"& 4X∧kD∧λ∧!cα $DET¬∪π
$Xλ (αN`≥Nβ SAVES A1	2
d
IJ¬X∧∧9α ∂BBERS AR1.  RATURL¬&Aπ!β%βπQ$A∪8A)(\4⊂⊂∀*(De∧Y0∞A→TTu∧
Q∪∀	6 ∧D]T  TYI(
bA%&A
∨HA!-∪⊂~≥αBN⊗∃¬"f&B,*-$Q*$$eK→∪@!4⊃4i∧∀⊂!Q@∧ieRh ∞ A,RDLARC
	 JRST RDLTY2~∀%∞ε&p∧∧
Bβ(λFBα	 LERR @%⊃%~f∩$p∞@$yt∧4
tλ4D
*1P@Lλ∧TK⊂ iλK∀ TFBα	MOVEH
AβHbP∩J$bεJ≤hRJ$JK∪Pα2∪
+H⊂ ⊗
 TFE∀ ∧DTY3:∪∃M A(Y
⊃≥,@λh &*∃~QαB⎇αε(∀Ph ∃∀IJEKKαB4i≠⊂R5∧⊂π'jλ iadRP!d T⊂h

RDLTY2:	HLDOS RDLAR@∞~∀%≠⊂≡Z,IαRQc⊃AL$KZBN⊗,"0~M8∧⊂(8#"B)*Tu⊂∀'h eβE
RDLPKDpλ&N\JB*λ¬∃¬JQ∪⊂*(c"B$λp23D
∃&⊃ ¬∧Pλ%))jλ&Xj*∀%		;RATURL∧@@5α⊂λλitH∀λX2r3Ht⊂5∧ ¬OF"
∪!U'⊂A 1α~∧∪!→% )∧	2αJ$bεJ≤hP&*J≥!αJ∩e"eL$KZ⊗ %8T¬∀
JZ$b∧9λ∃∩bλ*U"∧Iyb=αλiE-≤↓Q hU(IE,uK→∪@@ B3)zβ"dP∃*∩∀ JFA∧e∀h⊂"ε⊃,!gg∀FE∧d∀)(
 B,RDLARC
	PUSHJ P →π=_
L4PJ6 =hYR∧
J(Dd
(qP@M	z∧R¬¬AP@!α@
READ6C:	PU@' A¬ "α¬Dλh!→TmQ2(
E∀MPf⊃ ¬∧h∃i`λJ FXP,MKH
$m~∀&≥*↓α~β
αe∪v¬3λhαB2J*uλ∀I→β*"i∪αλ
(hRIZ
α⊂∞A→3⊃⊂D
∃&∃⊃P(
FA∧e∃dh"P∃*⊂CPLπ!(hP&ε∩$IαRQc!@ (αB2J*uλ∀	@h!_FBαλ
(hP1nJ,
⊃"	~$,D	∃∀01_H'i"`Q⊂)"`Q⊂)"`Q_⊂ ∩EADS  R@β	M(⊂∀!Q%≥0U∃	A4Q0(D⊃P
g⊂βP	&|p4(Q!P@'nh
@ ********** H@∪%M+ ∩∃¬∩⊗ε∩-⊃↓))RQ)))RQ( (αTQ(_	∞B)Yβk"dH*⊂0
λ∧∪∃%M(A%¬λ⊂∀)~$,G!∀l@uQ2$
λε_εBαIREAD10∀∪M↔∪!
↓)∨%¬λ⊂∀!→$83∪⊃Dε-K⊂
ItQ0(Aα@
OREAD:	JSP D,INCALL
SFA%	   QOREAD
SFA$	   @7M~U%⊂XY:X1#⊂≡J,
⊂ (αTQ(_∞B3)Zβ"dP⊂T∧QOREAD	;EH
β¬1
A))dA!%
5'πβ≤4⊂λ&"α)Dj∧∃H$5¬(JhPα33j@ ¬I A,RDIN
∪⊃I%4A ¬D(β( ∩DPλ
(LRV -	`λ
E∀Q0(Fα.si@dπ@∨!LXAαAI
P⊗⊗u"Jε:α@λλ`f&⊂∃'P ∩EAD
	PUSHJ P →%∃βλa∧$p∞@$βt)Hαk"fλ)"`bβE	HLLZS BFPRDP
∪'-∪!αAλY%	¬-4
∀*ε⊃Aβ!∩¬¬X∧r	$∀∀HYtQα'i"VbSαTRANT READλ
(M"2
αα@ε&,λλ_α]`OSIH
∞AM!→&≤J0∀h∪0(i'iP⊂h∧ @)= A2-2⊗  Q!∃$d9`λ
EL __εE∧H%))jλ)"`b∀h∧	;JUST GLεAβ%=+⊂~⊃∧
0∀λ⊂
)⊗P c`Rdε~∀4⊂
J⊗"MAhM"2:∃∧⊃1EAαεββ↔9∀2¬xT∧,@Q⊃1∧
p∧j$λ P ⊂SEP	≡5'!βπ∀~∀%¬"2:9∧⊃1Q@KY↓!Qαj∀MD
4-λ∩3D
t⊂0hT∀pg∃ hλ),
∩@↓)→:p∧¬"cd∧α'P ∂R↓∪A∨	∃⊗∞α@λ
@`ig'T AN↓β ∩yP↓Q@∧P⊂λ( ∂PJ P _∩lA)",qα$βh∪I@h∧ BUF@
⊂∧∧(0r`⊂⊂P!d T∧¬α;lp
αJ,
∩MAβ!∃$dβS@⊂⊂α,100000	;IF @/∀A⊗:$*⊃α↑M"!α¬α∩P≤Dα5⊃%Zt⊂0hTH⊂rλ~P0uλZ@εE≥Nβ; 	 TL@≥≤β(Xl@$p
αz λ	_H∪pI(αa`∀Tπβ'≤α:Qαεpεε@$βs ⊗βE_ 6βY%↓¬α0≥∧αH∀¬A,¬P*∩ ¬N DLεA:⎇!α
V42⊗Iα∀
≤Zλ⊂λλd iεBαλ
(LRNAαα 
*TPu↓↔pπj$⊃i+diQP 
@+M(A+≥Q3∩Aααα≤D~(∀:α"`∩
λ∧∪D~!α¬d_4(~
U≤DαH∀¬H∃3U→303AQ@∧e)∀h∧ CREP	(hP4)@8¬y${y⊂_P9x ,icing hCGβ∪=βπα@λ∞Mβx⊂ ,evel.  @∪L↓ShOF↓_
&1;READ0B RD0B1↓%⊃B⊃∩¬αJ ε∧*S(∀J@)!`∀
λλ
)[Y`~ααJJE%H∩⊃*(αP$jλ$iP#⊂g)V⊂∃$"P!⊂i`aP∀ `b"T⊂⊂
****~∀4⊂
J⊗!B	HLBJJ@)Pλλ∃α)"$SαC@	;R@βλαj& 2λ9∧ThYB∧4→JD-⊂Q*$#∧&∪ LU:∧¬"e*;¬≥ Q!∀E∃+$∧
Ei_$
≤QQ$L4d
U≤,HZ5~e1Q L≤→→b∧
J~$l@03C!!(∩TJ:λ⊂QελTS#!+ ∧D]QdεD OF @∪
8A+'1'&~(∪'π∨Q(AαY→0∩(Jα*JN ∧∧L∃8Z%⊂H!→T⎇∀T
E"bλ⊃⊂hPα2U)Z⊂ε"P∃*∩$a∀bi)εB∧a`dS⊂**,200
	 BRST ABSERR
IFN USELESS(	SETZM RDROMP
RD⊂@2A:	MH∂-4A)(YI	∪¬&4⊃¬∞H%'#¬∩↓)(Xb@X∩*∀9⊂&6⎇2⊗%ααJBdu(@&λβ&εEαfgk)RP*⊗→B]j'hλ&"`⊗EL, FIRST OF @→∪M(A
→¬∂&~∀%!+'⊃(A Y%⊃_∞
)λI`≥∀X_B∧|βQ(	@a%"aU∧@
	HRRP∃&↓α~(M~⊗Bj⊂∧∧5α i1
∪≠=(
ε%∧
IJ¬c4(~	u∧Rλ∧↓Q@εE$Q'⊂ ∃SEH	≥→2l4U∩⊃B
∀i`&6⎇2⊗%ααJBc¬aP@M8ZDl@(⊂	"∀'f`⊂
λ	JRST RDA	J∧hRt$¬\*0∀λ∪qD	1S@⊂∃ibf"TiFEεB)+ ∩CT:↓MOT¬∃α~bP∃∀X_E$)HPhPα33j@)`	 TT, ≠→Iβ ⊃
α!P@L8→T*∧%H¬%%8~"D~⊃Q Lx)$`$∃∃β¬@⊗XFEαe*fh⊃bP"* i→DNβBLAST; -↓%ββλ4∀∪≠∨Y∩Aε0Q)(R4⊂∪∃%M(@A∧$~∀_w%¬λaαAI≠π$ααJ,8(B¬∀Y:$#
λ∧Q	@a%→P∀" ∂BJ1 RDO@¬∀A∀"0≤∀&↓P@@ ¬)"Pb_ Mαh*`∪HJ P,REKRD
λ	TLNL T,4060
RMCER8∧∪→I$A%	I~`∀¬]∩⊗ε⊃∧jε∞Jzα≤@qP
"V*⊂"i∀'iεEαh#h%λ(⊂

REKR@λt∪Mβ ~∃¬∩∩&:≤AαJ∩L∩L4(MαVNαRαA2J,
⊃BλHh ∃∀Y:$#αB4J:∀H∀HI0Th
(⊂3Pi↓α@
	POP@∀A@X∩(hRJα≡∀QMhε$b2*λ!E∃~Xz5K8¬⊂(¬∀pλ PbV!gSd¬A
	 BRST RDO@¬∀b~(∪!2tqαQ⊃λh %αα	u∧Rλ∧↓Q@∧d)∀-⊂ ∀T,BF@!I	 ~∀%∃+≠↓8A)(YI≠π∧4⊂
J∩|∩)E@!→%≥αλ¬∃¬JQ⊂rλ~@""'U∃∃⊂∀ ¬AD↓_∞ 4T	t)Q0u∧
Su5	→β"P∃
∃
RDOBJ:	JWTN N,B1_∞
λHI`≤@pRQ(~α⊂!"Qdg⊂!R i⊂⊗H''j USAGE AT TYIPEEK
α	 JRS@(ααJαx)#_h!→TmQ2(
Jλε~λ__⊂⊂
λ∧∪∪∨I~A)(αb∀T⊂	"∀∧@
	TLNE B,RS%MAC
	 JRST RDOBM2↓	;MAC@%<Aπ"
⊃0⊂@ ¬∧j∪'"P!))RiPβH∞~∀$A∃%'PA%	π!_
D⊃↔5≤LhyD*∧9λ∃∩∧βpRE@∧¬∀∪9(∞@$βQ(λ⊗))W∂&*)+XLT>
λ∧∩A∃I' ⊃αα(D@∀∩α!↔tQ∪h%⊂ ↔ILL EXIPλA<JR!α|∩*,8¬⊂∀ ¬AD
λ∧∪)→9
A∧YI&K→ $∩w&p∧∧≤4λ∩b∧→hB¬∀8¬⊂⊃dεTRY OF BR@β⊗α4(∀	%∃≥D
$$e8¬α!↔pr⊂*(0p
"T⊂ 	N↓βπεAλ~∀&u:R:∃∧⊃2JMt"&≤4PIα*J≥!αJ∩u*44!→e :α ∞E @∧Y%&9'∂~(∩A*∃~QαJ$z∀Sa⊃∪@5hε⊗FB∧fgk⊃P i1,B~∀%∃' AQ(Y%	
⊃β$∩$p∞∩⊗4
V %D	∃~αβH∂λIu∂C!∧j&'∪α ARDY%&]A_
P4PIα*J≥!αJ∩|∩)@$KZP≤
4λD`:α*"bλ( diλ( ∂INT @∨≥12~(LrP≥⊂π"P⊂α,RS.DIG		8π∪&A91(A
⊃β$A∧A↓&<JQl4PIα*J≥!αJ∩|∩)T⊃↔4L2λ∧seD∃∩⊃)@⊂ 
@+M(A¬
↓
→>
"& 4t	e,@(⊂siY3Q`⊂∃hεE∧U& ∞N↓β$bYI&K	∨P~∀%∧RJNQ¬∩∩)JλH%n_d∧`)uλ⊃	@h∧TED PAIR, THEL∧A)%dAβ→!!β¬$J_h*(D`8RL∞A~α NE AR11%&K	=(∩αv(TTA	=(A&~α∩>R$*⊃6BJIα∩⎇!↓))Ph ⊂MIId*¬EF⊂hPα(∩J*uλ⊃*&@εE∧U& ∂E T,4		8π⊂∩≡≤)α&→∧
2J⊗"eα→`λλIu∃⊃(D∀⊂2*!αA∧P∩))b ER2
	P@→≥8A(@1⊃↓AAAα↓⊂K]9t∧<-D
4,≤βsQ∧
⊂4U∧	qH⊃	Zα*"bλ( diβE	 JRST RDOBJ		; BUT @∪↓⊃+≥⊗αaαRλYb∧∧βh∀iYαbP!R ¬CKIL¬≥α4JJNPhP&BVα9∧R¬¬J$%≤αpdβE	 PMP@∀A@X∩αw∃_
∞≡,rR-(XBα4T∧λ4∧$jλ& ∂OKIH
∞A1∪↔
AMπ>t 4(~IE@$∃
↓⊃ ∧]@∀ i* LπA	=([!β%$A)≡↓'∪∂≥¬_A"αYdZ∧YhDL@Qc"A→TTu∧
Q∪pI!αAεEβ≥i"% P ∩DLπ¬∀j↓%↓∂¬(dA%	(eαbAI	∨¬∀XA%	∀YαA%	=
)]∧*IEαα(D`8RM
(∞⊃`⊂∀"≤'εB∧¬∀~(p
mmp∧¬ 95∩⊂⊃ ¬CIMAH CYLTAX↓_∞ 4K∀¬%-)j2∧Lh¬∪d
psk∧	1H⊃I@d∧DOWED BY BREAK
;;8π⊂≡I∧∩⊗≡→idL@Qh∪hd⊂3∀	λ(∩1DλSs∪	@hπED↓
eαbB"∧hRJ$&(∪@!5∪∪ID⊂K∀J4/⊂TI5tpse:βi`⊂+LP ↔	=(W% -≠βεWM→&G∀∩5x4PJ0∃=Iib∧∩J*2c@∀∪U¬84T@∃Tcg∃l∪*⊂LTR:¬
	JRSD↓%∩∞DyP (αB2J*uλ∀HILP _CE
RDOBJ58	TLOA T,200	;FLπ ⊗: ∧∧4dx~DL@Qh∪JY εE)⊃'a%→∞α	TLO T _b@```∩m_
V5∧26J∞,!α↑~Iαα∩4!P@*Q∩LH⊗,¬∧e∀h⊂ ∀T,IRDA
∪∪⊃!∧AβHbP∩hP&ε>~α⊂ (αB2J*uλ∀HIU3 →βE

λ¬%	∨	∀ld∪)' A%!2&J$λ%nBα)t84p	P∪βBJ BEG@∪≥9∪⊂~≥¬:&@$αλ
d	tH!Q@∧db∀!⊂!,@ε~∧∪M_∞Mα h ⊂Lh¬u	@ ¬ B1%&@:bP (αB5	Ih⊃βεFα.eQ B2J:λ⊂
*)"!d⊂iαE∧R))j @RDOBJ8	;CH@π⊗αα~>I¬:"&R*:M↓4	∧~D
U≤Lhp¬∀β
p∧	tH⊃	yUλ⊂IZ⊂∧"i⊂*`∪IL@∞A∀!b8∀U∩∩)ZP&RIhR∧∩J*2+dX_2]∃¬9Eα]89r]≥8∧∂AQ@∧e)∀h⊂!"∪a%~εB∧g+j∪'⊂!ε∀)S ⊂NT
∀∪)%'(A∃$b4PJ6.Z*αεIEd⊂4(→*5α¬J@
(⊂r⊂*!"B5	IQ(∃¬Fβ"B)*TqλZL#"A→TTu∧
Q∪pI&".jehα⊂⊂"⊃a`	MAL FLOAT@∪≥≤A¬∨%5β(~∃I	∨¬∀\pλ&:="2*λ 
*iQ∩(q B2J*uλ∀HIU3 →α]P 9⊃π&l
1α∩L:&@#aQ M∧β∪h
ELα'U↑ f∀$ P!R i @> OR +<@ "αHT`(α"b AH	!⊃∧|⊂∀λLRJNQ¬∩∩¬DhP4(_Z#Pα3⊃**H⊂	"∀&YεEβE)"'PαJ4:	TL@≡APXd`∩m'∪≥∂1
Aπ⊃¬%α@DαY∩∧βt@∧⊗QεEαe))jλ)"!%CE)"8Tεt&u:R:∃∧⊃2JMpπD$Lu9E%∪βC"A→TTu∧
Q∪pI&@εE∧R))`∀↓%∩&h⊂hU(@∞	@≥	NWTNE B,RS.q'∂W⊃∪∞@.e"I.be!x (αB2J*uλ∀HIpRMaQ@∧e)∀h∧ @%⊃∀mα~(~∀_w%	9+∩A∀"2V5⊂∧¬∀∧iP&∧∀Q∪JY,(∀HIU3 ≤λ)"'*SYP ∩DLUM) R@@≥~e
A%	9~s∧AI	≥~s~∀4U∩∩:Vhπ LU:∧¬%"β∩4HH ""!↔h¬∃∃λ'*fa⊃i⊂ j∪βH
@T(T∩¬%⊃→+~dh~∃∪
∀A¬∪∂9+~X∪M!5~ααεIDKZ~2ε8∧∧L@Q∩0h~⊃0h		uh∪(→T∧P"∩c`j)H!"`→OL@λA∨Y%
→=(4*∀":5EβP&N⊗αK$$⊃K∀A↔pP4hT,D	U30HZH∩3D
Kλ⊂H~q(∩(λ4q(	→β⊂#εB∧j&'PP*⊗~∧¬αRDNUM1~	JSP TT,RDAHAR
λ	NGTL¬∃α⊂bJM~α	e HαB2J*uλ∀HIU3 ~α]b"aRd¬AL POANT [WITHOUD↓
J⊗Yα
&"αN⊗Rhh &N⎇~2¬α 4(→_E∧∩λ!D1"B3Jzα#"P⊂⊗))W⊃$cFEαe))jλ)"'*SZ@
	TLFE T,3 0	;ALPHA CHAR CEEH4PJ*JN αJ∩~αYS@hαB3JZ⊂π'⊂⊗))W∪*)εEαe))jλ)"'*S[FE∧U&#'∃⊗_X__εE∧R))b∀"# ∃M4	αNW%	MOVEI @)PXQ∧R$p∞≡⊗ αε"R∀
0$
u9⊂&"∃∩`∩¬JAD! SUdA03Q	∀∃∃βε⊗β[FEαa`dfλ**⊗⊃_DXALLOW FMR LOWER CASE LEP	)I&~∀∪M+¬∩AλXEBZ	α~∧∪M+¬∩AλXEαZα⊃A5Eαp%n∩-"RεJ~αεJ∃¬~VBJλ¬T$0r3(→∞C"A→TTu∧
Q∪U)V ".dλ/($¬eλ⊂O&⊗+Kλ¬eKKλ'αYZWβE
RDNUM_8∧∩¬≥\J∪πβ%
AαX	
∩g-αBεI∧
:"	Iu<-$λ4
≤TλR∧IIu,,AQ$u:Q_4Ldλ∩b⊗Q↔4m
:@λ
I1⊗(
I⊂4h
Zλ⊂siX1⊂6!QSUi↓~⊃∪Q$λK∀TdZt6α'86⊂∪ihαg*⊂∪βR (SOIEDAY) STRING
QQOTE
∪∃I'(A%⊃→~qα4⊂∪≥/Q→≤A∧1%&]DbP4λLRJNQ∧*IDQ*$$uYRs@!5∪∪HT∃fvλλ∧NβEXDEL@	λ↓β⊃!⊃∧Aπ⊃βHA'8~∀&U∩NQα-⊃D4λLr↑B~pα↓2J~rεJHhP&*J≥!αJ∩u*5X∀PJ2↑Rt)α	2∃→:ε2 h(&Rdz¬αQc⊃AA@KZ|4(M"2=α"aEAAI`≥pQ($: ~94M∧d	e∀β⊗λd`K9_b¬<Tλ∃∀
λ∧Q(_⊂3Qd	3H⊂H~q(&¬Kλ∃	λ3C"HλβR∧j∪'P*⊗X_∧]H#⊂$ TP#'j∩$g#@∩e⊂$jλ⊗P!gH&jijλ* ebH)αE)⊃'*f\N∧j&'∪⊂*⊗_M____βEe)∀j⊂)"∪&\bFB∧j&'⊃P*⊗→L_∧]c∪βR EXPONENT-IFIED BIGNUMS, RDNSV GILL
	HRR AR2A,AR1	;BE EEALINGL;RDNUI0 RDNUMXA%	≥4qαA∀":6→¬∩∩:5⊂∧¬∀⊂π&@2A RDFXNM RD@
 !λ∧¬∀⊃S!Q@εEεBαRDNUM0:	IDPB B,C
RDNUMXp∪)→hA(@1≠!@%NαJt
~λ∧Q(→⊂ε,P⊂dε ALPHA ATO@~~(∪!2zαQ1Ih ⊂L**5"¬(H∪_h!Q%∀⊂π&@8A:↓TLX∧A(XD``~∀%)→=¬!1EIβ4(→Yu (αfP")"")U∧¬∀∪)%'(AI	≥+~βH4(Q!P@*Q∪S(g@∧e)∀h⊂⊃,@[ ≤Vβ
t%@89D,
$	u-αλ→Db∧~)∃$DXZDL~	zd-∀iIu 4⊂R5
1"B3)zβ"P!*εE∧Sek"P∃*∩#∧NβFINISHEDTπ∪)⊂↓_
V6∀*IαJ,
⊃1α≤yαB_92¬-∧	e,@0Q4D	3H⊂H~q(∩(λ4q#!λQiα*9r4∪D	TQ_L εL
@@∞H∪Q→≡Aλ0b``~(∪!2tqαQ⊃≠↓@$!→%∃≥D
$$tV!P@LYzd*¬J@
!,¬`$PβK @+@A≥+≠	$A∪8A¬β'∀@b`\4⊂
&~*α∀LyjTjE1Q LUYZ∧*∧~ %JQ∪S&!,¬g*Sa"`∩↓_∞→α⎇2⊗J~dzP~∧I_tM∀h∩)@⊂ i1
∪)1_
9αα@ε&β"A→TTu∧
Q∪S(Z@εE∧Pb"&@ AR1,D
∪β⊃	~AβHbP∩J$"N@0Q+PhU(Idk∪αB5	IQ(∃¬FλλεBα	MOVL¬&A% %nhXt
⊂5Q$	U30HZKλ∩(d⊂∧g"∩a`j"Q∧¬∃¬≤H∪)→9
A(XDh``@β4*
8∧@LU*:B¬∀H)∀<@A"THIS(	 Nα	TLNE T,200
	JRSD↓%∩~dr44*(D5DβS ≥αh NE T _f@``~∀%∃%' ∧¬∀⊃P"V∧¬∃%⊃
0bt%∃' APY~@λ9t`*c"THHβ&_@:	H∨-∀A(@2⊂h ⊂L**5"¬(Idm@Q!P@ ↓GtQ∪JY-(∀HIU31∧
Q∪U)XH⊂	"∩a'k⊂∀"_X'U⊂)"'∃daFEβEαE)⊃'*fZN∧e#!S⊂≤↔⊗α+1		8π¬β'%εA	∨= A)⊃¬(A∪≥
%≠9)β→→dAβ		LA∪≤A=≥∃α$J≡&PhR&~∃∧∩&≡:,i1α*,jB9α
⊃E"J$rV&hR&~9∧∩&≡~,i2l4PJR2~*αQ1Qβ↓A@4PJ*JN ∧¬∀$(r∪@ W#!
Q∪U)X∞B3)zQ(∃
E∀B.h ibPX∪⊂+⊂d*bP⊂aabfUf j"TP 	N↓$∩∧∪%≠+→∩↓$Xb`8∩w¬βM
A&∀
N∃α4
2V∃∧J0∩∧aQ$e:Q_∀$∧α(∀EE(L
λ∀@
NU$	LD@ A,[0011@`X@2∃h4*:8 &ε∩ ∧¬∩d⊃Q LTh9BβBJ(C∧zaP@)1S@λ$cg*SV-FEαh NE T$1⊂000  $p∞
&<rV%ααh∀e,Tλ$
≤Tε∪αr	λTdα	→b∧
&⊃P@L**5"¬(H$<L!↔4)1sU)T∃P3
X(⊂P*8(∩0H~q(∩λY⊃λ∩)@⊂ i	⊂FE)"∪*fa
αiadh∪⊂'!"X#&εB∧e))U⊂)"'∃fXFE↔FA$c⊃P!$cS*fV⊂∀ # ∃M@: 
	JFCL 8$.,b∩`.lJ≡"Q∧∩∃αN-!α&→∧zR4D	t`$⊂P4hT,D
Q01	→Kλ∃hYβ*⊂*∪β RDDa∨,X↓	∪λA∧Aεcπ=→&@0hP&6>4)αRQd0%n∩L!α¬α<→1αα~.⊗⊃∧
J>Vt!αε: ∧¬≤-D	∃"∧_x∀L@H#"A→30
fλ!⊗)"∩a)FE∪αW%	AD@	%∧115	αB∩Hβ"SJTα3⊃λ⊂ V-L__X@00, →¬t~∃≥8 &ε∩ ∧∧2d⊃Q LTh9BβBJ(DL∀zaP@L**5"¬(Ie,@,#"AQR1Q$λR1sJY+⊗c!)"$a∪βP`(Lj>@4Tλbe Q!∀l@uQ(
E∃∃α'dπVERFLOWTπ⊃&d)αε∞≥*6F2
"& 4t	e,@0Q4AQ@∧fjS⊂*⊗)⊃$a)DNβIN BASE I@¬β'
8@A)%dA)=¬∩⊗∞VαλU∀
HQP@!3∀r∧
λ¬X@,1	0↔$yαε2dzP~@λ⊃Sj$⊃0 Sh E, 40 0000 0000
	HSHC T$35,∧∩*u9∀&ε$"%αQbi∪αα⊂@∀CE' ↔$	ADD↓(Yα~(∪ "≤AαQHaP@!2TTjD∀Q∪JYαXFE∀ ∧10OT∧t&lzP∀(⊂	,TT
RDNUMC8∧∪β∨)αAβ$β	2J∩u*6λQ+PhPβ"@↓GtQ⊃Kλαhλ RX1 @%`bA%	→0d4Ph"J∩5B⊗ahhR&~9∧∩&≡hYR`L8→∀:∧∃Fs 1 B5	IQ(∃¬FLλλεBα	JRST EBD~∀&r∩%ααJBc;vqP@LXε⊂i∧∃∃⊗∀ ∧N@'X~∀&$b0∀rλ¬⊗__⊂⊂
λ	JRST  ≤VL~∀&e~!αR ¬D¬∀Ij5 @ ¬∧e∀)j⊂)⊃ εP⊂@λh ∀Li`λλ$cg*ST-FEαi`IPGE @)P~∀&$b0~¬EFCβQ!∀l@uS4d
∃β"J+.B*9βicbH)"')Uαλ
(LRJNQ¬∩∩5αλ	εBα	TLNE T,1000  @~∀&U∩N@"λ∧Qλ[c"KQ ¬$c⊃P!$cSαUM,[
RXDpλ&N⎇~≡∃αα(D`*uC"A→TTu∧
Q⊃Vε⊃ ¬.FBα	M@+0A)(YI	∪¬&4⊂
&~p∧∧)1sU)Uα 
UMPN @)PY%	a_∞_∀PJ2N∧
E"[∃F⊂hPα3∀iλh⊂
*→ZWεBα	JRST RXD~∀4TJ~9α∀J≡ 5YPFA)"⊃,→≥∧U& ∞E T,100000
	JRST RDBIGH

∀%)→:*αQ1Qβ4(→Yu )Th∃
A ¬∧e∀)j⊂)⊃ εP⊂@λh ∃@ εEβ≥i"#∪'&P)⊃ εL3 R@FL3A RDFL2A RD@
_e⊂A%	_Iλ`A¬⊃_eλf↓%↓_e⊂bA%	→_e
AI	_eλA%	_IαA¬⊃_e
@↓%↓_e∀bA%	0e⊗
¬∩∩1Jλεα¬∀IF$∩λ∧Q	FP, 
(∪P&1"C"J(⊃S∪IWB5∪	@'⊂*,1000
	JRST RDFL3
	MOVE D,RDDSV
	ADD D,TT
	AOS Dλ
∧∪5∨%
AQ(Y%	9',~∃I	~1≠P&"J∀*%αIbj
fR≥:⊃*2∧r
V→i	"↓⊃Q$L4dλ$L<jYReXQ!∃$e(T¬"c⊗Fβββ↓Q LU*:B¬∀HiC≤λQ+PhPα21	~R(∃
E
εεβ"A~rr4λT∃∃β!!5∪⊂d
∃FVλ↓Q@∧j&⊂P**∃LT∧233000
	SKIPE @↔αDa ~∀$A∃%'P@\Vn4∀∪!+M⊂A
→@Y)(Vβλ4(ε≤*Riα%!-E0hP&BV≤Aα~2αbRQ-λh(&∩4
⊃αR a5E"4bA$∀PJB>BJα~2Ac⊂4(εU∩NQ↓rYH4(Jα~ε∩bαRQ2%!-D4U∩∩4F8∪PLYzdj¬EJ hU(Hdc∀↔!∀U,Zλt*¬%J$$c(⊂AQTQ⊃IFQ∞B*85⊗H
%β"B(_21h
ElAQ@∧e)∀j⊂)"∪→"→FB∧c!aH**⊗~M↔∧D]Ta`f"K⊂)gP∃$"i"H+gg*λ!"P*S "i#∪'kiFB∧fgk∪$P),54.
RDL2D0:	SKIPN KA10@
	 JRST .+5
	FDVL TT,D1.0E0⊂∩$s⊃∨∨@A
∨$↓≠+→)%!→3∪9∞[∪≤↓≥β∂βQ∪%
AA∨/$↓∨@bβ↓9@4PJ~αZ⊂∧¬%"6⊃D#
fλS@hαB1H_⊃λ∃
E∃∃
f⊃"B2J*uλE6A"B$λ⊃Q∃D
∃⊃ε∃L⊃.↓QB4u(	(∃⊗∞εA)"∪→"→]αa`df⊃P*⊗≤βEe)∀j⊂!"∪→"_εB∧e*fT"P*,RDFL2E
RDL2D1:	SCIPN CA⊃0P
	 JRST .+5
λ	FDVL TTD10.⊂
∪
⊃)$A%!-E2!	A9@hP&~ε$aαRQe"Q-DhP&*J≥!↓9-⊂h %α$2∩YααJBdβ⊗¬cHαB4iyQh∃¬JQ∪HF εE)⊃ εL2E8∧∪'↔%!∃α\	EB@hP%α
∃~QαJ$aJ,!Q M≤9~∧<*λ@
Jα".j(313(λ4H∀i_pπ⊂$S⊂*εEαP"&gU'⊂ ∀T,TT		8π⊂~⊗<
R¬αα9r¬$α⊂5∧∧TSu)hα(⊃∃ ij @πβ≤A	
AβM2T4PJR2hT¬%"αl ⊗__⊂⊂00	3DE@π∪	
↓(∞"ε ∧∧,4hX5"b	_b∧k∃B¬∀zYd$Lhp¬ 93∪λ	λ5Q#!↓(⊂
)∪βHA%!1D⊃↔2∧e8 ¬ 84h¬D∀sh	*4u⊂∀bj⊂$Uε@
	  JRST RDL2EC		; OR NLεA
→π(A¬(Aβ→0~∀&lzP∀(⊂
*
XV**αDX"HEAVY" CASE, CBEAPE A FLONUI  IL TT1 WHOSE 
	AND↓)(Fbαbe@;vrββαβ+Q,¬P+⊂d∧UE IS 1LSB OF F@%¬β!β∨8@Qβπ
≠ ⊗:$J2:λiu⊂H!→%,MλxR¬"J(Dc∀X!⊂KZλ⊂¬¬∀z	t<
HXB∧≤~*%JJaQ J∧β3uI@)P ∀T		3@%∀[⊂~⊗<
R*λ(∀Zβλ∩(d⊂π"aQii`i⊗F@
	 MH∂-≥LA)(Vβλ4*J$aJ,'!∀4J λ
J	∃∃¬6 ∧D]Pb"⊂$Sα THE ROUNDING↓
&PhRJ$F(TPα1ThP**,(R)
	JFCL 8$RDL2E "4⊂
J∩c∩∃AhLRNAα ¬D5∧9ye_h!→%∃≥D
$$S#!)"&→⊃XY∧e∀h⊂",,∧Vb~(∪'π∪A
A-U*2α⊗∀22>\hP&RIib¬"β$ε↓ ".j(3Q∪iT⊃Tλ
YQ⊃4Hi∪u`λ$jεEαe))jλ)"'&QiαE∧SdπVEI TT,0
∪∃I' A∀"1J∃α↓P@H*(Dc∀X7"¬≤αr4λt∃β"A∀⊂εgk∪αS DT
∪∃I' A∀"1J⊗λh  (*(Dc∀⊗π M≤αr4	@⊂!`@10P		;LOGP FOR MUHTIPLYING-IN PMSATIT¬∃αα	u,-$	t2β⊗¬c@ ¬∧P∩))b ,∧Vn~(∪≠∨-∀A)(Vβ⊃2RQXε⊂hPα1S*
H⊂
*
Y⊗"1,∧a
@@h ⊂LiZ∧b¬J@λF+Hλ"N∧¬∀∪U
αA%!-E2%!-HQ!∀4ID¬%"JJB[⊂β"B)*Tp
 ,∧Vd~(∩A	
5 A)(αb⊃E9αλS@HαB4jXR(∃¬Gβ"THIP →∞α	CAIL T,8
∪∃I' ⊃αα(Dc∀⊗↓P@!2U3*λαP ∀1%∩⊃∀	L4*∀"1J¬λπ M≤αr4	@⊂ ADa ~∀$A∃%'P@\Vn4⊂∪≠∨Y
A)(αYI2R YD4λL26BJJαRQ4 ¬ε,@_
FA∧c∪h  TT,D1⊂,∧`~∀%+
αAQ(VbYQ(Vd~(∪
β	0A)(YQ(Vd~(∪∃%'P@\VD4⊂λ%α$26AααJBd,F↓ ¬∧iSβJG T,RDL2A1~∃I	_eαβ→`⊂M8ZE@$∀Kβ!↓2TTjD∀Q⊃IFQ#"AQ@↓GtQ∪
:α⊂ ∩DLSTA↓%↓2≤
¬αJ$B0∀[IF @)!
A:,b1α&$*51α4z22><*⊃α
J↓⊗JAh(%αU∩NQα∀"2N`KYα~>⊂α"V:XaαR",qα⊗BM!8 (*(De≥F∪ M¬X9∧R¬¬Id≤\h1∪L<zD∧`(αh"∩h∧EMFOR LIST (MR HUNK ∩~(∪∃' ↓)(Y%⊃→')α4∀∪⊃%1~AαX! R4U∩∩2N εβ@LYzd*∧%H∃∪∀⊃↔5D
∧	u-"	x$T8¬⊂⊂αITS, EP⊃π∃!(A
=$@E⊃U→⊗DA¬→λ~∃I	⊃:\	h&ReR¬αQbiE
Iβ↓AAIX↓∀R4TjD⊃pRHXuλ@⊂
&`la⊃P7:v≠⊂9x&~qtw3H4pqi≠FE)"∪)j→]αP%)hλ**⊗)⊃!` iα]P⊂1Xzyr`3 returj to here with jg`)!S]NA¬GGk[UYCiK⊂RT4U∩∩2M≥I`&B-~")ααbJα≡∀P4(~IE@(αP",4	∀∩↓∃%'(ααJα∩≥!P%N|Rα,8¬⊂∩*ib R@βλααP≤
4
¬∀0q1(Hαb⊂!⊗P P"∪hεE∧Sek"fH!⊗ i BE∧U&-"P∃⊗→___εE∧H%))jλ)"&)Lb∧]fPai'VT)'b*Pbb⊂'P%⊂ ∩ETURNEDλ
(M"2:∃¬!1IAβ↓A@4PIα*J≥!αJ∩Dr-D%\~0≤@U∩3JY3Q`
@dj$⊂P  ∃NK
	TLNE T,24060	3EXIPλA∪_A≥≡A=
*⊗≥!αJ⊗ 4(∀	%∃≥D
$$e8B⊂hU(IE≥C!~Ddtdλ"e∃4Z%@ ¬∧f⊃i)⊂)⊃)&P⊗	8π¬→βM(XA≠%''β≥≤@DRD4⊂∪'∨LA¬
!I	 ~∀%!∨ A@Yα
∀%)→5
↓(Xd`@```~(∩A!-~")ααb6ε.E*2,4PJB>A¬↓2P4U∩∩2N@ε∪@!33uJ9(⊂@⊗∀)RV!∀%Q`↔SP8%]""J><
Vε@∀λ%∀02`⊗Pd i Ph∧EB
λ∧∪)→<A(Hh@``~∀%!∨!∀↓ X~∀4⊂⊂∀
∀"2MN!P&BIib¬"β
∧ε@_∧D]S`a`∩O-H∂¬∃∃∞@"λ(U%-)hT"¬y~DDLdλ∩∧d~:@hPα(∩J*uλ∀IXq0	εBα	TLNL T,1000
	 @∃%M(A%	1' ⊃DHI`≤@StS(→α⊂&`Pi'P'PαJECT
↓TLX∧A(X4bFd`@``d∩$p∞∩>u!α
2-~!↓
E*2-	∧zI↓	
~Qαx)"∧|d	DM≥D λλ$j)FB∧e*fT P F∀ ")j∧@]g∩d∧ i@LAUkgPASO]=eKH~(∪∪∨-∃∩A)(αa"¬$HI`≤@→=↓n∀_z→,=h≥~
≡h≠p~]⊗⊂4`3 thi@LACLAαS >WqP@LJ9α¬%EEU≤,yIt8H↔8v/"∞Mε*π<X	m\8π:≠8rq2\∧¬α	SKIPL ST DT)	↓;IpεASh↓BAπβIβ	%C	YJ}~(∩@A∃I' A¬⊃'≠⊂H%m↓πK↔MDλ↑λ~~-T~{[nt~→(
MβyzεB∧e)hλ**⊗)⊃&)b CE	JSP AR⊃,RLAST		;SPLACIL@∞A≠¬β%≡A=
*⊗≥ 4(→
$djλ⊃BEαα#"A→TTu∧
Q∪∀jFβ"C!↓ ¬εE∀ ∧LST4:∪∃U≠!APY%	→Liαα∩m_∞*
,~Qα*-~QαJ,
⊃α↑
→αBJ,~⊗⊗∩,!α
@∀λ∩∧∧zAP@M99∃∧rλ¬S(→p∧ ∃NK
	 JRST↓$d~(∪)2zαQ1Iβ↓AA@HI`~∧*ZB∧tzI∧L@Qh⊂(j⊃4@
I⊃(⊃	zα⊂"l⊂bh* A %BP
∪∃I' A¬⊃→'0~(~∃%	1&aαt%)→
↓(Xd∩$p
))Rα∩>Q¬αε&IαQ)(∀PIα*J≥!α⊗I⊂h(&ReQαQ⊃34(ε$b2¬α ¬C∪β∧εβH↔84lL)→d
$→yb∧|d∧$E,i4"∧hDα(⊃uλDλR5∀d	sHβ!!(∩TJ:λ∀Q	Jvα"'∀∃r⊃)@⊂"l$U$g#P⊃)'f@∀"'a%λ&b`g∀P⊃↔∀H⊂!`iQFE∧fSk)P*∃⊗∀(∀CEd)∀&P V
**∀FB∧j&-⊃P*⊗→__⊂εB∧P*&⊗'⊂*εX_⊂∧B]ge!⊃aj⊂$Sfbb$Pj"f,H#'f&∪idg#H⊃"'jλ⊂$iFB∧P⊂%∀)j⊂)⊃&)Z!βEfgU P i V)!U_∃Q↔α]b`aT'Vh)∪b*abQ⊂)h&∩adg#H'a%"Ph⊂ iH⊃"'jλ∃ca%λεA∧e∃fh"P⊂V)"&∀j_∧DNh∧HBOU AWAY IF RETURN ()
	HRRX AR2A,(A)
↓JUMPN AR2A,ER2
	HLRZ A,(A)
↓HRRM A,(TT)	
RDLS4B:	PUSHJ P,RDSKWH		;SCAN CHARS FOLLOWINC OBJ TO RIGHT OF DOT
	 JRST RDLSX		; HOPEFULLY, NEXT INDERESTINC ONE @∪&↓α@K%@~∀∪)1≥αA∧1%&K	=(~∧∩↓∃%'(↓%	⊃≥,∩∩w∪_A∪)&↓β≥∨)!$A	=(XA)!≤A∂∀A⊃β-∀AαA⊃U≥⊗~∀%)→≥
↓∧Y%&∃≠βε~(∩A≥="29α∩bJM:bP4(J↓α*J≥!α⊗I⊂h(&B-~")ααbJ∩>∀R4$%]~B2&≤J::	X∀≥∀tλ∀5$Z$α∀∪uλE9pRQ(~β"B)*34⊃$λ+∀Q	Jm⊂B!↔u∩∀IZβP kPlP$cλ)"`∀URN ()
↓JRST RDSIE $$∩w∨@&C↔K←O≠∃1βO!∨Mβ>{SC¬∧∧&*ε≥dε/↔-}"λh!Q%∀$	i3PM99∃∧rλiT\λYdXh!∀∧U∃:@λλZLC"A~⊃∪h
ELεεα.h(1r3D	Su∩(dg#P∃$ j⊂∃$$iP∩iP P∩*g%FB∧fgk∀P**⊗
(⊂	
	HRRZ A,(TT)	;UNDO THA CDR OF THE CEHD
	PUSHJ P,NCKNC
	HRRM A,(TT)
	HRLM A,(P)
	PUSHJ P,RDSKWX		9SCAN CHARS FOLLOWING GBJ TG RIG@T↓≠A	=(~∧∩↓∃%'(↓%	→'`∩∩`-∧B>B⊗5*22ebα2εB α& 5HZ$-≥I→d:∧yhR∧M4λ∩α-*↓PP@ B2J*uλ∀HI⊃Rp!Q@εE)⊃)a`↔H:	TLNE B,RS%RP	8π%∪∂!(A!βI∀`=¬"",dλUDMD	d⎇∀X→DeHQ!∩¬∧z	"¬αββ"A→Uu∪Dλ+⊂@⊗∃βP@
	 BRST POPJ1↓;EXIT BY SKIPP@∪≥≤A∪@	∪∃)I')∪9∞DAπ!β$A∪LA≥∨(↓!β%9&~∃%⊃'↔/0h∪∃' ↓)(I%⊃β⊃β$$s∪A
⊃β$A%&A+≥]_∞JREI1αRD*0∩∧iJU≤B	~B∧h@λ
JT∧P Q`dgεB∧e))U⊂)")RidεEβEβ≥i"'PαM2 RDOBJM RDSM@π⊗A∀"ε %	λ
(α X⊂∀ ∧A1↓%∩¬~αJ$⊗@λ
)⊂4u∧
S⊂4jF(⊂	"⊂βHG1R@	π⊃<hA%	
⊃≡fAI	π"zαJ$9	s⊂@ ¬εE∀ ∧@∨¬4dt&¬*N"$
αe∀Ix$Th↔8v/"∞Mε*ε|-&.∨EaP@!5∪∪HT∃
↓↔ux<d∞α44`3 pro@
K@↔∪,∧Bε↔∀λλ$¬LπFEαP⊂ ∀LL¬≤A ¬Cβ∧∧α'P⊂ w→⊂9x ,icing?
∀∩@@A∧zB)αα¬@KZ∧∧α∧tqQ LU*:B¬∀J9T9b.v,↑hε⊂ $o error c@!KGWSαs⊂~ε≥lBπ⊗↑NW-@εEεBαλ
*∀"0≤∀)P∞A~⊂ε'P∃⊗→___∧]E
∃⊂&`PβRO CHARACTAR ***~∀%_
↑Rt)α	2∃→2ε2 I`≥≥	I∀93Q`∨CE	TLLεA(XD```∩m'!2L~& 4t	T≥)qP@!4⊂
iR⊂(⊗*βE	PUSH FXP,BFPR@	 ~)→.J∪
β⊂∩Hdβαbα⊂@∀B]`
ACRO CHARACTER HAS @→∪9⊗A&p∧¬∀B	x`hT_ib∧tX¬tHE⊗c"A→α"! D, K@`bb`@XY¬:4⊂∪!-~")αα¬B∧≤X¬∪(_c"B)
TVHλ∃α⊂∀ JF@
	CAH@→`X@Q∧R~*hI`≤,h@λ	@c⊂$c∪α @≥]%~∀%!∨ A→1 @2∀2BJ∩h &*≥↓αQJ*5E≥AQ M∧z∧¬αeAQ LU*:B¬∀IJ5Cλβ"C!)")fPβK:	JUIPE A(C@!=!∀%\r& "
_d8ε0↔ays OK
∪!U'⊂A
a Y(∩m)KK`4⊂λ&6⎇2⊗%αα@¬λ*".hwx<FBα	LSH T _[M∂2|8%n∨,εBπ~→(∞O<→(-=_	FB∧iedT&⊂ ∪T(T ∩∩m∂π→∧KQβ*α≤
(8E⊗.GqP@J∧	%∃≥D
$%≤β1,!↔hλ∪Muα⊂10\3⊂0q≠zz⊂ )t  ILLAGAL RE@)U%≤A
¬→+
A→%∨~@8X\R~(∪!∨ ↓
1 YP~∀&E∩Jiα⊂a"¬$KZ∞∩I∧εFF*hM|A"B)*34∪DλK∀Q
910	∧Nβ  ERp¬WdA%H	β7⎇∪∃βSF9β?v(4(&∧zB)αα`4(Q!PE∀H→E∧C!~DdzλEC∪↔5"RRλ∧∪H→1(⊂*Is(
E%A"B*85∪s$	∀∪QAQTQ⊂&πB2Tj∧∃∃β	~Q⊂ _CE)" L]	IDPB B@ε~∃%⊃αft∪)' A	PY%	π!β$
∀%'↔∃∞αα⊃2J$	D4(Lj>J⊗hα∩d~"$λh!~¬-≤	$∧5E¬J$$AQ LlzhR∧∩H~#∀λQ!∀U∃:@λ
(⊂,β!!αA)"⊂Z≥∧h∃i`%⊂∀⊗('!SdεS	;ADDS ANOTHER @'∃∂∪≥PA)=∧	α2yhr¬∧βP3(T⊂ε$iU∧@
	AMSF LPNF
	PU@' A I$\`⊂∀!→T⎇Q(⊂EE∀
#!↓10!R⊂ V!βE	PUSHB P,.NCONC
	MH∂-4AαXQ@R~∀∪A∨!∧A→1 @0hP4*Jd
NQhLRV6B*α¬1λ~#
HQ*$d
:B∪@!2⊂TK⊂**ε
 TFEαe*fh⊃P**ε
 i_DCE	LSH TT-SEGLMG
	SKIPL ST(TT)¬
	JRSTRMCER
↓HRRZ A,(A)
	JRST RLAST1

λRDCHO1:	MORE AR1,B
	NWTLN BRS.@!9(~∧∪)%'(AI	π⊃≡L~∀&U~AαR bJα∞D
H%mpαεMα≤~0~∧→J4j∧α⊂4dλ⊃0r)X3λ∀
EH⊂v)j⊂6β!↓3Qu	HαP!ε∀)S"$QFE∧e∀)j⊂)⊃'a%~B]kdf∪⊂* eQP iP⊃&'j$Sα@∞A↓PX	α~αYPhPα3UjIH∪Cλ⊗+j$α]iedT⊂ 	F Tπ⊂≡J$Beα∞D
H (!→%∃≥D
$$≤	v0K\8→b¬$βttd	u1⊂∪α@ "α@λ
Yβ+gi∃$,P!R iεE∀ ∧CHO4:↓PUSH FXP,B	;Lπ ∩λZ% 94q+∧
p5Q$	Q0*λ!`λAR AS IF @∪(↓(∞⊗J*α& -	z%$h¬λ)"`eH!`λAR
∪'-∪!αAY7%	
⊃≡e:4⊂
J∩≤B0≠≠!→TmQ2(λ∃α)"&∀l_FEαd¬OVE B,AR1
∀∪A+'!¬↓24U∩∩∞	w LU8∧¬%"β∩4HH .jE%H⊂	dSα@∂2*α≤D~(∩∧|)(T:α⊂∃∃
∧@
	SEPZM↓!≥¬+_~∀&L"B	α⊂¬D1 B2J*uλ∀I→β*"i∪αλ
∧~(~∃%	
⊃≡dt%!∨ A→1 @2⊂I`≤h¬⊃*$⊂ε`eRdεG UP & AS SCO,	∀∪5≠ ~⊗hα∩e(H$\_↔9T\T	d-EDλ4D
$	D`9βeP&∩ebFEαh O T,20	8π∪≠∧zJRεu!α
J,
-α∞D
H (!~∧`:⊂¬⊂(∧@
;RDDa∨,AI	∪¬∨XA%	¬≤b`A∀"∀l0 ⊂∀ ∧BGI@∧A%		∂∪α@9%∩⊗αYEααβP
$Sbi⊂↔∃&W &βE
IFN BIGH
+~OVE T,TSAVE
	TLNE T,100000
	JRSTRDBGIA
	JSP A,RDRGRS
	JRST RDNUMB
¬
RDBGIB:	TLNE T,3000
	JRST RDNUMB	;GEPTING EHPOJENT MODIFIE@$4∀∪∃'@AαY%⊃%π'0h"J∩∀:&¬@!→T⎇∀T
Bd
&(⊂hPα33jHαP ∀T,RDIBS
	MOREI D,-"⊂(B)
NW$	ANDA D,177
	PESHJ @,,TM.PL
α	JSP A,R@RGRS
	JRST RDNUM⊃
~∀9%	≠,bAh&≤Z&B¬¬!2∧∀RrR&6-⊃`&6⎇2⊗%α"a@%n α&MαdJNQα|1α∩_y∃%~D
E"∧~4∧m,JI∃∧dα14EDβ"KJI+T∪π∧d&)⊗⊂ V∀∃∀D]bλ$iP!Pi),Wλ⊂εE∧Sek"P∀⊗∀ DCE	MUL R,TT
∀∪¬	A∧,bQλ~(∪)2T)αI-
aQAAβ↓@4!_∀⎇~λ!PPLYzd,jλ!3
Bα⊂*!Q@∧fgU ¬ DR
	HRRR A,(T)
	JUMPN A,,¬%	≠U→ ~∀%∃+≠!∀Aλ@2≥α>BλhP&6>4)αRQd 4(~
U≤DαH∀¬Hl0sijc"B)
TS λ∃λ⊃α!Q@4∪j	H⊂↓Q@↓GtQ∀HzuH∀HJQtTd
Q⊃6	xH⊂Qλ[h∀HHR1sD
Q⊂R(y#"C!'nnb)_SH⊂I_sU3!Q@εE)⊃)#ik∞∧fgk⊃dP"ε∃)`k"CE	MOT¬⊗5∧!2αN
2∀4λLj>J⊗hαI2J≤
R∧Q!∀l]hYR∧2Hj4
∀QQ LU*:BαD∃⊃PPH*(E∀≥*7 LlzhR¬"JJ4
∀QQ LlzhR∧"β⊃∀h~Q#"A→3uQ$
K∀Th~Q#"A→3uQ$λK⊃Th~Q#"A→TTu∧¬⊂*#!! C"J(⊃2∪hgB5∪	@P*⊗_L__⊂_βE	PUSH FXP,TT+1
	PUSHJ P,C #
≠⊂~LhP&6>4)α	2λh(&B⎇↓α~BαbRP4PJBVNDQαA∩≠
ε.:_h(&"∃∩5α	bB¬$∀PJR2:*αQ1Qβ4(ε$b0~∧∃ESλh!→%∃≥D
%CλQ!PE∀H[β≠P~
U≤B
¬Dλh!→T⎇∀YT¬"eJ8∃4(Q!∀l]hT¬"d⊃Q LlzhR¬%EJ$$L*1PPMλZ4DRλ¬Bu$→XU⊂h!→T⎇∀T
Be%8~d(h!~∧⎇α
¬Dλh!→%∃≥D
%CλQ!PP@"TQλ)1s@≥αj&'"H*∩→X_εE∧R))j RDBGEX
∀∪!%→∩A∧X`∩w
%ββ)∀A¬∪∂9+∩A≤J≡84PJR2~*αQ1Qβ4(ε$b0~∧∃ESλh!~DdtT
BcεεββQ!∃$dhT¬"c6εhPα2TJ:λ∀Qλ8Qc"A→∀T@λ∃⊂4LH⊃"TQλ)1s ≥αh*ad∩⊂(⊗!∪*))mβE	MOTA @)PY6h`@```X0a2
∀%∃%'(↓%	
0D~∀β!U'⊃∧A@Y¬≥π=≥&~∀%≠∨-
↓∧Y%		↔ε~∀%!∨!∀↓ X~∀4∀_w%		∂0AI	¬∂14A%	¬→'⊂A%⊃¬1
_↓%	π¬≤A%	π	∞bA%⊃≥~e∧4∀~∧vlr∪∪
8A¬∪∂9+~~∀4∃%	¬≥0t∪Q→≥
APXd``4∀∪∃%M(A%		1
_~(∪≠∨-∃∩AλXD~∀∪)1→αA(αaIAAh(&*∃~QαJ$∩~NhP&*Vmα2∃ααJBe∀H(uDhQ!∀L@53λλE∀Q∩()D]↑⊂$cg*S←+∀*∃∀@
	SKBG↓)(H\αiD4
∀"α=	S LLzhR¬%EH@hPα33j@ ¬M T,TSAVE
∀∪!%% )¬!2εI∀λ4(~
U≤DαH∀¬EU∩3(ZA"B)YuQ(λ∃⊂4LH⊃ B3)zQ(∃¬J∀p5HQ B2J*uλ∀HHR1s!Q@εE)⊃!#!d∞∧f)dλ"∩∀*∃∀D]↑⊂$cg*S←+T*∃∀BE∧R))j RDBGXM


RDBXFL:	ADD TT,RDDSV
	SQBI TT$BYTSWD)→!
¬U∩∀∪5∨ ~∃∧	2εI∀λ4(→*%≥αλ(D8Ql#!↓ TQλ_QnB*I∪S@
Eh↓Q@∧e)∀h⊂!"∪&Y!εB∧d))λ V iFA∧j∪''⊂*→_⊂εB∧e))U⊂)"!∩cbFEαd))"RP**εa,j)Ub∃&(∪!*c⊗LT"∀FB)"!a⊃X]∧h∃i`⊂#⊗(⊗**αD]`∀HIS IS THE POWER-OF-TEJ EXPONENT
	MORE TT,A
	PU@'!∀A Y→→¬∪∂h~∀β!= A
⊃@Y$
∀%∃¬π_p\Y%⊃≥≠⊂h &*,jB<Tλ∩e∀HiC≤λβ"B(HSH∃
E∃∃
f⊃ B2J*uλ∀HHβ&→`CE

λRDNM2B2	TLZ D0b`⊃AαεβK8⊂λλ$cg*Sa"`∩↓
εN*↓EA→¬:εMα∀*ε"K∀∧
¬(Xte,QQ LU*:B¬∀IiS∀λ↔8$
≤T	∀∀
8UB∧∃Z@λλ$cP"S'jcdλ*#P'U εLO @ASE 10& CAHC
]		;EL@λA∨_A∪
≤↓
&≡u*44λ1nJ$~"εI¬∩∩∞!
αJ∩
XαJ∩:mAαJ∩u*5Qα∀":5Rλh( (*:T∃%IA∃∀,_HU∩¬9→d<dUX4D
(_5$-$λdLEHZ hPQ'3[Z¬%"RR$
$,D	tt
λ9∧
∀_:D-∩¬λd⎇∩
(T"∀¬"RR%!PPh*(D≤D~' M¬Z9∧R¬¬H¬∀$→h4@h!→T⎇4Tλ"d¬*;¬$⊂Q*$$≤ε↔ hTjtPLUYZ∧<*λ%BE%E⊃PTutA∀u=IhR∧∩J*2,∃)1PTutA∀U∃:DαE%E⊃PPLjzDr∧UH"e[J:∃B]89r]=:¬4eα8Iu"]*¬4l5:∧u#kQPPJ∧	%∃≥D
$$∀1↔4∃∀X→4Lttλ4D
$λd⎇,hAPPLjzDr∧eH"e=I↓PPL**5"¬(H4D
!↔5<⎇*I∧d-:4∧≤D~!PPMIIdr∧%J%~-9J0hP→*%≥"¬
E"H↔8∀e∧λ_$-$_4∧≤D~$¬ 95∩λλ*Q02dλR5λ
9s12	zh∀q*A"B4
Zr∩H
¬⊂∀Q	→Prα'5c"SJt"2∀J$⊂K⊂!⊃.pλ*U⊂"l*⊃e""bλ f($⊂a"b$PP)dg∃ l⊂'S⊂*$$TP!d TεE'+IDd)&∩P!⊗→βE'+Rαfgk"RP!⊗)∀W,&*
 TFEαe))jλ∀**∀CE)"!∩]∧fgU"fP!)"!%PFE∧j∪''⊂*≠_εEαP⊂%)∀j⊂∀*∃∀FE∧U&''⊂∃⊗→_∧BP⊂⊂≥Q97vP~2y2P→7{w⊗λ;rSy→P92pY4w3P≠4z2y_v⊂:7ZrwεEαP⊂%)∀j⊂)"∪*fZεB∧h*iR%⊂#,∀⊗)" Qg"∧Pλ⊂≥i|[q7vεB$c'⊂∃ibf"TiV∧iRdh"P∀")'fTεE$c∪⊂*ibS"iiVαh*id∩⊂(⊗)⊃)'fFB∧h*iR%⊂(⊗∀$g*"T'εE)⊃'&l≥αfgk"H!⊗)"⊂%aFEαh'h%λ(⊗εEβE)"'∃fZ≥∧U&''⊂∃⊗→X_βEP⊂∃&''⊂⊂⊗→__βE∧P⊂λ⊂%))U⊂)"'∪Z FEαh*id∩⊂(⊗ ∀"$g!R∧D]Wλ#'jg⊃εE∧fSk"P! ))l∃!εE∧S+j'⊂∪⊗!⊗)QbFE∧H⊂%))U⊂↔⊗YBD]agS*)'fad i∀P i"H$cg'T"bεEαfgk"RP"⊗!⊗j)kb
&('!∃c∃XFB∧g+j∪"P!⊗∀)W"$QFE∧Pλ*&'`H*⊗→_εE∧Pλ⊂⊂*&∪P*⊗_L_εE∧R))j⊂∀"!d_CEεE)⊃'&Z N∧j&'⊃P!⊗)∀W)cgβE∧P⊂∃&''⊂∃⊗→X_εE∧Pλ⊂⊂%)∀j⊂)"∪&c∧]U"i&dS j"iH P'*Sa"i⊂∃'ebg⊂*g&⊃iiP H)dcgλ$iPεB∧P⊂⊂λ⊂⊂%)∀j⊂∀*∃∀D]c∪f&'kRg#P S⊂"l(∪g"g*∩`j'iβEεEβ≥i")∪dP)"∀'fXP∀")'fL⊂)")∪fYP)⊃)'f[H)" bS ⊂$i⊃ P$i⊃ XP)⊃$gεEβE$c'λ*ibf⊃iiV-CE)")∪f]∧iRdh#bH&('#βE∧P)Rdh'⊂∀'!*cβE∧P⊂∀'h%⊂∀⊗εE∧Sgk"dH"⊗∀!JFE∧aPdf⊂"('!*Q∃f('⊂*c⊗XBD]j'SP!$cH*'P"∪P g'U$"i⊂∩f"!⊂∂FE∧P∀'h%⊂∀⊗εE∧T*id⊂⊃,(⊗!CE∧ibU-!⊂*∃⊗"εEαdb(!λ"⊗!FB∧fgk⊃P!V-M~_≠X⊗⊗('⊂*c.FB)")'SX]∧dS"!⊂#!FE∧R*fh'λ#⊗)"∀'fYεB∧h*iR⊂#,(*εE∧R)h⊂*#,!gS)FE∧T'h⊂#⊗(⊗*εB∧ijaλ#,(⊗∀≠X∃XCE∧e)∀j⊂('T%_FEβE)")∪dY≥∧Tbj-⊂∀⊗εE$T(⊂,⊗-fV"!V&⊗⊗⊗+⊗$Wg⊗⊗-LX__↔~X_↔_X_↔~X↔⊗X↔⊗~K_nFEαa`dgλ#⊗⊃,βE∧fgU"dP)'εE*⊃i&dgβE	JUMPE R,RDROM7
	ADDI TT,(R)
	CAIG R,(D)
	 JRST RDROM3
REPEAT 2,	SUBI TT,(D)¬
RDROM3:	MOVEI D,(R)
	JRST RDROM1

RDROM7:	POP FXP,C
	POPJ P,
]		;EN@ OF IFN USELESS


RDAEND:	LSHC B,6
	DPB B,[360600,,C]
	SETZM B
	LSHC B,-6
	DPB B,C
	SKIPGE LPNF
	POPJ FXP,
	PUSHJ P,PNCONS	;DESTROYS TT
	POP P,B
	EXCH A,B
	PUSHJ P,.NCONC
	POPJ FXP,

IRDA:	SETOI LPNF		;INITIALIZE FOR READING PNAME-TYPE ATOM
IRDA⊃8	MOVE C,PNBP
	MOVEI D,BYTSGD*LPNBUF
	JRST (TT)

RDIN0∀∪A+'⊃∀↓
1 YMβ,k~D~∀∪!U'⊃∀A@Y'β-`j~∀∪A+'⊃∀↓ Y↓)e∪≠β≤4∀∪≠∨Y∩Aα0Q)(R$∩vTT(TTA∂I+≠¬→∀@TTT(T~∀∪A+'⊃∀↓
1 YI'(k~D~∀β∃I'(A%M)0j~(~∀_w$HA$f↓%	≥≠∃$A%	M≠
dAI	'
DA%	'5$~∀4∀vvvlA%%=$A≠'≥&A)~∀
∃∃$dd∪1%$AI	%~h$wπ∂≥Q1(A∃%%∨$↓(∞&RBα∩>Q∧r>Bε$J69↓m∩⊗ε⊂hR⊗IMPJ2⊗J∩αJαJi8%n
d
NQ|hRJ∩:l*Ih&d*JIα∀"J5`KZ:V6-∩&
α⎇2⊗J~dz\4*∀"N6∃⊃P&2⊗∃⊃αJ∩∀id%nm*2R&∧b∃αN∧b&∞εt9α6ε≥∩>Mα∀*RVJt*⊃α:|q6:&bαε~R-⊃↓	9⊂h(4
∀"N6∃	P&B>αα~bAe 4*J%~6⊗IPJ2⊗J∩αJ∩Ji	D%NLb2⊗≡aαJ⊗%*J9α4
2V∃∧2J>5¬~B2&;RDQT@
A∀"N⊗6JαJ%9Y∪α¬(J4lK∀
$%4(~"¬∀HH$e
λ∧Q
@!~P)⊃+!→ R@	-∧β→αJ∩4⊃Qα∞αJ$e
λ:E∀e1Q hU8X%%$A_%,LJETL@H∪0(~Sh⊂iλ4P0jHαi⊂(∀'abiTdπRS
λ∧⊂∀'33@4∀r3Hyα"P(UdπTE PROCESS@∨$h~∀`-β0∞a∀qSsd∧∂(∂λ∀(jgU ¬ FOLεR4Ph ∃∀J~D+Pα33j@ ¬I T,0
	PUSHJ P →∨Iβλ∩$p∞~>⊂αR"∃¬:"&R*αN&:<b∃ -~Yu$(∩⊂(FA∧h∃i`λJ P,@≥π=_
L4PJ6 =hY∩∧∩J~∃,@u⊃#!∧e))U⊂,!gSαS

λ∧vvVααN⊗6L~0≤@⊂πg @π⊂≡YXT`*λ⊂λ)∪βCE@'M_∞I@!⊃∩E≥	I∀93Q`∀CE_ 6βX%m↓h¬R∧hε5		3Q`⊂T¬  9
$p→↓βiy↓αtJ11αD*0∀≤T	∀<@StQ(Aα@

R@	'5∩t&¬*N"$
αe∀J9TKQ!∀U,X∧⊃$λ+⊂t	@h 
		8π⊂≡5D∧4⎇YhB∧≥!Q LU*:B¬∀IId-⊂β"B!QTQ∀iY,λ
∧SdπVNI T _b4⊂λ&BαZ4B¬¬J@hPα2Tj∧⊃∩)@!`f&βE	   QRDSEH∩∩m)⊃&~αN"zYD"∧βQ5HZH⊂
@!!] BE USED
RDSMI1:	PUSHJ P →)e∩~*≤	⊂&∞J∃α¬b*Rb∞αIBZ∀QQ%≤
A∀∧823@⊂⊂T∧%@)a∞@$β
`⊃≠FA)`I∧P⊂%∀)j⊂#⊂d∧SE	8π3 ∧∧TzI∧-∩λyt$⊂3 ⊂∀`df⊂⊂βHARAAP	$ααN⊗Q¬~εJ⊗αzUHαB0h→1(⊂%F-".hiαE∧H%))jλ)")fRX@
	JRSD↓
β→'∀~∀4SY`≠ZλhU∃$_8∀b∧(~"¬¬)x4-≥9z#@!αA≥MNβ	|ANYP@⊃∪9∂p@@t|@@←∧[⊂→>JzQ>!|I0≤@Kqc!πnjb)∃β"W∩h∧ IS A CUPAR SYIBOL QUOTER (ALMOST L@∪↔∀@DDOLR~∧~)%∩Z∀
Ihε≤Z&B¬¬!2mβKPhU(HD∧e↔!∀l@uQ2$
λε⊃" λ
(MαVN∧λeEαJAP@!4⊃4i∧⊃R∀¬JMlα!↔up5λd⊂'jU⊂⊂
 TH@'
↓'⊃∂)LA+'⊂A¬ %¬∩∩Z	⊂h &*≥↓αQHzE∀¬H!P@LYzd,Jλ¬⊗∀ ∧VB∪
∪!U'⊃)∧2bAIY4`*MPc!↓4p
aλ!(λ@,R70+⊃
∪!= A
E↓2P4PJ≤→`λ
EλX∞εBα	 JRSP BIL¬)∀p4(~
U≤DαH∀¬J⊃QsI6 ".hitHλAQ@εE∧Sek"P⊂i_V CE	JSP T,.SET		8π⊃β!A∪⊃2X↓)⊃
AI'+→PA∪&A¬→'∞A%_	α∧hP&BVα9α¬αβ⊂#!↓33uHY(⊂#
∀⊂ss*	∀C"A→∀TVDλK⊃Q(~∃0	"TFE∧h∃i`%⊂∀⊗"bfTXBE∧R*fh"H V)"∃!~FEαd))-λ V∀(
FE∧h∃i`%⊂∀⊗'!gS)FE∧Sek"dH!⊗(iT ¬CIAL
α	PUSHJ P,XCOLS
	MKVEI C,QSP@π∪¬_∩∧∪5∨ ~∃∧⊃2∧∀PJ"JJRα¬1λ¬⊂hP~
U≤DαH∀¬J∃0
(∀'hεE∀ ∧VB∃8	MOVEI C,Q%ISM
∪≠=(
,∀λ"e%*ZD@@ ¬∧d∀)(
 A,(P)
λ	PESHJ @ 1!+)!I≠ ~∀%∃%'λααB>BP4(Q*$%4&' M≤X¬∪iTλεP⊃λFXP)
λ¬%	-λftβ!U'⊂A
a Yλ~(∪!+≤B)αAe"f$∀PJB>A∧2bA∩ h &∞J0∩¬JAC∪β1⊃∪M∀~(R∧≤~8R¬<λYbπb	~2∧≤→ID,"λj$|@(⊃r*I⊂3C!!(∩TJ:λ∀Q
hLb"'∀⊂(∀HX1∪∩*:λ(	X6(∀hX(⊂(

q51	u4t⊂(8+C"A_p23D
∃↔I!"B(
9r4∪D¬,*⊃K
λ#"A∀λ∩TJ:λ∀Q
hMβ"A~q5⊗IT(λT⊃,(∀FB∧e))U⊂)"+⊂→FEεB)"+!
≥∧ibU-&P⊗LT#,(
FE∧aPfg⊂*∃⊗⊗Y(FXP)
	 @OPJ @,
	SKIPGE T,@DTSAR(AR2A)
	 DLLN T0d``@h(%↓∧RJNQ¬α6B)λh(&B-~!α~E↓2⊂4PJBVNDQαA2%J$4λMα>Aα5BA2⊂hP&∞εLqαRQer44(JαN⊗R|i↓5ED2bA∧hP&*J≥!αB≡∧QD4λhQemm¬~B2ε≤J::	X∀≥∀tλ4D
(_5$-$λe,t8¬∩)yβ)P#∪i⊂'(H g"↔)WεEβE!b)∪(Y∧fSi"dP⊂V*)*U$εE∧Sek"fH V* T)"bεB∧e))U⊂# f∀bFEεB!j)&∀]∧ibU-&P*∃,gc#βEe)∀j⊂*"T()$FBεEβ≥R`∀XMPA %TXC@)0@C)1¬'εA%"f
V2αRRf⊂ε∩¬%K_#*λ¬∃_Mh∃
K0Mq$
∃⊗0FXh⊂
*⊗a≠c⊂∃*,aR⊂**,P≠g⊂!S))`∩N TTYB2 TTY@∧fA%"f	Nλ∧¬%%_ 
∧
∃⊗0FHh⊂
*⊗a~#@ TTYBQ∀A))ei~AQ)3∧j↓))3∧β*!αR%J∪,4
E%L&YR¬%K_# $∃∃⊗(εPh∃
K0MRD
∃⊗0F@(P ∀TYB0∩AQ)3∧s∧A))3λs∧A%"f	@_@λ
J⊗0@≤R⊂**,Pα8

λ∧⊂∀*:T¬%IA∀`(αkdgH**,P∀)"`∪CAJ, RUBOUT HANDL@$X↓β⊂~⊃¬∩⊗ε∩dJ0∀ εEεBα;;+↓∪⊂~&$Jε "λ¬∃∀⊂r⊂*(0p
"T⊂!*c⊃ ¬RING ROUTINE.
0⊗@Xπ2∧∃Xhd-∃4
Uα∧∀	DM≥D	t2∧9λ∃∀8¬⊃**h⊃Sj$∃∃⊗$	3P∃*E@εE≥Nβ; HAL@		LAβ→_↓β!!∀zBJ&
"∃αJ,∩6FQ¬αJ>∞-~N&:8¬`hSαh
MH i#jSbg*)H i"P⊂P**,H$g *U⊂#$f⊃P i)⊂lP$gλ VεE∞]]P*∩ ¬ FULCTIOL∧A)≡↓↓+

∃$A
∨HA∪≤Aλ@Q
]≤XA#∨IβλR0~∀f@Xπ2∧h@λ
I⊃(⊂iZαg"⊂∪c⊂"g∪`j!d⊃b⊂&"Q*⊂  T"g)P∩dε C.
0⊗@YYαJV∀zVAα,~">εt9α&M¬α⊗J~⎇∩6⊗⊃∧z1αRD)αεN≤z≤L~HT"∧zZE¬-AQ#K[4
E%JD	∀2∧→k∩bα	λ∀M∃∀λU∀
9→d:¬*X$m
D	∃~∧Iyd*∧iz"∧⊂∧ih∪ hiWβE_ 6βYα:=¬∩V
>-!α"ε≤Z& 4t	∃~∧Iyd*∧α1H
I⊃0	"H$iP'∪β ECHLεA
∪1
P_Q!PC[50λ
I⊃0	bH i"P⊂βH∂6αλ∃$L)HR¬<α5∩∧
⊂∧"P∩h∧S DEFINITIONS8∧⊂∀$ZEDmH⊂∂'WM↓⊃".s(Zα P!∩hεE∩U,!`∀L==0∀d@`∩∩∩m∞ <h¬∀IYα⊂!$U∧@
%TXASC==:17\∩∩αw¬'π&Jαε <HQPP@ U∃_U1NA→Ttλ
E∀pλ"PβBIND
∩@@A-
⊃∨
∪1&~∀$`AαYY∪⊂~~Lb∀4λL~ε&9∧	2RJ-"  (αB(	
TVHλ∃α+∩j⊗dBE∧T*id FXP,(A)¬
	@πβ∪
↓
 %→z$,AQ J¬8ZEDj¬λeEαα#"A→Tpλ
E⊃u∀HJ⊂B"'cbb R@β	Qβ¬→
mβ$eαα↓Q9@∀πR¬-8Xe,@∀β"A_p23DλK∀!*(α`b&∩dεE	;AR2Ah\`%βiyαVα8T5,J↓P@!(⊂
&∪β ARIαP⊃Iβ↓AA@KZεIJλ∧β"sαλ∂'d∀Q0(I⊂∧g"CE	MOT¬⊗%¬"Q2J(5"k!Q LDJ+"∧~β⊂∃
Jp4@∀⊂i→ @)
∪'-∪!
A~∀%¬"2=α
⊃J¬1	↓AAAα↓P@!33uHY(⊂
* εT.CL¬&∩∩m∂(A¬''>≤Jε@$X@λ	@h¬TPUT TTY
∪'-∪!
AY↓))Mβ$QααH%m↓E""*λ∧r(yβ⊂!$U⊂*"f∪)P ∀YM0A$B&MαM→α>hT∧4LHU⊂hPα(∀
Zp∩H
¬∃∃⊗()!DDNβHβ3	
A∂PAπ+∀~0≥∩λ∧∪j95∩3i@⊂ 	N↓λ⊂∀!~¬-≤∧λeEαβ⊃β!↓4⊃4i∧⊃P(⊗XT#⊗(⊂		;PARENS COULT
	MH∂-$A)(Y_X
6>$(4(→Yu (αP ∩1↓))'¬$QαR$s∂(αα& 5λZB∧4→HR∧lxHR∧∀~J0hPα4∃*9λ⊃V
¬∀C"A~∃0r∧λT⊂λ⊗⊗!RP⊃		;P@+M⊂@J@λ∧αDtz@∧L@H⊂	j∀$g#@ YET)
λ∧∪'Q0	α	`H$%@8 λ		q⊃∀d	⊂4u∧	qH⊂iλ4P0jH4Tc!↓2⊂TK)P!#∀)"(∧B]kbP∃βANDL¬≡Aπ1 ~⊗α)d-≥4λe∀|T∧D$5R0hQ NtjH5⊃(	@c⊂ ∀HE WORLD:
8ε∪∧A!β&A→%' A∨_A¬+
→%λ↓∞"ε∃→↓"→`λ
(5Q4J8(∪tHHαi∀FBα;	C HAS TTY OUTPU@(αα~&2*αεJJ
H4)@1_∃∪∀∀	∧
~λ(T%H_$dλβ"Na⊃-@≤H≤X∞ USEFEL C@AR SEEN
0⊗∩$h\`@t|A%¬	→&t)α&:α:D,D	t2¬(X∀ HαNb!⊗λπ∪@ => (STATUS TTYREAD) = T
8ε∪-∪9
∪→
↓⊃β&AQ)2A∪9!+(A→∪⊂∩∃∧
JJεHh)l&5BAh&≥"J&:8αRεJlJ0∀
Iz"∧≤λ~"αBT∧ 	_H∪SjD⊂3@⊂∀h)$g⊃T@
;		MODE BITS FOR IN@UT FILE
α;		PAREL¬)⊃M∪&Aπ=+≥(~(r∩β'¬-βλA
+%'∨HA!∂'%)∪∨≤4⊂v∩∪=%∪∂∪9β_A↓¬%β≥&↓β⊂≡Vu 4*R%J↓E@!~¬-≤	$¬αeJK∀∧≤↓⊃∪L<Z@λλ∀⊂r⊂*(0q⊃*!"B3)zQ(⊃¬H∃∃∀h~J⊂4F(*".hx5λ∀HX1∃⊂()⊃(∀k→U⊂6↓Q@∧fgUα@
A∧αa5E"5BA$∧KZ≡⊗Q∧j>∩∃∧∩&@%1Q$L4d
4LEK0hPα0p)_(⊂
*⊂j,!U&⊃Q&CE	 CAIN TT,%@)a∞@$E0λMQ B(∧	TTu∧
∃⊗0F_ εE.BDXEND AFN SAIL
∪π¬∪
A%!2z4hP%α
∃~QαR%J↓\4U"Rf	)`⊂MIId*∧~ H∃Lεεα.hi⊂ ∀ERMINAT@&AIβ	→%→∀4PIα*J≥!αRRL⊃d4!~Ddtd
"d∀*GDdsβB"'iadhλ$c⊂&∩dεE MMDE
	 BRST TTY@∧d4PJ6 =hY∩¬%EF#β_⊃↔5¬≤XXD`5αi`⊂AAE¬
	TL@≥≤ααεIJλaIAAαεβK8∧ri~λ∩1D	⊂0ri→β#P H)j)$Sα@∞~∀$A∃'↓$Y))e!' HI`≤,J8R¬¬X∧r∧λp⊂4D	pπ"'H!*c#⊃i
SA%∪≠=(
,∀
E"eiQP@*p)α)Yβk"dH**⊗∩U,!`∀L+"M
	JRST TTYB9		;ALL DOL¬∀∀Ph*RRL⊃P≠Pβ"R(iH⊂	`Rd∧ →64⊂∪πβ%
A)(αa⊗Bb≥"1-
Xh %α≤
& 2λ¬∃¬D5⊗⊂jIλhZa↔q∪uhZH⊂p*8(∩c!↓(λ∩J*uλ∃
K0Mq!QL¬Dj∪''⊂)!!*≡⊃*←εE↔D@]bSα@λA∨_A∪
≤↓'β∪_4⊂∩Aπ¬∪
A%!2z,HI`≤4z ∧
¬i1B¬<T
D-∃λ)⊂hPα(λ	*Tu⊂∃*,aQ∧D]P⊂g"⊂*∩ ¬N REP	3!∀A)↓
↓↓+

∃$∩∃)Q3∧o
h∪'π∪A≤Aβ$β	24PIα*J≥!αRRL⊃D4*%"f	↑8π M¬X9∧R¬¬I∃$-*
$Hh!→%∃≥D
E%L&y`hPβ"U
K0MqG∧@
IFL∧A'β%_Y6~(∪πβ∪∀A)(X∃)1π	0VE_~(∩Aπβ%_	αR a⊗@%λ:DbZ-A∪@9α#kbT⊂!`iQP 
	  JRSPλA	Q3∧o
4⊂v∪)1_
9α⊂¬D4∃GHe+pβ"W!⊃,¬bg⊃⊂ ∂F IFN SAIL
	 CAIE TT1=_∩∩m%!+≤Aα
Bαλd`:H⊂∂&⊂+bP⊂d∧EAR T@E SCREEL,
	  JRST TTY@2∩∩lA)↓8A%%JB¬ααI∧*∧*Xd4-!Q%%%_"tCP~94M∧dλ∃∪
H1P@JAS@ES
∩AQ→≥≤A⊂Xd`@@∩U'∀A'3≥Qβ0∩wM→β'⊂4⊂∩@A)%'(AQ)3∧h4⊂∪∃'@A$Y)Q3!'⊂4⊂∪!M⊃∀A1))3¬
⊂⊂∀!~DdzλJBc#∧εββ⊃↔5≤d~9∧L4_XB∧≤λ~ hUJK∀β≠!~Ddzλ~#∀
FFβββ∧∧α!↔u0	bQ*f⊂#∀'a⊂)QbgεE∃*,a	P]e)T⊂)⊗*∃,h!dβE	JRST TTYB1

TTYB4:	TLNE D,1000	.SEE SYNTAX	;RUBOUT
↓ TLNE D,40	.SEE SYNTAX	;FOT SECON@λAπ!≠∪π
4∀∩@A)%'(AQ)3∧j4⊂∪∃+5!≤A∧αbRRf⊃"∧4(LBJJI¬!2
~¬∩∩@4PJ*V6∧)αQ2%"f	FPH%nJ-"VJ9¬"5α∞b2εI∧20≥∩λYt0H!~4\MλT∧
∪∃H0HKαssj
h(∩)@)`	DE READ ALREADY!
λ	 @!U'⊃∧A@Y∪)I!%∩∩lA/
A5+'(AM∪⊂⊗BeIαR⊗α*¬∀HQ!∀U∃8@λ
J⊗0D!⊃,¬P∀∩c⊂ ⊂OSSABLE) AND TRY IT AGAIN
λ
¬)Q3∧iεh∪!+≤B)αAe∩V	F≤@$%nα*T∩∧zZB∧≤λ~ hP~94M∧D
E"bλ⊃⊂HK8∧ri~λ∩1Dλr⊂4D
p4h
9⊂4r	_R11↓Q@∧P%∀)j⊂*∃,a~#CE	PUSHB P,RUB1@π⊂∩∩m%+∧A=+(Aπ1β'AQ≠⊂≤4PJ*JN ∧¬%%_"⊂hPβ"U
K0M⊃g↓4rr*	λ
⊃K
λ""'iadhλ*g&"TiP$gλ)j)$SαC
	 JRST TTYB4J~∀%)→
↓)(Xb@```@h %αU∩N@"λJEL∪IQP@LYzd*∧EH¬%%8~"D
&(∩HKαqq*D⊂r⊂*(0p
"T⊂)`→NTAP⊂~(∪)2t)α↓FBβββ↓∃e≤,T
5L@U⊂6↓↔qt⊃)D∀⊂4HYβ
	 S@∨&ZdQ
a R4PJR2~*α⊃1Eβ↓A@%u~⊗∃αα;∀e$≠↓∪@8pε'iQP( i⊃dε~∀$Aβ∨&ZdQ
a R4PJ*JN ∧¬%%_ !Q@εE*∃,a~%∞α	TLNE TT0d``@β↓@$%]∩V

,!α>V ∧∧(0r`⊂∪βP(A=A'%∩& 4qQ J¬8ZDl@(
⊃K
λ∧FEαe))jλ**,aFAεE∃*,a4M:∪⊃I%5~AQ(XA
a R$KZJV
∀*⊃α>-!α
ε≤Yα&:αIr∧
λ∧u
)3Qc!↓2TTjD∃∃⊗(ε εEεB**,a
]j&∪α@
AβHeαXd@```@I`≤<tλ$≤αh⊂*)u3Q∧	1H∀HX1∪∩)HαBE∧H%))jλ**,a`BE∧Tedh#QP)⊗∀⊃,(∀DB]iedT⊂ c⊂∩dε @'Q%∪≥∞4⊂λ%αU∩N@"λJEL∪Y↓P@L8→∀*¬%E¬%"⊃Q J∧αTTjD∃∃⊗(→`FEαh O TT$1⊂000  $∩w6
∩-αε~αN@%)→d:∧Yh@hPα4q*IpεP∀⊃,(∀FB∧e))U⊂**,P→`FEβE**,P~d∃∧U&#"P⊃⊗_X_∧W ∪EE S@39)β  KZ~>J≤)α4XX@hPα(∃	ISH⊃¬Fα+J81(∀k→β* lα]ibaSdεD CHO@∪π∀~∀%αα*JN ∧¬%%_ 
)1 B2J:λ∀@⊗∃*,h)R∧@
	JRST TTYB9A
~∃Q)3∧k,p∪)→9_AλXD```@β%*N,)αNfu"ε`%]~Bε∞(h %αU∩NAα%"f	XhRRRf⊃*5hεU~AαQe"Rfε$h4(→*%≥αλJEL∪8⊃PP@ U∃_MH
∧U&''⊃⊗→____∧W∀bbP)Ve* lα]idg⊃d"P!R i⊂'P%"ajβE	 JRST TTYB6C
↓TLLεAβ$IαP⊃Qβ↓AA@HI`≥4q1JYλ⊂
$∩dεG SEEN
	JRST TTYB5M~∀4⊃))3λiεt∪Q→≥≤A⊂Xh`@@~∀%∧RJNQ¬"Rf	4P$%@9iu"∧∀	T≥)t∧9⊂4C!↓2⊂	)⊗α R,VTSC@'H∩∩`-αA!
≥X↓0∩α9H5∩J¬λe@|∧ .@
 ?β
(¬∧hπQ ,∧@F↑λRR4Ph ⊂LYze~∧eE¬∩Hβ"B)Yβk ∪ T, ⊃$~∀&≤
6 2λ¬∃¬E∃
#!∧P%)∀h∧ .,h∩(LB2J@$
"d@εE∧R*f`⊂N R,.4j~(LRJNQ¬"Rf	4P$%@9iu"∧∀
5%∀→hrlDα2q$	00tI@P!d T∧¬α
	IOVSS T
	H∨-∀A∧XQPR~(M"2=α
⊃J¬1!↓AAAα↓⊂K]X∧q(j3λ⊃J)pH∀hX3C"A~⊂ε'P∃*⊂2⊂000  $∩w'%∩& 4tλ$,<α3C!∧fgk⊃d¬ F,(@
 "α¬⊂hPα2TJ:λ⊂
*⊗a→FEβE**,P≠%≥∧U& ∞ND,40000	.SEE @'e≥)β0$w⊂≡B,qαBε∀*0⊂@ ¬∧P∩))j TTYB⊗Q
∀∪¬_∞M↓i⊃"5α⊂
!Q@∧e)∀h⊂"*⊗a→FEβE**,P≠(]∧U&#'⊃⊗_X__∧W)QbP ∪YLTAX	9C@→∨M
A!βI∀4PIα*J≥!αRRL⊃`4λLRNAα ¬E%%_~Dhh!~4m≤HTαk∩λk¬αHβ"B$	TTu∧
∃⊗0F1"U∃_L∧]∧R)h⊂)**,h∀dεE∧U&#'⊂i→ @,100 00	∀∩↓∃%'(ααRRf⊃λ$%@9ydeJλiu∀≤UXd,,DλTd∀h∃
K4pp)Aα@
TTYB0∪αβP&*Vmα∃α
e"Rf	L⊂4(~
U≤DαH∀¬J∃⊗0J(c"B)Yβk"dH**⊗ U↔&''αDY`∃PDATE LINENUH
Aβ9λAπ⊃¬%!>_h &"e∩b5α ¬D¬%J8∃∩D5⊃∪@4⊂πc⊂⊂iigaR`j"bλ'j`∀PUPλA
%→α4PJ6.Z,IαRQd
Q:∞E_4(→
%∃TTλBd¬JJ4
∩λ5⊂hUJK∀βL'!∀l]hY∩∧
Eλ"Hh!~¬-≤	$¬αdj(U (4Tq!Q@∧fgUαAI B,(A)
	MOVEI C,(A)
TTYB→D:↓JUMPE C,TTYB9J¬
	HLRZ A( ⊃ε$~∀&lzR*λ¬∃¬E⊂*#!↓5∪⊗HT∃∃⊗X@
	 JSP T,FHCMH
&~(∪⊃%→4AαXQR~∧∪!%%$AXQεR4⊂∪∃%M(A))esλ~(~∃))es∀t%!∨!∩↓
1 XT~∀&lzP∀∀λ∩bD%⊃P@L**5"¬Yh$L@Qβ"AQU∃⊗(π∞B5	IQ(⊃¬FMm`→YDW)QbP ∪YLTAX	9S@↔∪@A∪A9≠ ⊃α<zJRαJα≤D~!P@J	*%≥αλJEL∪1Q LU*:B¬%K_#≤λβ"@↓Gu∃⊗(
Ph∃
K0T@_H**,h∀d⊂ ∀TYPS!↓))3βQ~A))e↓πAQ)3¬→PA))3	_hA%"f
1
αRRf∀aH$λhP4*R%JαJ
β!∀E∃)z2∧
&⊂λD@	;GEPλAπU%'∨$↓!∨'∪Q∪⊂≡d	∀b∧AQ%%%_*#Pα33jHαP ∀T,TTSAR(AR⊃)
α	PUSHJ P,AFORCE
IFN ITS\DH`Y6~(∪'	hAλH∩$∩v}A]⊃β(AQ_
α∩{x4(~	u∧Rλ¬@hUβ""'bg"∪c⊂$c∪⊂$j)W →_εB$c'∩h)`≤D20,[
	MOVEI DT,F.MODA~∀%≠↔-
↓Y↓)Q'β$Q¬$bR~(∪≠∨-∃∩A)(αb→:∞D
8$%\→α"ε~α6@-J
U"∧i→D*∧iz"∧9	tL@Qc"A~∃0r	$⊃S∀¬JPpλ'TFE∧j∪'"P#!!*∞⊃a←εEαP 
OVE D,R		3MAYBE NEED EAH@≡A¬%⊗¬∧~VJN⎇⊂4(ε∧zB)αα¬@hUQ⊃∪@83Q	@c⊂$c∪⊂$j)W ∧20
λ
¬)Q3!'⊂h~∃∪
8@`I64⊂∪β≥⊃∩A)(0K ∩b≥"1-⊗%BεNKY⎇α~|b⊃α∞D
Jε∞$*Iα∩⎇:0∩¬Itβ*∧)~E_h!~E∃Td
E"bXK∧
⊃β"A∀⊂TTjD∃∃⊗*
l#"A_p21$
∃&VβFE∧H*)-⊂∃*∩_J∧¬∃)Q3!&BβP4*@Q⊃∪@83Q⊂∪βF IFL∧@`~(∪∃' ↓(Y
⊃
≠⊂~LHI`≥¬X∧r∧λp∧ iλ$g⊂*∃⊂#g FRONT
∪!U'⊃)¬↓2∞yj0HKαh∪hd⊂ε$iU⊂ ∂F BUFFER@λA
⊃β%&4⊂λ&6⎇2⊗%α⊂a"¬$hP&*J≥!↓"IHh ⊂@ ¬εE∃*,`j∪]	JUMPGE AR2A0Q(B∩$p∞∩⊗≤J∩*λ¬rλZα λER WE MAY HAT@

∀%≠⊂≡Z*αI1∃α⊂
λk∀
"!↔h⊂
"T&dg U ¬D A T@∨ ↓→⊗Z,aαεR|i0 (αB4i94⊃`⊂Y∀#,∀∀@		; AND↓∪A≤yα∞t
D`4∃∃⊗(≤P g⊃⊂'jjβE	 TLNE R,BBT≤LN0≤∩$p∞@<T	∧
Q(
IIu
H
Hαi&dSαATED IF 44⊂λ%↓∧RJNQαBQ$⊃↔2∧tt
U≤,h¬3∧λp∧ i∀P)bbSα YET
∪)1_
9α
⊃J¬1	↓AAAα↓∪@4λ∧ ∪TAP	+~αRRf∀*ε⊃∀πR∧t→AP@J	*%≥α¬
BHHα.h	@h"g∀ i"g∀P i"H$ g#RdεG
	JRST TTYB9	↓;TTY IL¬!+λαα&MαLqα2→hR∧lxHPhPβ"C!
∃⊗0H→∞B4
Zp∩H
¬	⊃⊃*@$abDB]cga⊂&"P H!`λARACTER
IFN ITS,Y
	AL@@∩AQ(XK%B≥⊃
`∩U, iaB]c'f⊃⊂!d T a`∀ER TO 4εA¬∪Q&~∀∪Q%5≤AQ(XK%B≥⊃β"A∀∀∪t	$∀β!↓0p2(T∃∃⊗Xπ7
	 TRZ TT,140
	MH∂-$Aλ@1E"Q$⊃↔4
¬HYU¬"λIr∧4JZ4B∧→jD-∃*Z¬"∧9λ∃∃_Q!∃∀⎇D
E"bβ,#!↓01⊃	∀∃∃⊗⊃!↔!*Q∧D]i⊃`f&,H)`λOUL@ BE MORE C@→Y$
∀%⊃%%4↓β$bYY∪⊂~~Lb∀4!→∧e∃αH∀EH∃∃∀h~J⊂4F∃ εE∧Te`h#QP**εBα	 HRRZ @$αbαRR≤
I"ε⊂ε∩HhαB2JY4∪@⊂∀⊗**,PαC@⊂~(∪∪∨-∃∩A)(αa""α#"KQ ∧]bSα@λA∨_A∪
≤αα&@%1Q M∧z	"¬αββ"AQ@εE*∃,a&*∞α	SKIPN AR1(	ε~(∩A!∨A∀A X4⊂λ&6⎇2⊗%αλ¬BD∩⊃⊃∪@:α,h"H'j`∀↓β⊃1∧∩V~~-∩⊗⊃α≤BεJLhP&BVα9∧R¬¬Ie∀5Q4J8".`	@dεTO THE E@π⊃=∧zV@%λ¬5∧λR3⊃!Q@∧fgUα@∩AλXQαR4⊂λ&N\JB:¬P
¬λβ(λ@ $∩∩`.L1α↑∃∧*0∃$X∧Q(D∃r5	∧⊂∧ g⊃dg#FBα	 JRSPλA%"f
1λH%mααλ∃∀h5B¬¬)→e"¬IλThhαB4
Zp∧⊂#⊗(⊂-PQ~@λ¬⊂hUJK∀∧cG!∀l@uQ2$
∃λE↓α@
	PUS@J P,TYOFIL
	SGSLE  ⊃
a R4PIα*J≥!αRRL∩1P4PJN@,$λeEαJ&sα[⊃Q LLzhTJ¬J@εFβ"B*
4r∩D
	∃⊗)xR3β!
∃⊗0IF,B2JY4⊃(λ¬∃∃⊗()B"'bad'H f&⊂⊂βHARS T@≡A∃∞"t
E%HQ!∀De+$∧
@λ⊂B!Q@∧d)∀-⊂ ∀T,(C)
λ	PUSHJ @,TYOFIL
α	HRRR B,(B)
	JRST TTYBL1

TTYBL2:	PUSHJ P$NREP
∃~∀4(Lj>@4Y∀∧αbλ⊃⊂HK8∧Q*:∪tQ$λP0rjX4Q∀d	∩4u∧	qH⊂iλ4Tc!!33uHT⊂k⊂*& ".j(4q∪j((⊂h¬	TQ5HZTq(λ→⊂πa!⊃i"b∧CEh'T%⊂ ⊗βEαEεBβ≥i*a∪jj⊂)∃a_adλ)*a_Pβ1 BUB1C &4∀∩∧~)%+¬∨U(tβ≠=(
ε%∧!2FJ,∩>FPHI`≤@∀q0J$
 ⊂α 2)
	CAMGE T11εZ@⊂h %αU∩NAα<rε">≤(4(→*Tm∧T
Be<h→D`:q#"A_p31$
	⊗⊂eVA"B$
p¬dh⊂P iλK+∩b,SFE∧Pλ(#h⊂∀⊗ i_CE	POP P,A
∪∃M AYQ3∨β%≤~∀β≠=(
ε%∧	1"R H4(ε¬*N"	¬↓2R≡4b>,4PJBVNDQαA2∃*	F
α⊃PPJ	*%≥"
Ydd]J*T(h!~4-%$λ∩`h!~Ttd8	u∧PQ!PE∃X&∀9∞B2	JTH⊂%E⊂J"!↔q⊃3λZ⊃(⊂iλ4H⊃J)s(⊂JXQQ4HXλ∪∩*:β"B)
TVHλ%
⊂J!Q@2U)Z⊃(⊂eHt∪t	!".u	λ5	td	5λ∩(d∪ShλXp∪hλi3⊃#!!4∃4i∧∀⊂!Q@∧d)∀-⊂ V
 TDDNcbj⊂d i Ph"i∩dε A
	MOVEI AR1( ⊃ε$~∀β!U'⊃∧A@Y%+∧E
D∀PIα*J≥!αB>∧
(4*L20∩∧~J5dβ&¬@M¬X∧r	$∀∀J:⊂u4A⊃,s5*:λ∀Q*K4⊃(
Y⊃s⊃$
u∀R)HβP$gλ(" aQFA∧h∃i`%⊂∀⊗**,P&*εE∩c'⊂$U)n"20,	PUSH@∀A@Yπ≥↓0~∀&U∩NAα∧zBε(hP4(Q'3@7h⊂	'Uh 	NEL¬β	8O ⊃α\J204PIαBz	"¬αββ"A→αgk"RP*⊗_CE	CAIH	
A∧Y0~@q⊃∪@8p∧ i∀P# ∩OM 40 TO  "β9P∩∧~(R∧|βQ#!∧P%)∀h∧ @%U	F
α1⊂KZλ∧∪j95∩3i@⊂+db⊃T∧ @'<A¬βπ,A+ A¬_
"λZ$
≤QQ L≤→→b∧
Ki⊂HKαp
 PαS ARE VARIABLE - MUSPλA∀*RfB(h ⊂J	*%≥λ⊂λ'T%_FEαa`dgλ V/%αDXLIL¬∃α4*⊗⊃αM→α$βusJ@`i" MH∂)∪=_	↓QQ J∧αTTjD⊂sT
Q .hλZP4q$λT∧P&SβRING UP
	CAIN A,↑H		0↔¬¬β↔'∧
∞∃αM→αεJ
~⊗⊃α∃H4(∀	%∃≥Dλ4`*⊃B"'P 
OVIH
∞A→_∞J↑
∩⊂$!_4LTλ∩etQ⊃∪@8StHλi⊗⊂"∪dε'TKNOW LANGTH GF PRE@-%≠ ⊗M∧b& 4QQ J∧8→∀`$⊂+↔Kq .qI@i⊂ ≡←, EAY OR MAY NOT @AVE BEEL∧A	∨U¬→λ4⊂∩@A)%'(AA≠!∀b4⊂∪πβ%
AαXLf∩∩w¬→)6|"∃α~4∧Ex≠∃~β∀
tL$QQ J¬IId*∧eHd*∂∀p'a .sjI⊃4@⊂⊂dπF@)I_∞ %4	td(⊂dQ ¬ IF IN SAIL MODE
	  JRSPλA∃*∪4∧c!∧fgk⊃dP ∀0d∩αw=)⊃∃:&N∃∧~0≤@U∀SiD⊂r⊂**h⊂4HT∃∃sd
p∧b"CE)*aaYP~	MH∂-$A)(Y_X
∞λ→`hPα4∃*9⊂¬⊂#∪(⊂RCPOS
	P@→≥∀A→24∩Q`$X7`hPα(∪)Zβ"P")
	MH∂-$A$XQPR~(L~ε&2*αQ1λ@
!Q@∧P(∃i`λJ P,CNPU
α	CAIE R,2~∀$A∃%'PAπ
∧∩0$!→%∃≥Dλ4`*⊂PS↓QTεDDNβEND↓_∞→αL20∩∧~J5dLβ!↓Gi0Q(_⊂ε$g⊃P∩`∩DLN5 %R@@→≤β1↓εJ$b0∃Rλ~%M∀λλ@ L¬!β%Q A	βI3 ∩A∧
JfRM↓αεJLJ0∪
λ~%LLd∧C!↓α@

8εvvAIβ	→%→∃ααH∀\-4
5$hH∃∀αλi∀d*xYt2∧α3T
Zλ⊂4Hz313JJh⊂3HD∀Q0(Jc"Ng]P'g⊃P INE F@%=~AαA→∪⊂∩∃p∧α∧MD	∀`*Srq*4∀⊂	"Kia`g∪$g#@ FOR TTY'S.
0⊗@Xπ2¬$λT¬∀
8YE"∧~4¬∀
JZ$d1λ⊂*4⊂3@⊂⊂h ∂MI@εA'Ljα>1bα⊗b∞e*∩&:8∧¬$DQQ#@7nh⊂h~TR0(x(⊂	"U*i' Tπ⊃&≤AαR⊗α)TLT~HU~¬IλR∧dα3Q%@⊂⊂&$S ¬ FEEDS
8εvvA¬%αA∪≥≥∨%⊂@Q

''βI2A
∨HA'+π
''∪Y
A%¬	→β≥∀O&B\4∀∩∧KIβ	→%→∃hhP&*Nαα⊃2εt~ε2AQ%≤4∀Q∩αα∧
∩-∀X_DdLhQP@*qP!↓∀λλλ~qkTHI	↔%E∀)4HX1∪∩)@ ¬¬
	MH∂-$AαY"∃%ββ	1∪⊂~∀hP&"JeR5α¬d∩~BJ%$%NαλU∀l~@¬%%∀
¬∀+0ph→@εE∧SdπVEI T _KI	→9(h ⊂MλZ4DRλk¬αdβ2sJ&Pb.jλ4U⊂∪βF MAKH
β~4⊂∪∃%M(A!≥≥_
-DHI`≤≥(X∃$(∪Si@⊗dg*⊃i'"bλ)lfa∪βHλ~∀4⊂	-(ID`&,B4
Zp∧⊂#⊗(⊂D
λ %	1_	YHMαVN	$¬αdλ¬⊗)→α`gεBαIFN↓'β∪_104λL
0∀⊂∧P*∃⊗∩`∀X@π ∩E0	*K⊂4pa↔qSsλD⊂r⊂*(0p
"T⊂"'kSα TO 4εA¬∪Q&~∀∪Q%5≤AQ(XK%B≥⊃β"A∀⊂¬))U⊂∩`∩DLNP∀~(∪πβ∪∀A)(XDh
@8Q!∩¬%+$¬%"β ~∧¬∀KI	→:SP4*@Q⊃∪@83Q⊂∩c'⊂)PdfεEαa`dgλ**⊗/∩∧@]dQdεORE L@∪≥∀A~⊗,"L4!∀∧U∃8¬⊂	i"&'
αλ
(Mα0≥αλk¬αdAQ L≤→→b¬%EKdhHα.pj$∃⊃4IY3P5λZc"B$
⊂πh%λ(⊂
	H∨-∃∩AαX!)(@$hP&*J≥!αBz	#λhαC"AQ@εEεBα	PGTLπ A∀"I2nDJJNVαHR¬∀X_D-∩D	T\βP3%D⊃0
!KαX
4SY`≤αλYd"∧βqH
(α`b"T⊂→→[βE

λ∧vw↓β%%βd@pj∩%β%%βdA!βπ-β∂
~(p
mmα↓↓))RQ)αX_4dM8∧λ¬%JJJE$⊂4TH≠(⊂λ PβKAGE ***************************
8εvv@@TTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTT~(p
mmα↓↓))αB¬%α≤zBfJL:"Q↓α∪∪ 7(∪0*:p0r
Zq0
*∀P 	NSTITUTE @∨↓)⊗∞Dr6 $x{∩αR!Q#@7nhλ∧¬JJJE%H⊂
$∩iP$iH P ∩EAD%ONLY FILA! (AH@_A]%∪)LA%≤*JZ⊗ I↓))RQ))(hQ`≠[4∧ααR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR!Q hPβ"C!↓4⊃pIZα⊂ i⊂F@


S@+	))λ∪¬%%β2↓!βπ↔¬∂

∀4⊃∪
≤ααN~¬`JFN~λh"&~p∧∧T|*→∀`5α∧he∪βB∩∩m)⊃π∀Aβ≥	I∪&AU'λA=_
2dhP$&F4J2∧⊃↔2∧∃α(⊂**P61	→4h⊃JYPp
$SβH
∃¬%3) Dp∪β&9%↓(W¬&P~~β¬J4Q0(J⊂0SλQ,¬`∩EADTABLA~∀%β&M∨	αWβ&9'0@.
→2<8¬Bex(∃∃∀≠⊃∪@9βa i∀ h	
L¬!β%Q p∃@UaT
∃~JβλKαhh	@c⊂ ⊂E@π ⊗2L
Iαε∃∩εeααK∃∧4c"HK	α0*5β",,,QDUPLAP⊂∩$∩w	+A→β  hR∩a∀JiD4
≥A⊂&ε~rεaEJ∀@s0λ&⊃l∧DDNβC@∨≠A→  hR≥BQ∃Sλh(H" L~5d$∩EJ∀$⎇X)D(Hα".hIu0SλQ ¬"!	DVP⊃
λ∧∪β&9'0GβLY≡∞αa2RJ-" $%]→6⊗B¬∩⊗NNLz0 (!_∃~@QP,,QFIXLUM			;FIXLUM
	AS.FL,$QFLO@≥4∩∩αw→→∨:,h4(_~2`*v	@$f∧DB]c ∪TLπ%
[Q3!
~)→β%3Q p∃@U`(~V5∀ε⊃ ¬ i⊗h,h≡O`i,j∀_VW&⊗α  ⊃βLX
J∩ ¬∩`Jh8T*∧_I∀m_↔8d`:H∩QHiith	@dε @)!
A¬∪Q&~∀~(p
mm¬"ε
2*α6→α-BRJ¬∧J0∃≥J*T
⊂∧gg∀P#'iλ i) VP λEAD@$\4⊂vvv↓⊂~R∀J⊗Mα
∩∃αj-∩0~∧α1H	Ih∩3J:∀U0jI3s@	Hαbb"Q↔
;8εvA9)%∪LAβ%
↓→⊗≡
"&@4Tλdm∩λ→b∧LIHT<Dλ∃∃∀≠∀¬%MλU`hSαjnd¬⊃SuλT∃∩⊂*D∃∩⊃$	t⊂shH(λ∀
Zrλλ	~h∀∪j95∩5HUJ#"AQP4V)→L.B&↓"".j(01∃λ_S⊃#!!,α"!↔qpP**P6#!*⊂S⊂i	h⊂4K→3L+	J⊂4U
↓ Q⊗∧A4∃4i∧∀⊂hJ4∪!⊃,q∃*	⊃6β!(⊗	"%V#"Pk∧α4∃*9λ∀λaf`&DD]aSd¬PLEX
∃π`J∩Zb4∃	∧H%!+'⊂↓ Yπ		_b$KZ∩>V∀b∀4*$⊃∀%5λh(%@HH%nMl*bBJ-~N&>ph(&B-~!αAd~~&aλH%n~MB:V4hP&BV≤AαA2≤22>ε#λ$%N4b> 5YQPPK↓⊃⊂K\h∧u	ZQ+5~⊃#"JHS⊂r	4⊂4V)→β_V&⊂i,j(βE
;8εv@y¬	↓%M&A∂↓'#¬'
%∪!λαα& 58J%,≥I→t`$∃⊂0IH,π⊗⊗∂&jf*∩h"$bT≥αE≥N]P"$⊃P 
@+1)∪!→%$A∪LA+'⊂A)∞A¬	∃+πPA
∨$↓)⊃
A9+∪¬HA∨A]≠%	&4∀vvv↓≠ππ+A∪λA	2Aβ
⊂A→∃≠≥(8~∀4T
Jf&q⊃`&∩Lj~R	baD$¬]∩⊗ε∩$

2∀hP&∩&m~R	1cλ$%N|∩εJJ
H4*R∀bε"-∧
Jf&q⊃2:B
∩R@4T"a⊂&$J6jR⊂a1P$KZ∩VBd*`4
%A∀%@hR≥BA_DLLJH"bc!⊃∪@8pπfh∪"hεE⊂βX%	0
DB⊂∪	∪≠⊃)∧XXH∩∩`.$zV
2(h"$$Q∪@ ¬∧b∩d¬S@)λXXb∩$p∞M⊗-BBJ⊗α:4L\βC"A_⊂31JHK!⊃,¬c$V'*fFB∧b$fQ*!⊗⊗D@	;FLOFEM
∪	%≠')∧αa1D⊃↔4e≥Iz$*@5⊗4λQ"U⊂IHp∩`⊂⊂i(	IN2,LARYPP
;DIMSP	∧A⊃∪⊂⊗~αH"∧⊂∧fb∃!⊂"$Sm*!εBαλ
)YY`~¬H_$d4h∪hd⊂∧g)U)*aj∩dπ@≥ε↓
∨$A
β⊂∩I→d:∧~*$
Jλ∧u()a`∩IPT
;8εvAπ¬→π+→¬)∪∨≤ααJ>VαI∀`(αiW DIM@'Q	α~4∧4⎇$
2l-α⊂∀HZtr3i@∧¬∀vβY`~∧~*$
M5D∧@Qλ⊃	→αc ∀B @
∨$αα~V2bjP≤@tQ⊂⊂i) lTTε¬

λ¬∩→Z5$∪αB2J:λ⊂
*_b$fTDY`∀A@LE OF <Ny	∪≠~:L4λLRNAααJBc∀I→U_h!→%≥αλ¬∃¬Fq∩3*1 B2J:λ⊂
*~"$fTFA∧e∀h⊂ ∀T,5DIMS
∀~)	∪≠
Q	h→*5α¬J@ε_⊂∧fcα]j a∪ ¬ OF 8	9βhDL@1ItaQ@∧e)T⊂**,2@	β≠_~∀&U~AαR ¬C≤$→X`hPα2Tj∧∃∃⊗
 ∧@∪≠_~∀&U~AαR ¬C,$α31AQ@εE$Q'⊂"!⊃& c@+@π1
→¬∞P∩lhR∩&6%"∪Pα2Tj∧∃∃⊗b 	MD
∪∃M A)(αaJαεl 4(→*5α¬J@ε8∩31↓Q@∧e)T⊂**,4@	&l 4(→*5α¬J@εX⊂∧fbβE(
		8π≥λαα0≤2	_d`$⊃⊂QIH1jpkλS⊂1aQ@εE$Q'⊂",⊃& c@,Xε~¬	%≠5)∧βP&*NααRQF_DL@4¬εEαe)`⊂∃*⊂2DIIP∀~(∪∃'ααRQF8DL@4¬εEαe)`⊂ TT _i⊃∪⊂⊗@!Q LU8∧¬%"β
1	→αh

]	∩w∃_
"	xb∧Li`λλK⊃S⊂(q @↓Gu∃⊃λX1λ∃
H⊃1⊂dλ4TP+∀	)0**P6(λ~TV,∧λ4TV&λH⊂4J+,⊂hλ~TV,λd⊂4TK⊗⊃h⊂**T∧X@ ARRY1A
∀~)' ⊗
%"0&ε∃∩εeαr⊃↓(~%∀
α(⊃JYPp
$SβH
&~(~∃))⊃βλ{	!+%!≤Q)(R4⊃))	∃	ε{%"∩,_@
gJ∃∀oλe_∞,,>	∀~)β%%βdpλ&*≥↓αRQd2P≤@P0ra⊃,¬c)Ua)εEαc Y→M~[∪F(`i)⊂l@
	JSP TT,@↔→%' ∩∩m→∪↔
Uβ%%¬2P⊃α∃*Qα~M∩NAααJthh!~5,∀∀
Bc⊂α".dλ4Qtd	Su⊂⊃hεALUAP	λ4⊂∪∃%M(Aβ%I2`~∀4⊂@∃⊗
∩JεePh &*≥↓αRQdb↑ 4_90HKαs∀jXTH
ε$	H
e⊃ B3λ⊗Li~M≠V⊗(IR`i)⊂lBE T)(	0:	MOVEI TT0Q @$hP&ε∩$IαRQbBQ$∧KZRQα∧z& 5J4¬$zλ(Td⎇tλ∃∀≥4	tb¬λI@hPα2∀J+H⊂+ε%∃∃α!QP4TK⊗⊂NB)YuP	dH#⊗⊗f⊂i,j(αDYad⊃a` OUT ARRAY TYPE
ARRY0C:∪⊃I%4A∧1β%3)@bQR4∀∪πβ%_A∧X!αR~∀,ARRYQ2(F)	;ARRAY @)<Aπ∨!dA¬%∨4A∪A9∪⊂~∀%∃+≠↓∀AαYβI%2c4⊂∪⊃¬I0	αε⊂ε$
@⊂4TK~,J⊃E⊃,¬`i∀ h	 TLεAπ∨A2A
∀z5α_d¬ HαB0h→3H⊂%J∀U5	↓α@
	 JRSD↓β%%2E∩(Lj0≥Q2(λT∧ ⊃ααH$%NαI∧M∀Dλ∃∀h⊂Q*J⊃0@⊂⊂α@
Aβ8Aβ%%¬2Aβ)M⊂∩_hP& ,zhTJ∧EE¬"Hβ"B*
4r∩D
λε i⊃cb`∀		; @)<Aπ∂!dA≥8∧∧`9β"P#∀'bFEαdgk"RP*⊗∀⊃∀@
	HL@→4↓)(@2
∩JfEλ¬∧2Hα.tjZ∀∪∩(Xλ⊂4J(4∧P!⊃h∧TER BE
	P		≥∀A)(Y¬'β$Q∧R∩%Zα0≤2λ9u∃∀X:B¬%~λPhPα(∩J*uλ⊂**T,1↓Q@∧fgUαAI A,(C)
λ	%@/QαAβ%I3"`Q_R∩%\J→α~⎇!1α∩⎇~⊗eαdzN⊗dhP&*J≥!αεJ∃IF∧Q c\~*%M∧λ∃∃∃~⊂$λ4TV*⊗H⊂4J+4,hλ~TV4&D⊂4TK~-(⊂**T,1∧λ4TV&_H⊂4J+,H⊂**T,P$λ4TV&(@εEεBαARRYQ0:	SIXBIT X@≥∨PA%β⊃)β¬→∀@Z@U¬%%β2¬8∩(M~&b
M!α`$βSu∧	pP4J(4∧P⊗H∃ i)⊂lPnεBαλ
*
∩JfE	P&εMu∩∩QEJe∀01∃λ_S⊃"'i"`⊃UIRED↓
&Qbb0∀zλ~$:∧HXd
JAP@!04kI@a V⊗∃αOBARRAP∩~(~∃β%I3"dt%(
J⊗"Rε
d)12n¬∩∩R
eh4(~idLBβ∃I@a i)⊂l@

λ¬β%%e"ft∩@XXdU1%π(∩$∩w6
Aα&:$*a-Ebb2ε:="!αxd∧$
H⊃P@!3pU
94¬∃@1+20 ,,OBTSIZ+ "αYIA@KZ~>x[∩αjλyE_h!Q$
∃+~∪#Pα+ _K⊗→DDB]i`∀AL¬∩ε∀!α<4λ∀`8RS@⊂∀'`	NTER0∀~(∩P∃@Ix%%≤α6Jf↔Kl@⊗→D]@ -<@→9∂ ∩↓∧J0∩¬xJ3rbGJ$,@λ⊂λ'TP ∂F DATAx~∀4T
JJ@~⊂
'∧i"*⊃$hλ			;FIXUP @%=+ ∩→hR∧St@⊂⊂c*"iλ!&*εBα	OBAFIP⊂~(~∃β%I2cλt%'↔&∧	αεI∀	2∧Q(∃∃∃α,1G∧P$)∀-⊂ i V∀ T→ TDNβAR2A HAS SAR OF ARRAY @)<Aπ>¬Iα5)yPhPα33j@'$P T_V→(T)∩∩mβ$bA!β&A≥U≠¬⊂∧∧`8H⊃∩)X3Pr)@dεS
	PU@' A~@λ∧	→β$$a∩h∧	;HAH	A∧A→>≤Z$4!→¬∃∃αH∀EH4TV*⊗h∧#∀B]i⊂$⊂iP&"Sα@∂)⊂αα0≤2λ~%∀
α(⊃λ~α FEαd RZ @λ@2
∩JfE~B→$¬\!α"ε~↓E.H~$<-8¬⊂∪ ¬GAL INDEXλ
(MαVN∧λeEαβ⊃β!∧e))U⊂ i)⊗Y#εEβE i)⊗Y_
	CAH_APY1εZβ⊂$%@8∧Q(zαf iλ i) VF@
	 JRS@(ααεJJKα≤4!~¬-≤αλ⊃K
λε$g∩$a$jα]`λALF A LLππ.Hh ⊂LYzd,Jλ∧@⊗D@	;R ACCUMQLATES @'%0
*	xb∧∧~H⊂hPα2∀J(αdP"→∀ ∀$∩∩`-hπB4⊂πc⊂⊃$fbg∀dgg)O∧¬α	MLπ ~:JαεIEc⊃"Q⊃⊃∪@84L ⊂⊃bj)P∪αUMBER @∨↓	∪≠9'∪∨≥L~∃β%I2eαt%!∨ A@Yα4T
JJ@⊗(#@!2Tt∧
λε#,∪αV1
	P	2tqαRQbiD4!∀∧U,X∧⊃d
∃⊂**T∧Y!CE	WTA [ILL@∂β0A∩→XT`*p∧ggλ⊗P∃ T) lPWF@
	JRST ARRP∩eλ~∀_wβ%I2eεA¬%% &)αεJ∃IJ2λ~%∃K)↓P@!α@
ARRY2C:	PU@' A~@λ∧
Jβ"B)→αjf$H)⊗∀*∃∀@		;PRODUAPλA∨_Aβ→_↓	∪≠9'∪∨≥L~∀&z*1α ¬D
∃+⊗$λhαB3)Zβ"dP⊃⊗⊂λB$∩∩`.α λ	λ4h∀i≠Q(∪hd⊃⊂5λ∃α⊂ i P$ TP ∞IL,	∀∪M)4A¬$eαX$∩vAλαα"εMβ	."ε∀:⊗NQ∧b⊗≡εbα& 4H[hPα2∀J+H⊂ ⊗XT ∀BDX@!%∞-ααZα∧
*(∃J∧βP3(Q ¬ i∀,`b]αe*fh⊃P V T)(	2F		0↔β1(∞ε@~4∧@⊂ε'kH'$fεBα	MOVEI @)PXQαR$∩w∂PA!>LrR-$
D`4⊂4TH≠)th	@ fbP⊂i#FEαd∧SH↓)(@1m~⊗≡IxpHKαs0)8(⊂λ'RdεTER T@≡AM(A)β	→∀Q!∀l@uQ(
Jλε)j
**∀DB]cbjλ* a&⊃P"g*∀,@
	TL@≥
↓)(@2≤
rNdHI`≤@p¬P$Q⊂)`iλ'i⊂)Vd¬BOL
∩A)%'(A¬%% %∀0$%@8¬r)@⊂ 	F IPλA∪L~∀%-:R¬αt
N⊗HHI`≤,J8R¬=)hrm⊗4⊃%X4Q`⊂⊃i)'iβE	HRRZM A,-1(P)	∩wI!2~∃αJ-"VJ:,!αεJ8h ⊂L**5"∧~*%LQ⊃∪@83Q⊂∃)(	 AGAIN↓(∞&R@∧∧
∧βs ⊂∃ ¬S@(4⊃β%%de→HM~⊗@$βs ⊂∩dεHIBIPλ∩∩m_∞@$α⊃4D	⊂3⊃D	qH∪	@a`I
λ∧∪⊃¬1~Aβ$β	2R≡%~B$KZNεZ*α0∃,X(U∩∧βqHλI313J93sTaQ@∧fgUα@∩APXQβ$β	$$↔:B∧8:TmH~D-~λ∧r+ ¬ OF HEADER~∀%≠⊂≡Z,iα↓IIDMβ⊃⊃∪@:p5Q$ε*s⊂*(βb`∪T LEGAL @∪≥⊃0~∀%≠⊂≡Zα9∩∧λε iKαSX
	P		≥8A@2
∩f@%∧∧ ∀⊃∀@]iKbhλ@ Lπ$A
U→→/∨IλAβ%Iβ2`<hP&ε>T	αQH~%∃K)↓⊂K\hYDe<z(B∧tXXE~∧Xε∃
((⊂gT ∧ IN HEADER~∀%β		∩↓$Xb∩$p∞M⊗-BAαB~.MααJt`4⊃3U
)10	P∀ ¬R WLπ%λ~(∪⊂∩N@∧¬∩bT⊃PD
*+∪∀C!→¬∃∃αH∃
E⊂4V)→β→∀#
DXAC@π⊂≡Vu!α~>⊂α2⊗:=""Mα|1α⊗:%∩&⊗LhP&&6,b%αIbBRQ∧hP&&>4r5αId∩BBh∧B!↔i(∞)Rm"P'Q⊂ i)⊂lP" U P$gλ+`∂RDS>
	ADDI T,2		8π ∩↑zαV∩M∧J0∩∧λX∀$
$λd`:H∩Tj∧⊂3Q∧
p4C!∧d!&∪P*⊗!∀( ∞@$$∩w'βY
A'∪i
A>2α",_HU⊂H!_∀$∧α(∀EF*⊂
∧BDXONE WORD FOR CC ALπ¬∃≤ααB>→jD-⊂Q!∀E∃)Pλ
%∃∪u
:⊂b"'i`k"H*#j S⊂)dm⊃P ∂F ARRAY IN WLπ%	&4⊂∪≠∨Y⊂∃α
⊃J¬1E↓$$↔84d|((U∩β)hB∧
(p¬ 95∩⊂∀`i⊂'Q⊂ i)⊂lP ∀O CGPY
∪!U'⊂A
a Y∩$p∞Nε4)αεJ∀
eαRMα∀4!Q#@8P3∪
4∃∩∀I@h¬GH
λ;ARRY3A ARRP∩l↓β%%2Y"Aβ%I2`~∧hP4)@8h∀de4	∀`!α@

	S@↔∪A_	α¬biE"AHH%nε∃∩εeα|1α:&bα≡&Z-→α¬α≤
H$(LRJNQ∧
JJ@⊗8⊂HK8It`$βj⊂"∪P)`i⊃bj⊂#∪βR NIL	∀∪A+'↓∀↓ Y'βI∂(~(∪∃+≠A_AαY¬%%"l$∩wβ→Iβ	2↓⊃β&A∧A'β$4⊃β%%dgα`(LRNAα ¬E≤9ye_h!→TmQ2(λ¬λ⊂ ∀CE	MOT¬⊗%∧→2Fε∃∩εdQ!∃≤\~λR∧
EP%
λ∧FEαh*`∪HJ P,PUPP@%= ∩αw¬→⊃αα
U%¬)zα∧MD
T`)⊃0tdλ5∪s$	4h∪I→β"B)*30∪Dλ+⊂4J+-C"A→3uQ)T⊂K&∃∀
"!↔uq(
@`g" TO @%∃)+%≤ααR"∃¬~εI1∧r6@"	i∀bλQ!∀l@uQ2$λ+
⊂E⊃ ¬ i∀,[∃∧SdπVEM A,ADDSAR		;ADDR@'&↓≠A$B∃αN
⊂4(→Yu (2(⊂EH1⊃0(A ¬∧fShεEM@∧Yβ'¬$QαR$∩w)⊃%&A'βe&A)⊃∀A∨2 ∧∧
∃(≠∩b∧_d∧uα+λ	~h⊃⊃(_β"B)YuQ(λ%⊃ps)9β"B*
4r∩D
	∪1)Z,#"A→U34λT⊂+⊂**V-T!Q@33j@ dP! "b)PiαE∧R)&&@ @,(A)
ARRY2Q:	HRRZ TT,TOTSPC
λ	MOVEI DT,CAMNT	α	MOREI AR2AGC@≠↔0∩w%+9→∪≥∞↓
ε∞]*AαB|J2R⊗⊂∧∧4⎇$λt@2sβ!↓33uHY(⊂kε↓".uλ→3λ∪hd⊃p3)9α⊂#'T⊂+dg∪αING↓	⊗ε ∧∧)⊃praQ@∧fgUα@∩A_XZb∩$p∞N&T)α>→¬~6 %8¬⊂⊃ ¬AD↓
2x92∧tz@¬≤LJ$¬$D→`λ
(451*:⊃1β!∧iedT P"ε⊂αPSH		;RUNL¬∪≥∞αα2>∞
"& <βH∪hd⊂S∪heP!"Qdg'$Sα@∂&~)β%%2Yαt&lzP∀(⊂4F(+⊂4F⊃ B2
*T¬⊂!∀ i2A)¬
	JUMPE B,ARRY7		8πβ→_↓	∨
↓+∪)⊂↓∂π↔0~∀&E∩Jiα
⊃E!λ!⊂hPα2∪
+H⊂+¬λ4L"!Q@∧fgU P ∀T,(A)
	SUB D,TT
∪⊃1%4Aα0Q∧R~(∪⊃→%hAαYβMβ$Qα$∩∩gβ1∪%h(&*,jB9αλbεJJK2∧4(L~ε6≡*αRQ∩0h(&∞j≡∃α%!2∞εlrP4!→%∃≥Dλ∃∃∃⊗h⊂hPα33j@ P#⊗∃*εE∧Sek"P⊂T∧AR∩A
	MOP
AHYλ~∀%∃%'(↓β%%2Yα~∧_wβ%I2nAβI%2oα↓β%%2]∧Aβ%I2hAβI%2jA¬%%2k⊂Aβ%%dkAβI%2k∞↓β%%2`~∀~∃¬%%2nh∪∃+≠A≤AεY¬%%2o∧∩w
∨U≥λA	∃βλA¬1≠πεA	∪∞A9∨+∂⊂4∀∪⊃%I4A)(1)∨)'Aε∩g1'
A≠U'(A∂Iβ∧A≥∃*A¬→=β⊗A∨_A%βU∪'∪)∀A'∪5∀~∀∪!U'⊃∀A@Yβ∂)M!ε~∀%∃+≠!∀AαYβI%2p~(∪'+∧↓)(Y)=)'!ε4∀∪⊃%I1~A	PY∪≥'@~∀&E∩Jiα%!2R>%~B%]:&2D	T\Tλ∀r∧YjE∃HQ!∀U≥∧
Bd4≠α∀λK9yb∧<9Y4bpQ!∃¬-9	"¬αIh4l@Tb#!!33uHT⊂K⊂(H∀p4AQ@4∃*9⊂H∀¬K⊂ssJ1"B3)zQ2(λ%
⊂"!Q@33jH2(⊂%Hps2iA B4
Zr∩H
¬SPiHl#"A→3uQ$
∃∩)Jtβ"A→Ttλ
E⊃R6ε_!"B)Yβk"fH V+!∀"g"⊂βE	JRST ARRY5

ARRY7A:	HRRZ AR1,(A)	;C P@∨∪9)&A)<Aππ≠-_A)β%_A/∪Q⊂A	¬λA¬→,A)=∧∩∃αVα8T @ ¬∧iUa⊂#⊗⊃`fg*α]c⊂$⊂b⊂!dV ¬ OF USEABLE DEAD BP,CONS
α	MMP
AλYβ		Mβ$4PJBVNDQαAKλ4`9β)FEαd)&&H i→ K∀ i1)
∀@A1π%αJ<4PJ"JJh∧∧
@λ∧!TB]h ∩OT@π$*⊃1αU*N@"λ¬∪dλQ(∀h_Q#"D∧λ∪Sj
Sc"H~TV-π∧d!)⊗αM @$αb& 58∧α'i⊂''Uβ @⊃∨1	&A¬∃∂∪≥≥%_
:	xb∧∀Ix4Z∧iz"∧tX¬`⊂⊂i) lCE i)⊗X¬0∀∪A_∞Aα5BA2_HI`≤LhHUB∧α3U	@P i,U(_FEαd))-λ)⊗$g∀h∧D]T⊂ λELPS @USH OUT ARRAY HEADE@$4⊂λ&∞J≡∃α2b0∃∧~*EH↔9T\T
Uα∧→x$Trλ∧∪i→β*"iλ εOR↓∂ε~∀%'↔&∧	α
H~%∃M⊗@
λe εE∧SdπV@&↓
 $*
∧`*@εE∧Pb"$P⊂β(λdQHR∩%\
22zpλλitH∀i≠Q(∪hd⊂∧"`Q ¬R, EP	ε\4⊂λ&BαZ4B¬%H0hPα4ri~⊃q(λ~T∧dgT#∀DNβHβ↔∀A∩zX$eJλ:U∀(⊂4J(4∧P*⊗h"P"V$i`∀S
∩@9(
ε2,(4(~94M∧T
E"d~+∀L@L*⊃E⊃,¬ggT)PP"∪β WE L¬⊗⊗ ∧∧-EJ(∩∧Lh:E∃,8¬∩)@e_∂
	 P@+M⊂A$YQ(∩∩we&@1¬αVN↓∧JQα>-!α~&∃~P$!→∧e∃$
Bd
+→∀`&J⊃J!↔pP4hT⊂1⊃
(4th	xH⊃⊂()⊃(∪hd∀p
a∀ai$h∃⊂#*g⊂h ggλ!`f&∀FE∧d∪))⊂"*'j)T!DD]S*fa"T⊂ ∂F DIMENSIONS
∪β⊃	∩Aλαa5E" H4(~
U≤B
!BE"α""'h*`∪H OUD↓∃' AQ_
α∞⎇∩J,8¬⊂∀& abCE	PUSH B1β		'¬$∩∩wA+'A=+ Aβ⊃	%≥→α>→¬~εHQ(∃∃∃⊗XC@M	zα∧∃α⊂
A .t
Zp∧⊂'Uh⊂ i∀ h	 DIIENSIK@≥ε0A∪≤A=%↓∧4⊂∪!M⊂A$YP~∀β'=∃≥α bεJJK*⊂$!~4-¬)Pβ
E%⊃⊂K](Z$`4⊃R4J:λ⊃sj(λ∪qDλ⊂5⊂!Q@∧fgUαS@∩A∧XbQ∧$∩∩`.l
.∃ααZα∧∀JD¬∧|→jD-⊂Q!∀E∃)∀∧
C%
"Hh!→Tm4dλ2d∃
	e⊂h!_∀$$α(⊂eE∀J"!↔ph∩λ~h∪∩)Y5λ⊃I@i⊂!&∃∧@
	PLπ A 1β$b∩$p∞∩=¬:∃α↑rQαRzαε =	∀∧TzI∧-∩λ~%∀
↔qP@L*YU∧
λ~#
@⊂4TK⊗1B.iIh  i'P∪h¬T ARRAY
	HRL A,TTSAR(AR1)	;YES - REARRANGE BLT POANTER¬
	SH∂¬ααα¬"ε∃∩e@,qQ$
∃+⊗T3P~IE@$⊂k&⊃ ∧]c∪βR ONE)WORD ARRAY, DMHO(↓	≡A¬1(B4PJ≤_T∧5α∩P⊃!αR4T
JJE,9`⊂L)JB∧
Eλ2HhαB3)Zβ"P T→ V Q ∧SAR	;P@+PAπ∂%Iπ(AM)+
↓∪⊂~RzαNεI∧JRN⊗d04(→Yu (αP ∀T,IN@'@~∀&"∩%ααJBc⊂β"B)	⊂ε⊂*∃⊗ i,U(_T#
F@
	MMP
~ααRQH~4
∩λ~#∀
⊃Q LHI∩¬∩F⊃P@!2⊂	)∪P)⊗*∃)`i(AR2A$~∀&DbJiα ¬E$⎇J:∧1"B1
λH⊃⊗⊗βP	)'⊃∪⊂∃1e"RNε⊂¬∧
∪(⊂
+Q ¬∧aPdcbP⊃⊗# ⊂ARTP
	PU@'!∀A Y↓β%%3DjQR$p∞B⊗≥*2&ε⊂∧∧
∃(≠∃~∧βQ1(D⊃R6	→β#P*T∧¬∀∪5≠ ~∃∧⊃2ε∩%~εH⊃↔5∀5∃4I@⊂)`iλ$g⊂!βE	POP P,A		∩wI ∩Vα)b∧
(pλε∀⊂∧g A
∀∪U_
2∞α	u∧Pβ"C! i),N≥	SU@∧A YHh
A4∧#!∧d&)⊗α TT1)∨)'A4λLj0≥SR(
Jλε_@(TT ∩~(∪⊃%→$A)(X4bQ)(αH4(__D"∧hε∀¬J∃β"A→∀TVD
∃∃	@h∧S@!~∀&U~AαQd2b∞yj0hPα4∃*9⊂¬⊂('!gg∀FA∧fShεEI @∧Y"J∃β%%βd~∀&¬*N"$
αdt9ye_hαB5)@&#aeRF@
	FAC @79_
α∞⎇∩∃↓T¬$
∃(≠∩
hβ"@↓Gp4Q(x5λ⊂*(αcj2 AREGT0 AREGT1
λ∧⊂∀*≥*∃%IA∀
∀XxU"¬)zU$LhQP@!α@
AREGE@(βP&BVα9α¬αβ⊂"'cb`∀↓β⊂→α
∩Jε@∀
4
∩¬λ∀`(α⊂$g∀di`∀↓_∞ 2	yd*
⊃Q L@3uQ)∀∃∃⊗
 TFEαd∧SH↓)(H[M∂2|84(→Yu (αP ∀T,ST(TT)~∀%)→
↓)(I'∧~∀&U∩N@"λ~$,=F↓∪@8(⊂	`T⊂$j)Qd∧F IS ACCEPTABLA~∃¬%⊗≡!⊃`⊂M
Z4DRλ¬D
∀xZ@K]9t∧M~λ⊂¬≥LX)tb¬y~DB∧→`λλ~TP6$
∀StλZU⊗#!↓2U3*λ(⊂#λ~Q1uε⊃ P4HXu∞A→3uQ$
∃⊂*84J⊂%⊃,¬`@ KILLED ARRAY IS AS BAD AS NO ARRAY
λ	CAIE TT1β	β⊂~∀&U∩NAα∧zAF(KZN@,88U≥~∀
$-∃0	'λ* "P∀`i⊂$Sα A
AREGT1:↓POP P,A		3FAIHU@%∀BAπ∀
Aα>- 4(ε="¬αntzQαεp∧∧
∃(≠∩
hβ"B)*Tu⊂⊂i"cbU∧@
;MKFLAR MKFXAR MKDTAR MKLSARMKAR⊃ SACONS ADIIS0 ADIMS ADIMS1

SUBTTL	MKDTAR/MKLSAR ROUTINE, ANDARRAYDIMS FUNCTIKF

MKFLAR:	SKIPA T,[QFLONUM]
MKFXAR8	MOVEI T1#
∪19+~~∀%∃%'(↓≠↔β$D~∀
∃5↔	)βHpλ&R%R¬αQe %n6Z∃αVαα¬α∩
"¬αε∃∩εeαβ9dz∧x4¬¬∀zHT:∩3sDλStHλY∃∀w!QS2s
84NB)YuQ2$
∃∀JZ⊂α.iX2q(
Zλ⊂(	I4uλ~TP6$qph

Su⊃(~∩3sKQ"B3
9λ∃∃¬F".qI→Q∀h	J30Q*$∪qHλH5⊂(
YtQ∀dλ⊃0r*(1λ∩)D∃∃β!)2p4F↔@∧h*Td⊂(⊗⊗βPX1J]	3AAKNDAIJS NAIE FOR ARRAY
	PUCH P,A	9A0≠≥%_@z|↓∂≥'e~AαA9β≠
~(∪!+π A Y($wαjX4bX@1r↓uyαU*NQα∀*RVJrαR"∃¬~εH4PJBVNBα~bAe"P%nd*εZ⊗~α≡⊗:≥J66⊗ α0∀XT∧|2λ~%∀
∀	∀r∧⊃Q LlzhTJ∧∃E∧5E¬⊃PPM
Z4B¬¬H⊂K\HX∃4
4λ∀$%(Z5~∧xd¬≤
$	∀b∧!Q LlzhTJ¬EFhPα4ri~∪H⊂%E,J∀¬⊃"B4
Zr∩H
¬⊃q3J;3#"A→∀TVIT⊂+&%∀
#!!33uIi(∃⊗FE∧e∀)j⊂∩I`i) VFEεEβE⊂⊂⊂∀h"ah∀'P$g∃- lεB)`agS)]∧iRdh'⊃# DDNβSAR AH∂≥π∃$~∧∪A+'↓∀↓ Yβ∂~∀&lzR*λ⊃D∧∀h⊃PRα∧∧≥∀⊂	'CE	EX@π⊂Aα1

α~(@@A≥=!%≡~(∪⊃%→$A(HPαBRQ%Hh(&"db5αQe"RNε⊂B¬$4PJ*JN ↓"Q$hP4(Q(∀$LZ6βPLYzd,Jλ∃BD~⊃Q M=H⊂¬L∀_@λλ~Qh$λ4TP+_∩34d≠!"P(I34nA→3uQ)∀⊂k
λ∃!"B*
4r∩D
∀p*(q5α!↔tp
a∀⊂_P⊗H i#P∪jij⊂⊂ P i∀ lFEαe*fh⊃P V Q$fiXβE	LOAKTOPOPJ
	HRRZ T,ASAR(A			3OKAY FOR ARRAY @)<A¬
A⊃βλ~(∪πβ∪8A(Iβ⊃βλ∩$p
↓TλtM∀T	u-"	i∀`hαB(	*Tu⊂⊃ f)bCEfgUαAI C,(A)
λ	MOVE T,ASAR(C)
α	JFFO T,.+1
λ	HBRX∧AY¬%3)3@Q)(R$sA⊃¬&A'Lj
>1∧20≥∩λ~%∀
∀
EM∧QQ LdH λλE⊗q∃
8⊂3 ⊗**)`T∀!TnCE	MOT¬≥∩A⊂XQλR$∩wλA!β&@Zp@
αxd∧$LX7`hPα33j@'$P)_@
	T@ZA↓	2λhRε∩→Z3Pα33j@ ¬I B,(A)		;CONS U@ ↓→∪'λαα6→α$J6⊗:≤J0≤@Tc"A→3uQ)∀∃∃⊗
)∀FEαdgk"H**⊗ ∃*)`i
!P	
	JS@ T,F@1
_∞ 51Q M¬X∧r	$∀⊂i@dεS
	CAME R,D
λ	SOJA R,ADIM@&D~∀&lzP∀2(⊂EE⊃J"!↔pssJ4∃⊗4λT⊂πg FRONT OF LIST
	JRST XCONS
;BLTARRAY BLTAR1 BLTX@∪(αα∀eH→E@$⊂S∃λ→α)FEβE
SUBTTL	BLTARRAY FUNCTIH∂9∧
0∀λ⊃TI_3Q∀aQ@εE!∪* i)⊂lX
	EXC@⊂A∧Y∧%\:JV6∀b∃¬α≤
22⊗ ∧∧+(⊃R)I⊂4TH≠ εE∧T*id P,B
	PU@'!∀A
E↓2Nε3*5L4PJBVNDQαAH~$,<X¬β!∧fgk⊃dP iT∧ ⊃ααH4(→
%∃Rλ⊂¬VJ⊂λ∀CE!&*⊂i_]∧T*id%λ(⊂AREGE@(4⊂λ&6⎇2⊗%α
⊃J¬1D	$4!→T`:β"P* i`i
 i_@)
∪≠=(
*λ¬∃¬H4p4Eλ4LP%⊃ ¬$c∪α @∃∨	#∪≡Yl~∀&$b0∀(⊂
,AS ≥∃=λ4!∀∧U∃8¬⊂⊂αLTALS
∀∪Q→≥
AQ(Yβ&9∃∨∧~(∩A*∃~Qα
e"ε %!Q%hHα.q)@ ∧ OF IFN↓∃∨¬#%_4λM"2:∃¬!2εMt2&  Q!∩∧U*:B∧∀JI∪λhαB5	IQ(∃
E⊂4kHi3β"A∀⊂TTjD⊂S∃	@X@
	LOCKI
∪!U'⊃)¬↓1:J,	L4λLRJNQ∧∩2RεeP%nε∃∩εeααK∃∧4h⊃	@dε'T↓≠β)π @ZA→='
A→='

∃	→)1∪Ppλ&BαZ4DRλk¬αe*:C,@,c"A~αg&'PβK@∩~(∪∃%'PA!>∧
( (αC"H&* f⊗α:∪+9→∨π↔$~∀&lzP∀2(⊂%E⊂4@→⊂T@
	Tπ ∩¬¬Z∀D
D
∀xZB∧
*(∃J¬K~∧*αβ(⊂IJ⊂4TH≠(7#!∧fgk⊃dP i V∀ JF@
	JRST BLTARD~∀4T∩2Rεe→`⊂MYiD`8p¬dFBα	MOVEI A0Qβ$bαH4(~zD
¬8(∀"¬9zU∀≤Tλ∃∃∀≠∀¬%MλTαj∧)JD
∃(≠∩
hβ"B)Yβk"dH i_@,(A)
	JRST BLTAR1~∀DX ↔βLX
5α
p*5β#&∨α]`iiUd¬E WIHA∪_A¬∨) A≥+≠∃%∪ε~(∩A!∨A∀A X4⊂]%∧gεt∪¬_∞M↓E↓$4!→TmQ2(λ∃λ∧ iT@
	JSP T,ARYSIZ∩∩m%β)+I_
Mαα9∃D(∩3D
pπi"∀P 	N↓)(~∀%≠⊂≡Z*αI2R h ⊂LYzd,Jλ⊂¬λ4LP%⊃ ¬∧e∀h⊂",ARQSIX∧⊂∀λLBJJJ~↓"A⊃Q L≤→Xr¬%EJ HKαs3jHαP'*Sa"`∩↓≠A<zJαM∧"&∞R
"⊗⊂4PIα*J≥!↓:J,	N⊂$KYα
@∀
DD(⊂	fPf""iλ'c⊂*∩ ¬ ARRAYS
λ	MOVE TT1$∩∀∪!%%∨&Q @$HI`≥∀YXTl∀X∧@⊂∃βHEDHER ARRAP∩A≥!&A	∪∂∂HA∨$AM≠β→→∃$~∧]Iαgλh∪β	λααRQ2%"NεID
IJ¬Hh(&"∃∩`∩¬%JE%≤~ 
λ~LP"!Q@∧d)∪⊂)⊗*∃)`i∧⊂i_TFB∧a&*λ)⊗⊗@1(TT)		;TRAL¬'
HA)↓
↓	β)α4⊂λ&N\JB<T¬¬αHα".i_H⊃∩(IIu⊂∀idj!R⊂ i)⊂lP ∪IX@&AQ⊃⊗9∧"0~∧9λT9c"B$	TTu∧¬TQ0&8#"B*I⊃Q(
E⊂4kJ;α".i_H⊂k([∀λ⊂**P6#!!(⊂
)∪'⊂#⊗D@]`S ∧ AN ODD L¬+≠¬∃$A∂↓⊂~R∀J⊗L4PI↓αN\JB∧∀PI↓↓αDb2jMαiE"R"H$%nl
.∃α≥*J∃αd
NQαD
2~↑⎇∩⊃α&~αjεJxh):J,	N∃hM"J:9∧!2εMu∩∩Q.
→:>
λh*
:∀*¬IhJαB>BRαA1:∀*¬H4PJRJ:rα⊃2ε~rJ∩PHIn6V≥!αB⊗∀26J5∧	αNB,~&ε1∧2&bVαα~>HhP%α*∃~Qα>∀
~aDHIeαJ,
∩Rε∀b⊗Mαr⊃α>∀
JJεM_4(εU∩NQα∀"R~&@h(4(hQmmlLRNAα"bεJf≤Jh$)[Yeαε≤~⊗BR~α¬αN
⊃α&9∧	mαJ-"VJ:~αR"∃¬αJ>∩,~Qα>2αR"∃∧"&6⊗u~&>~_h)mmZα&)α2aαε:"αR"∃¬~&j∃∧z→αRD)α∩ε$	α&9¬:>J∩~α&)α%!84)[YeαN
2⊗Mα"αε:⊃¬⊃8$(hRεJf≤Jih&Db1αQd
NεID	$$%]∩⊗RV∀qαε∩%∩⊗NM∧J9α&pαJ!α|1αP4PJR2:*αQ2ε~rJ∩Q\
M:>∀λ4(¬∧RJNQ∧
JfNS($%nα:∧,≤_→B∧D→hDdLht∧4⎇$
$,JH∀∀dZ4∧tD	t∀
*(∃Hh!→D$∩
JBe]JJ4$LUEE%%8~"D
≠QPPLYzdu~
J@hP→Yu4*λeD¬%J8∃∩D∃⊃PT
+~5S≠!_∀|TT
E"d~+∃≥SA⊃∪L|dλUDMED∧2∧λ~2¬¬)xE,≥D	t2∧→IB∧$→XTu≤→ye_h!→∀m,Dλbd¬JJ4
∩λ∃⊂hP→*%≥"λ~%M≥&1PPh(~%M≥&G M$IhR¬"H~2u≥↓Q J∧**5"∧~+∃≥SqQ$
∃~;#3P→Yu4
λJBd0⊃↔4u,XZ$L~λ~%∀
∀¬R¬≤≠(U~∧X≠∩∧∀Tε∩bβ%Dβ h)_dr∧H(ddu85D4H_reXQ!∃$dhT¬"d~5d$∩8~2t≥↓Q J∧J9α¬%EF⊂hUQ⊃∪\,hD∧|2	_dr∧H(ddu85D4H_phTK∧@M$IhR¬"H~2t%↓Q$%BA∀∧e≤∧
E"c⊃Q LU*:BαEE⊃PPh(~%M≥&W LlzhTJ∧eIE∀≥A⊃∪L
::Tl*λ∀¬∀,_JD∀HQPPMIId*¬EH∃~u(J@hP∀	%∃≥Dλ∃∃M;&`hP→Yu4,∀λbd|*J4MR6∃3∪β↓↔4L2	iu"bλ→b∧|(~%∀
⊃Q$
∃~;#;P→Yu4∀
E"c∃λbHH↔8∀ddzt∧4⎇$
2l-

$-≥9→tr∧~*$
M1Q Le9∧¬%"ER⊂HK4	∧
4→hr¬%yt∧,@⊃31)j∀kuizQβ"A→TTu∧¬∃
#! ↓GspP(i6λ∪h(1V∧$	pP1Kεh∀Q
HR6λ
(∃⊃Vε!"C"IxP1R+πB2U)Z⊃(⊂*&+⊂t	z∩B"'_R6λ
Zλ∪pH~TP6$λ1U⊃*$⊂(⊂IJ⊂4TH≠+λ⊃*HkC"IxP1Vε↔B33jh(∃β
J∀p4Eλ4LP%⊃,h⊂K∀⊂st→3Qhλ→∪λ∃	λ(⊂U(9q5∀aQ@2∀II(∃βεFLLε↓".u*84H∩)j⊃4TJZ∃∀h
9∪u3λD⊂Q(
9∃5	xQC"A→3uQ)∀⊃∪h*∀r6AQSpP(knB)→⊃⊂Hλ∃∃β"A~q5⊗DλKβ"A~∃0r	$∀H~∀⊃3HA".u*8(
P*
⊃3Q∧
∪h⊂iz⊗(∪	~u∀c!!1∀⊂Dλ+∃β!!4srHt⊃∪h(1VaQB4∪j	H∀↓QA"THJ⊃R6π!4rr*λ(∀C

Ss∩*1.qR+∧∃4λλ∀∀Q0(J⊂0SλT⊂1UλZH⊂(λ)∃⊂4J(6+λλZα!WεB)"*#⊗→≥∧d∀)-⊂)∀)∀DNP!,P⊃*h&$P`j$g⊃P f&λ()'f∩iP"g∃)$biCEe*Sh"P)!h'h∩∧]P#∪i⊂&`Pi'P!R i⊂#∃g!b$Se)FEαd&)-λ"⊗∀)
FE∧d∀)-⊂*∃⊗∀"∀CEd&∀-⊂*ε
**∀FB∧a`dQP*⊗∀⊂i_TFB∧e))U⊂)"*⊃,→εEαd))-λ!⊗∀*∃∀FE∧Sgk"dH V∀ T→ TFB∧h*iR%⊂(⊗⊂eg!FB∧d&)⊗⊂!⊗∀⊃∀BE∧T*id%λ(⊗,!Se)FEαfgk"H!⊗()∪d$iFB∧h*iR%⊂(⊗⊂eg!FB∧fgk⊃fP V∀)'f$TFE∧e∀)j⊂)⊃*#,→βEβ≥a&*∪XP!&∃'YP!∪*'ZεBεEεE∞c$f&λ'jj(∃j⊂#$S"P$gλ i→ H#)'fH i) VP$g⊂⊂i_WεBεE!&∃'X]∧U&'"P∃⊗ iW⊃$f∃`TW)"*
`iW'P U`iK#ah∧Nc$f"TV⊂)"Pb* a∪"iV⊂∪a i)⊂liV⊂∀Vbl(∀P! bβE∧P%∀)j⊂!∪* f)CE∧bl⊂d⊂ iV i→⊂FE∧h∃id%⊂∀⊗,'c∪'eDDNf`ebH)ja"H* i#Qj⊂ i∀ lP$TP!$g⊂i,P'Uj(*jβE$c'λ$j)V⊗FE∧h∃id%⊂∀⊗$c'T!bDDNc'i!QP'jjλ!ji)⊃g*⊂!∃c#"i⊂$c⊂⊂g,FEαfgk"RP V∀⊂i→ TCE∧e)T⊂*⊗ T,idmαD]cbU⊂'*fP"i⊂'Q⊂" j⊂P+gi⊃)P$gλ**εEαfgk"H"⊗**αD]fgU"P$g∃'P"εB∧d))⊗⊂*⊗*∃)`i∀⊂i→ TCE∧d)∪$P*⊗
~~~_∧D]iQj⊂*hλ!,j"H('dg∃"i⊂∀⊂,j"P∂P→[↔λ!$j)JFE∧fSk"P*∃⊗**)Pi∀ iTFE∧Pb"&P⊃⊗#↔#∀'iT*∃∀FE∧K!`f&λ)dgjαD]j)⊂g)c"T⊂" j⊂P*'P⊃$f"FB∧P↔&∪ibP_M__εEαe)h⊂⊃⊗#'i⊂b[∧DNh¬PDATE FILE OBJECT TARIABLES
]		;END OF IFN ITS
IFN D20,[
	PUSHJ P,IFORCE		;FORCE OUT CURRENT BUFFER, IF ANY
	MOVEI A,(AR2A)
	JSP T,ARYSIZ		;GET NUMBER OF DATA WORDS IN TT
	HRRZ 2,TTSAR(AR2A)
	HRLI 2,440000		;SET UP BYTE POINTER (BYTE = 36. BITS)
	MOVN 3,TT		;NEGATIVE OF NUMBER OF BYTES
	MOVE D,TT
	MOVE TT,TTSAR(AR1)
	HRRZ 1,F.JFN(TT)	;GET JFN FOR FILE
	ADD@~A⊂Y]
A∨&Q)PR~∀∪M∨+(∩$∩w)%¬≥'
HA	β)∧A)≡A→∪→
~(∪')i∧@dXL∩∩w
1+'⊂A
%+λA→%∨~A¬εO&~(∪∃' ↓(Y
∨Iπ
l∩$w#!	¬)
A
%→
A∨	∃π(↓)β%∪¬¬→&4∃:α∩m⊂~⊃∧z→α&4qα⊃Ih*&~rα⊃EAeX4(&lzR⊗%∧	1"ε∪∩¬$4PJ*NA¬!2εJM~&h⊃↔4<-D	e,l(Z"∧|dλD
$∀
t⎇∀J4∧LRλJ@hP→Yu4

AE%%8~"D
&(∩Hh!→T⎇4Tλbe%J8∃∩D~&∩Hh!→T⎇4Tλ"d2h9∧rλe⊂K\xZB∧≤λ→dt,D	e,l(Z"∧4z$∧J|tλdLDQQ Le9∧∧∩c&qPPMIIr∧∩E	u-"ε¬BHH↔84|u:J%,≥Dλ∀r∧zZB∧Lj:E∃,:I∀|pQ!∀l⎇hT∧
dh%dD,EλbHK8xU"∧_HE∀-:4∧|2λ*T44Z$∧D,_HU∩∧)It≤XQ($e$v7 LlzhR∧"F∃∧
H⊃↔4<-Dλ%M$T
∧|LjHU∩∧→jD`4⊂U1Hh4C"A_1⊃∩$λ"!↔p1⊃
(4th	xH⊃R**uλ⊃J(1(∃iZQλ∩)d⊂U1Hh4C"A→∀S∩$λ
∃¬⊃".p(H∀Q4j4∪qH	h6∃λλH5⊂(
ytQλ
Ih∃∀H→TqQ*!"B4i94∪H
%J⊂%⊃".qhZλ⊂sjYUλ∪hd⊃TQ(T⊂U1Hh4H∃izQ∀h	→H⊂C!!(∩TJ:λ⊂S
Imα"'9st∀eD∪SsHT	(⊃it⊃u5

5λ∃		4h⊂JXQQ4AQ@0p)→⊃(∀EE∃∃α!⊃.r1D
Q0u∧	qH⊃λ~⊂(⊃I~α)P$S⊂!*c⊃"i⊗εB∧P&gU dP)∀**∀BD]P*∀ g)c⊃i⊂''H&gi"H*$ gλ'"abTi`i,CEijP⊂**⊗∀ TDB]i`∃BTRACT FREE WORDS IN BUFFER FROM COUNT OF REMAINING DATA
↓MOVNS R
	ADDM R2(A)		;ADJUST BUFFER FREE COUNT FOR WORDS TRANSFERRED
	MOVNS R
	ADDB R,1(A)		;ADJUST BYTE POINTER, GET FINAL ADDRESS
	BLT D,(R)
	JUMPL TT,BLTXIT		9DIDN'T COMPLETELY FILD THIS LAST BUFFER, SO EXIT
BLTO4:	XCT B			;OUTPUT THIS BUFFER
	 CAIA
	  HALT			9? THE GUTPUT LMST SOIEHOU
	MOVE D,FB.BFL(F)
	ADDM D,F.FPOS(F)	9UPDATE FILEPOS
↓JUMPG TT,BLTM3		;GO ARMUND AGAIN IF MORE DATA LEFT
]		;END OF IFN D10
	JRST BLTXIT
;BLTI1 BLTI4 BLTI3 BLTI5 BLTI4∧A¬→Q∩p~∀4∀~∀w→∪→_A¬%%β2↓∪∀AβHeαA
I∨~A
%→
A∪8Aβ$b8~∀~∃	→)∩bh∪)→≥∀A)(Y¬&]
∪0Wβ&]I	(WβL]∨¬α-β&]∂
 ∩w
%→&X↓%β	Qβ¬→LXA∨¬¬%%β3LXA&[∃1!&A	βλ~∀$A∃%'PA¬→)¬→4~∀%!+'⊃(A Y1%
→∨⊗$∩w≠β-
A'+I
A'∨U%π
A%&Aβ≤↓∪≥!+PA¬∪≥¬%2A
%→
~∃%
≤A∪Q&Wλd@Y6~∀%≠∨-$AαXQ¬$eαR4∀∪∃'@A(Yβ	MOVE F,TTSAR(AR1)
	SKIPN R,FB.CNT(F)	;GET NUMBER OF DATA WORDS IJ INPUT BUFFER
	 JRST BLTI4		;FONE, GO DO DIRECT INPUT
	CAILE R,(TT)	↓;TRANSFER NO MORE WORDS THAN
	 MOVEI R,(TT)↓	; THE TARGET ARRAY GILL HOLD
	SUBI TT,(R)		;ADJUST COUNT FOR NUMBER OF WORDS TRALSFERRAD
	MOVN D,R
	ADDM D,FB.CNT(B)	;ADJUST BYTE COUNT IN FILE OBJEAP
	IBP FB.BP(F)		;@YTE POINTER DO PGINT TO FIRST BYTE WE WANT
	MOVE D →
λ]¬ Q_R~∧∪!%→∩A⊂XQλR$∩wβ	⊃%β'&↓∨A
%%'(A]≠%λA=A∪≥A+(A	¬)α~∀%⊃%%∩↓λXQ(αH4(ε"∩%α ¬BE∩⊃⊃∪M
λH∃$*λ∧∪i→β*"iλ$g"'H* i#Qh∧ ARRAY
	SUBI R,1		;FOR CORRECT UPDATIL¬εXAHA∪&@DA)∨≡↓↓∪∞~(∪β		4A$Y
λY¬ Q_R∩αwU!↓β)∀A
∪→∀A¬3)∀A!∂∪9)β$~(∪¬→(↓λXZbαBQ$∧KZRJεu~~εI∧"εB∧hP&*Vmα2¬ααJBd∀JK∧Mα.q+	5λ∩(d∃q(λyuλ⊃)Iu1r∧λ⊂5⊂!Q@∧fgUα@
Aλ1
∧]¬YαQR4⊂∪β	⊃~AλY_Y~B⎇→"→$hP&N⊗%R5α~∩r
Z
D1$4()E$KG!PDLi`∧M∀k⊗aQ@∧fgU ¬ B1)(~∀%≠↔-
↓λY)($∩w∂PAπ∨+9(A∂↓↓3)L~∀&lzP∀(⊂
*#αE∧R)&$P∃⊗~~~
__∧DNd¬AKE BYTE PGINTER (BYTE = 3&. BITS)
	.CALL SIOT		;ANPUT MORA DATA
	 .LOSE 1400
∀∪M+∧A∧1λ∩∧∪¬		5¬⊃2→:5α>M"%!$%N-α∩εR*αR"∃∧2& $T
∧⎇≤~I∀lpQ!∀U,ZλR∧"H)E%D~A⊂K\*YUα∧_d¬<*λyu"∧→IB¬$λT∧$
H⊃PUh⊃↔4,@Qλ∪hd⊂1SD	5∀c!	1S@λFL⊗aQ@∧d)∀-⊂_@,F.JFN(F)		8π∂λαα*
9∧20≥∩λi∀d(β"B)YuQ2$εK
∃¬⊃ ¬∧d∀&$P→~~~400		;MAKE @¬3)
↓!∨&u"⊗I↓D∩f@$TπRβ≠e`λλ$j)TCE	MOT¬≤@F1)(~∀%'∪≤∩$∩w&uαV@"	Yu∀(⊃⊂*H εE∧Pb"⊂*∃⊗→DDNβH
∨(↓β		∩∧BB4PJε∩∩h∧¬%"β⊃KHj⊂πiT⊃∀@]jT ∧ATE T@⊃
↓
∪→
↓!∨'∪Q∪⊂≡aQ LLzhR∧λε→FBα	SETX¬∧@@⊂¬C_Hα.qIJ4r⊂∩*g%@ FROM↓βεO&4⊂λ&*,jB*λ@λ&*,$U∧@]e∃d¬P IF WE GKT ALL @)!
A	βQα~*hH%n⊗t!α>→∧J~9α ε#@ ¬.DB]bg"λ'c⊂$Q'⊂$j∀Ub→0
IFN @λb`12~∧∪5_∞@4Y∀∧
@λ∧ i TFEαe)`⊂∃⊗ i,Tdh
		8π∂ ∧∧`*30Q*$⊂πc⊂⊃ j @ Tπ⊂≡J%→α&9¬"P (αB3)@hεE T,TTSAR(ARIαR4PJ6 =hT∧2eJJ4
∩λ~#
Hβ"B)Yβk"P⊂α,F.CHAN(F)	0↔∂∃(Aπ⊃¬_
:⊗bα0∃,X(U∩∧iz"∧∀→HPhPα3∀i∧⊂KF@F@
	TLO B0Q∪≤@@XR$KZ≤|βP	j∀*a`∀↓β⊂→↓∧J0∩α	→e≥∀U0jI3sC!∧fgk⊃P V#⊂α.HED(@R∩m∂(A¬	∩J-~Mαxd∧*1QQ*$⊂∧"`Q ¬R BLOCK
묬→)$ft&≤Z&Bd
"c∩λ⊂
!⊃,¬ad⊃a` NUH¬HA∨A]_∞J∩~α& 2λ¬∩	~h⊂U(hβ"`∩
λ∧∩A∃I' ⊃α∀bR%THI`≤@SsQ$¬(⊃sd
Q01∧
pπfbH&gi"CE	CAIH	
AHXQ)(αH$%@8It`$βj⊂*∀ g ∪FER MOR@
A<zJ%1Q J∧β3uHY(⊂	,(TT)		; @)!β⊂→ααI∧*¬H~$<-Dλ∃∃∀≠∀∧`(αbb)CE	SU@¬∩A%!1"IHH%nε$RVNQ∧~0≥3P
 LπA<zJ%4	d,,HX@hPα33j@'⊂",Rλ
(L
∩$TλBc∩λ⊂
!⊃,¬`b∩*i`∀↓∞ =YjB∧Ldλ%,4hZ"∧DX_D-⊂β"B)Yβk"P⊃⊗_T JD@	;GEPλA¬e)∃αα	tL@U⊃4D
⊂πP$SαPU@(αα∃,hhU⊂@"B2
)⊂∧P"_T")
∪⊃I%∩Aλαa"Q⊃⊃∪@8StS$λS∃⊂∀'`	NTER~∀%β		∩↓(X@"α 
!⊃,¬`∃PDATE PO@∪≥Q$A∪9)≡A$
J<X¬⊂⊂i) lCE	ADDM @$αaE"¬HH%nVαλD
⊃(∩)@(*`∀↓
V~4*Iα
M"∃αB|J0∃$X∧C!∧a&*λ ∧ _Zβ	"Q∧HI`≥∀P3J8Q0@⊂⊃ j @ TO @)¬%≡⊗ ∧∧
∃(≠⊂hPα2U)Z⊂ε"P∃*⊂BLTXAT	8π!∪PA∪A]
A∂∨PAβ≥∨U∂⊂A	¬)α4T∩2R⊗W MD8¬⊂⊂α	∩∩m∂(A5_∞J∃∧"ε@$⊃Q J∧**5"∧)JDK@∧D]R*f`⊂∩c⊂ gλ ¬RROR @∨π
+%%⊂~∀&lzP∀(⊃⊗⊃!↔!#∪∀#∀FBα	ADDM D,F,¬~B⎇→"2⊃↔5-∧H~D*∧i→D*¬	z4M⊂∧ggβE	JRSP BLTI3

BLTI0`(Lj6@4TλBd⊂α".hdπF@'Q%+πλαα¬αR-~Qα~⎇⊃α,h@λ	@c⊂#$S @
	XOR D,[<STAP@≡@@Y∪≡]∃_∞→Y≠b& 2∧∧πk!"B+λuλ⊃↓Q@∧P$⊂d∧T			;@→∨M
A)∨Qβ⊃2Jα&→αtzQα⊗t!α>→∧2& $QQ%hH↔8T`(α⊂'cλ$c'⊃_XεEαd))-λ!PFI,@∨!)(B∩m∂(A∃≠A
U→π)∪=_	α~⎇⊃α~&d(4(~Ydd|99⊂hPα2U)Z⊃(⊂eHS∃∩'↓ ¬∧fSi"dP⊂V⊂ iTBE∧R!`f&⊃⊂_V∀⊂TDD]P`f&⊂∃ibi⊃dπF FUNC@)%_∞ 0Q!PT∀JI∪CP→Yu (2(⊂%E⊂4DH∃!"B*
4r∩D
	∪PiYβ)FEαfgk"RP!⊗∀⊂i_TFB∧h*iR%⊂ ⊗⊗!cg)CE	MOT¬β∩AλY#
∪1→β%%¬2~∀∪A+'⊃∀↓ Y1π=→&~∀%∪⊂≡D4,@qH$λR3∪λ~TP6$≠".q)Jq(⊃i~Q(∩)Uαf'iT`cbP⊃i)'iβE
;.@%∃β%%βd@]%∧i∧@]IαiαX
J⊗	!↓:J,	U↓:α(T∩¬j$,h∀α`*Q0%d¬TQ0&X(THX,HJ(03∪j8(⊃q*Jtλ⊃hZ∀t∧λ1u∀jλh⊃q*Jtλ ¬JQ0,$¬TQ0&_!"C!*u0U
Iα*THX4TP+∀⊃U3H:∩3sAQA"KJ(04TH≠.B"'~∩∩4dλsq⊃$λsu3λD∀u⊂)hλ∪5(9λ∩3*
SuQ)X3Uβ!!2Tt∧
∃∪
yP0raQ@3⊂&⊗Lm
&fk∀%jQ04J(6#"A_3rQ$
THX,""'9sQ(λ~QkλλH3⊃5λT∃∩⊃$λ4TP+⊃"B3)zQ2(λE
∀
!QB01λI(⊃¬

#"A→∀S∩$λ
∃¬⊃"B2
*VH⊂%E⊃
#!!4u0I∀∃!QB4∃*9λ⊃V
¬∃β"EjQ0-λ'B4∃*9∩H∀¬H4Q1hZβ"B)YuQ(
E⊂4p*%⊂*"!↔qq5∧
p4C!!5∪∪Id∃⊂*5QR3H4kRIxB.q	yIuλλ→∪∪ud	SpH	zH⊃R)H(⊂4J(6#"A∀∩TTjDTQ(⊗⊂#"A≠⊂uλ¬jQ0-H⊃".r*:u1(
z⊂(⊃**StC!!2TTjDTQ(⊗⊂C"EjQ0-λ↔B3∪h9r#"A~∃4r∧
⊂#!!2∪∀K$∃⊂*84J⊂%⊃"B2
*VH⊂%F*⊃
!QKTQ(⊗∞B3)zTr(λe3⊂*+5∀β!%TQ0&WB2∀J+H⊂Kλ~V5∀ε∃⊃J#!!0p2)d⊂K
λ∃#"B$	TTu∧¬TQ0&q"B0)xRSHλeTQ(⊗#"KJ(0-NA~3S∪h9r#"A~∪tλλk∀∃↓QKTQ(⊗P.B*z⊂(⊗h(1λ⊂**P6(
K4⊃(¬T
TQ(~TP6$≠#"B)YuQ3$λ+*λE#"B*
4rλλk∀∃↓QB3∪h9r#"A→TTu∧¬TQ0&A"C"EjQ0-g!2∪∀K$∃∃λ~V5∀ε∃⊃J#!!6∪tI∀∃∃¬

#"A_3Q⊂iY(∃∃¬H4o⊃h:∂C"A→U34	d∃∃¬jQ0-AQKTQ(⊗p.B*
4rλ
¬⊂kTHX,C"A~∃4r∧
∀Mf↓".jH~TP6$
r3∪∧λtQ0*H(⊂(λjQ4r∧
p4C!!4∃4i∧∀%λ
#"A_3pRId⊃EV#"B*YS∪pi9#"B)YuQ(
E
⊃V
¬#"B)*Tuλ∧T04TH≠#"KJ(0,NA→∪pri⊃"B2
*VH⊂*&+
∀¬⊃".p*&(∩⊂*4∃∩⊃$	s⊃λλ~TP6$
p4C!!33uHY(⊂4F(+
⊂%⊃".p*&P(∩λ~h∃∩λT∪Q5dλ4TP+∀∀p4AQB4∃*9∩H∀¬ETQ0&1".piz⊗(∪iHλ⊂4J(6(⊃λ~⊂(∩)j∪h∪HZh⊂4J(6#"A∀∩TTjDTQ(→∪tq!QB33jh2(⊂EH1⊃0(A".sIzh∩3JH4K0iIpPQ*$∃∩⊃$
∃sh
84Tc!!16⊂i∧⊂K⊂*84J⊂*&P*#!!33uHY(⊂Kλ~p4Jλ~L*"'~u∪tHT∪Q5dλssUλYU∀h	xH⊂4h~C"B*I∪Q(λ%⊂4oλk
qSπa"B(λ_⊃∩(λ%#"A→3uQ)T⊂4L%F*⊂J!⊃.r3J:⊂3∪∧λstTHXuλ∀h~H∩3Dλ4TP+⊃"B3)zQ(⊂EJ∃∀p*%⊂4LH∃#"B)	∪∪td
∃∀p*%⊂4LH∃#"B)YuQ3$λK∃∃
84J⊂*&*".j:∪tQ$	Q5hλ9sU⊃)j∀h∪hd∃∃∀h~C"B)YuQ2$λ+
⊂*&*#"A→3uQ$λK⊃piYsβ"A~∃4r	$∀∪(Y4,#!!2U3*λ(⊂+¬jQ03	zq#"A→3uQ)∀⊂K⊃λX∀p4AQB2∀II(⊂K¬λ*#"A→3uQ$λK⊃piYsβ"A→3uQ)∀⊂+
λ~LP*!QB4∃*9∩H∀¬I134&⊃"B2JY4⊃(λ∃TQ(→∪tq!QB2∀II(⊂4F∃
⊂*!QB53IIprr!QB4∪j∧⊃V∀¬Jβ"B)
S∩(
E,"
E#"B(_⊃λ∀¬Jβ"B)*Tuλ
	t⊂2AQC"KJ(03∪j8.B4jXH∀
&l
l!QB53IIprr!QB4∪j∧⊃V∀¬Jβ"B*
4r∩DλV∀	I4u⊗↓QB4∃*9∩H∀¬IPssJ1"B3)zQ2(λ%∀+THX4TP+⊃"B4
Zr∩H
¬⊗⊂sijc"B(h0h⊗e*Q04J(6(∪	zuλ7!QC"QhZ∀t∞A→Ttλ
J∪∃ih0rc!!3⊂,&%∀1hZ∀tβ!!4∪t∧
⊂#!!33uHY(⊃λx5∀tε⊃"B2
)λ⊃
j∃4Q!QB03i((∃λx5∀tε↓"B2
)∩(⊃¬E⊂*#!!4∪t∧
⊂#!(q5∀jε∞B2J:λ∃λk∪UL!↔tQ5
ZSThλ*⊃3Q¬XT∪tHt∩1H
:⊂0q$	4h⊂*h23⊂()⊃#"A~∪⊂q$λ,!QB(∃	KH⊃¬V#"B)Ipru	z∪t∩AQB4∃*9λ∀λA"P1jJt⊂nA→3uQ)T∃∃λx33U↓QB01λD∃∃λ
PT∪j(b".i→Tu4HT∃∩⊂*D⊂T⊃)h0T	zQh∂D¬∃∃
!QB4u($∃∃λ
PT⊃)hβ"B)*34⊃hT∃∃λz∀t⊂f⊃.s5*:λ∀Q)Ipp5λUλ∪tDλq5λ	YtQ(λ9tQ+AQB33jh(⊂+
HT⊃3HA".p)JQ01∀∪rc!!33uHT∃∃¬λ*#"A~∪t∩D
β"AQQq5
:.B)*34⊃$
∃⊃H→∀q#!!4u0D
∃⊂
hT∪tHq"B2J*uλ⊃I≠#"AQKTQ(⊗.B3)zQ(⊂%E∀
"!↔tQ3)zQ4hλ~TP6$λV(∀
Z∃∩3Ht⊂1⊃
(4th	xC"B*
4r∩D
∀p*(q5α!↔h⊃4J)tH∀Iz5∩3HT∩3H
84KλλZ⊂kC!!2U3*λ(⊂+
	t2AQB33jh(∃λ~p4Jλ∃"".hx5λ∀h~C"B*I∪Q(
E⊂4kI)pW⊂*5QR3↓↔s14jD∪Su∧λQ(⊃I→⊃(∪j$∩SpDλ4TP+⊃"B(	*Tuλ¬jQ0,(⊃"B3)zQ2(λ%⊂1⊃(_β"H∧∧⊗⊂u

Sc"A→3uQ)T⊂K⊂*84J⊂%⊃"B3)zQ(⊂EKu∃⊃λX1↔#!!33uJ9(∃
J∀o⊂igC"B*H∪Q(
E;AYNV1 AYNV5 AYNV4 AYNV3 AYNV2 AYNV0 AYNVER AYNVE1 2DIMS 2DIMS1 2DIMF 2DIMF1 "DIMD 2DIMD1 2DIMZ 2DIMZ1

SUBTTL	MULTI-DIMENSIONAL ARRAY ACCESS ROUTINES

;;; THESE ARE LIKE THE FXNV ROUTINAS; THEY TAKE A FIXNUM
;;; FROM AN ARGUMENT AC, CHECK ITS TYPE, AND PUT ITS VALUE
;;; IN R. THIS VALUE @∪&↓β⊃π-λA)<A≥'U%
A∪PA∪&A]∪!"LqαR"(h)mmZα:εb"α∩&6,rN&>rαRε2,)9↓α%!α&M¬~R⊗B∧*⊃αεdz::
I∧*¬hX5$⎇!Q#[[4	t2∧I→T,U9→tu~	→b¬$λT∧
∃(≠∩∧DX_D-∩d∧∧
Ljf∩∧HI∃$Lyh∀de⊃Q#[[4
¬-%4
DD
λ_D%∀Z:2∧|d
DD
λ8∃∩∧→d∧dM8~"ph!Q"αα
8eE¬)qPT
→jcP→
%∃R
%BE%E⊃PPLYzd,j
%DdM8~ hP_→tT

JBd
→jch!Q$
LjfSPM99∃∧
λ∃D
∪(⊃PT
→jc#P∀	T⎇4Y∀∧
bλ~#
HQ!∀U∃:D∧
LjfhPQ(∃Luf7 M≤9~∧
∧∃H0hT≠→e3∪!∀∧l⎇hY∩∧
Eλ"HK9HT5"	λ∀d2	xb∧∩	X∃J∧(T∧t|e[$-∀qQ$
LjfβPLYzd,J
%BD
⊃Q Le9∧¬∩bZ8T<dxqPPLYzd*¬%J5"E%⊃PPMIIdr¬%He@h!∀∧U∃:D∧
LjhU⊂H↔9D⎇≤T	∀2∧izB∧
λi∃DuYQPPM99∃∧b
%BD
⊃⊃∪\mZ:B∧tzD∧∀*	hT<
I~d*`Q!∩∧≤→YB¬∩E
E"H⊃↔2∧hD∧m-:D∧∀*λ(Td⎇t	d-EDλDLlYj4L|aQ Jαλ8∀LλQ!∩ααλ→tT

JBbEE⊃⊂K](ZE-∀d
Dz∧8→Dd-%D∧∃,Z	∀t:
	tLuHZ"∧Ld
E h!~4\Mλ∀∧"e;:4MD)~B¬d~*$
J
:T∃≤:)∃¬"λ[∧≤,XJ2∧∀zYd%~≠KUhh(≠∀u4Z' J∧Yzd,JλEE]≤≠λ$M"Id|rXi∃DuYT∧
∃(≠∩¬≥X*4≥∀~
B
eQQ M¬Z9α¬αHAPPLYzd,J
%BE%E⊃PT
→jd+!→∧e∃$λBbk∃
"HH↔:t*∧ZZ5"∧(_4Z¬Z∧¬$DT
∧|LjHU∩¬It¬$DT	%≥α
JB`h!_4LTλBbD*:α¬%EE⊂KZ
y∧L≤∧	∃~¬yλU∀*
I∧*∧~8∃∩¬	y∀u%1Q J¬9y$
¬%H∃LuhV⊂hP→
%∃RλEBE∩⊃Q M≥X$¬%"H~4
∩λE⊂HK:8∃4*
JB∧
4λ∀r∧_*4|eZHR∧|hj4-"λj$|j
I∧*∧~8∃⊂h!_UD≤∧λBbE¬⊃⊂KZ¬
4Lt8T∧%-)→d:¬IλR∧-*)u∩¬IλR∧
*(∃J∧X≠∩∧lzhRHh!≠∧≥"λ≠∀u58kHK:;∀t≤
)ttM(T¬<MI∧¬$DT	∀u$Z*%-¬D	D|≤9zU"∧XX4Di~4hh!~∧⎇α
¬D h!_∀$"
JBd
8~"D"⊃⊃∪]∀Z:D⎇∀T
DD*
JB¬∧y→e$-$
U≤Lht¬$DQQ LU*:B∧
→jcH↔4αE∧z:4L∀K∀∧t-u∀∧
≤~%B∧hD¬%∃∀λ∀<→aPPh%j4,*ε_DLm1⊃⊂K]IλRβ
XI∀l,j9∀|t→D∧≤8Z5~¬)zU$LhZ2∧
(T∧Lr	Iu:∧9z$(h!Q#∀$→Z3PL*:α¬"H≠∀u3⊃Q LmYD¬∩b
JBHh!→%≥α
ED
Ljf hS(I∀m≠↔!∀$I∀¬∩bλe⊂hP→*%≥"λ~%L<ZAPPh&(DLlg!∀U≥∧
Bd
→jcλh!→U,b
%BE%E⊃PPL*:α¬"H≠∀u3!Q#∀$→XcP__D$J
%BD2⊃Q LU*:B∧k_t- Q!PTLid∧$∀iH∀:\;λdduK0hS(I∀l#!→%≥α
ED
Ljf⊂hP→ZTb¬%E¬%"⊃Q LU:∧¬"d≠→e3⊂Q&$$LXF∪@L_HDJ¬%E∧2HQ!∀U∃:D∧%_xU h+Q⊂K\YhB∧|d	∀4rλH$4d_u4≥DiH∀8h!Q$L4dλED4H_reXQ&$$L[' LU:∧¬"d≠→e3λQ!∀m,D
"bEJE⊂hP→*5α¬EH∃Luf!PS∀I→US!_∀$$∀
"bDe⊃PPL**5"∧≠+∀<-AQ%hH↔8Ttα	xb∧Lid∧%DiH∀8h c[8I∀l2ε8DLM4ε4$L[∧β$$→Xbβ$I→U~βXI∀l2∧XDLm1Q hS572¬$λZ$*∧~(R∧4zZ"¬≤Zλ∃∀
HTβ$→P$λ3Qε(∩3#$
Su5	→β"`∪ FOR SPAED.
0⊗VlA
∨$↓)⊃
A=)⊃%LXA/⊃%∞!α
∩∃αHZ5~∧9yTl\βKλ
X(⊂λ)⊃c"a TO @'¬)∀Q'3@7h⊂tλ_q+@⊂λ+bP"S!`∂DE T@⊃
↓β%%βdA)3!∀A∪≤AQ⊃∃αd*~QαD
22	xb∧∪αC"G]]DXαiP
EXPRE@'M∪↔8hQ`≠[1⊗⊂L4≠	e,jDλdd|βQ3!QL¬P≠≠	2↓DOUBLE, C@∨≠A→  hQemlK_&∩V∧b⊗`4SY`≠Zλ	D,
8→e$e∃D∧L2λ¬∩	~h∪U)XQ0@⊂∩iP'ελ g⊂ T) lP⊃d∧EMEL¬(A∪LA∨AM∪5
~(rvv@I=≤A⊃¬→
/∨I	&@1∧∩VQα<)α∩≥∧r>Aα-~∃αRDJMα~~Q84Ph*&~rα∩b~d
≥0$K~∩&6SP&R2|	α	1⊂h*&~rα∩
~d
≥.∞D22ε≥`IN∩&l!h%α$b6¬α∩aH4)≤"&6→PH$$%ααR2≥∧⊃1D4S~∩&6≠P&*NααQ2εLrQDQ!∀m,D
"bEJA⊂hPα2Tj∧∃⊂+→ULC!!01⊃	∀⊃K

%!"B)→αjf⊂⊃⊗∀"*
FA∧e∀h⊂"ε⊂lg#→CE→b$Sl≥∧d∪)(
 T,B~∀%)→4AλXZb~(∪∃%'P@\VbαBQ$Q!⊂HL**5"β(I∀m≠⊃↔5~lXε∀
(αiadSβH
∀$∩∪∃%M(@e	%≠b∩m
∪ "u*5!α4b0≤@U3#!	1S@⊂⊃!#& QUa`_FLAG,	JRSDe↓β≠⊂b∩`.$zV
2*aα∞≡mα2ε@↓Q"`(αf)bBW+ f∃bBE$Q'⊂",⊃& cFαDe))U⊂→"$Sm_D]Q*h&"Vε@
.ELSE	.VALUE
¬

λIFN DXFLAG(		4DIMZ:	TLOA B,2
λIFNDBFLAG+CXFLAG,	4D@∪≠⊂t∩A$b6¬α⊂aH4)$"&&→PH$$¬ααR2≥∧⊃1D4S"∩&6≠P&*NααQ2εLrYDQ!∀m,D
"bEJA⊂hPα2Tj∧∃⊂+→ULC!!01⊃	∀⊃K

%!"B)→αjf⊂⊃⊗∀**
FA∧e∀h⊂*⊗⊂lg+→CE	ADDI F,(R)
	IMUL F,(TT)¬
	JSP T,AYNV4
α	JRST 3DIMH
	

IFN DXFLAG,		5DIIP∀t%)→∨ααα	1HhR&~9∧"
~29.∞b4bε≥0K*∩&6#P%αRdz¬α	c⊂4)V$J6→hHH$%↓¬"2=α⊂aD4),"&6MPJ*NA¬!2εFu1D4(LjV1α⊂a"RQHh(&*≥↓αQ∩
J:YHhP&ε∩$Iα→1E⊃$4(LJ6V1∧11"R H4(→*5α¬EH∃Lud1PPL_HDJ∧eE¬∩HQ!∀L@53λλe
∃∃¬⊃ B2J:λ∃λ≠3UM↓Q@01λI(⊃K¬
J#"A→353∧λK
∃
E#"B)*tλ∃¬H63UFQ"B2J*uλhI36β!$λλ∪Iz∀Sc! ↓GqR3	H4TP+∀⊃R3	H,λ⊃I→α ADA
∪→1αhA
%→→αj↓
∪→→∧dA
∪1→αfA→∪⊂∩H@$λR3∪λFh⊃R)I⊃
Hλi3∪⊗F∀⊃R3	KLh⊃I→α Z6 OPNCLR FILLA6 FILLA9 FILLA0 FIH	2λεr∧4→IE-Pβ"C!
u0U
Iα1R)I⊂4TH≠(⊂3HD⊂ε$iU i) VFAεE⊃$f& T) l]αD@]iUa)⊂→βE	SKMP	(AλY→&~(∩A¬%M(A¬→Qβ%%βd~∀&lzP∀2(⊂eE⊂J#! εILLA0:	PUS@⊂A@Yα4PJBVNDQαAH~$,<X¬α!↔qq5∧
p4@⊂∪βF ARRAP∩~(∪⊃2eQα↓H~4
∩λ⊂
!Q@∧j&∪α@
AλαbεMi)t%p4kHi3
p*5β)"*
`iW'PαA~∀$A∃%'PA¬∪→1+4$KZ≤dzB∧∀→IB∧Tx λ	@i⊂#$S ¬ OR READTABLE OR O@¬β%%¬2~(LRNAα ¬D
∃~9∃@! .qhZα⊂ ∪IX@
A∨_Aβ%%¬2A&p∧∧0HαB4hZ⊗H∃
Eα".jJλ⊂dS&⊂!"H*ibbλ!'i IH
π∀*6⊗:$
1α→hD-@Q!∃$dβS@⊂⊃⊗ iW∀lεE∧H%))jλ!$f&⊂Y
FIH	2λε∪@!2U3*λαP!V⊃$f& M∧@]c∩d∧@_A1_∞ =∧λd`:H⊂	VQl(⊂ T) liCE	HLRZ B0Qε@$hP&"Jdiα	2¬"RNε⊂¬∧
Hβ"B)
TVHλT∧ ⊃ε$~∀&≤z**λeE∧⎇λ→ hPα2U)Z⊃(⊂eHR3∪λ⊗α@
	HLRZ @∧X@"~H4(→
%∀jλ λ
∃∀p*%⊂*#!∧d ∩RX∧AεX!
$Q!∃≤\αQ(λe∀∪tλ→@εE∧Pdπ@∃αααRQHi∀dd⊗⊃P@!α@
FILLA4~	HRLM B,@TTSAR!αR4PJN <αQ(λe∀∪tλ→@εE#∩d∧@→αβ)`⊂Lλ∧TIT⊂K⊂
J∀p4Eλ*#"A~pπe"H ε,POPAJ
	ADDI @Xb4⊂λ&J⎇!α2EP!⊃,¬`∩OT, NOT @→' p
αN,)α
⊗dzP_h!→T`:β"dP⊃⊗_DDNβH+→Q∪!2L*Iα~⎇⊃αε2,j⊗ 5D
4MTQQ LU*:B∧∀→IDc"C! εILLA20∀∪Q→≥≤A⊂Yβ&]→0Wβ&9
_~∃%
≤A		
→β∞αZ≥DiH∀:@α2TJ:α⊂#$S&"_FBα.ELSE	 .VAH	+
4⊂λ&6⎇2⊗%α⊂¬BD
⊃⊃∪@8R3∪∧	⊂πghλ εOR↓
+→→]_∞J⊃∧
JJεM_4*~Lb2¬Mβ!∀U,X∧⊃$λhε#$S& [εBα	HLRX∧AαX!
$Q!∀E∃+$∧5α⊂λC)
∪≠=(
,∀
"bEJ@
!Q@∧j&∪αN D1β&y
`|⊂∀λLRNAαα@λi⊃QL+↓α@
	JSP @(αb~bh¬L!Q@∧bl⊂βH @)PY$4PJ6 =hYR¬∩H
E%≤~ 
λ¬ εE∧Te`
E F,POPAJ~∀%β⊂≡(⊂λ
J	⊃R)I⊂,c!↓αA$c∪α DBFLAG+CXFLAG,[
FIH	2 ε∪@!5∪∪I@⊂"⊗ TTεDB-β&@:≥@4*∩@∧@J∧**5"∧i→DeS⊃Q$%BQ∀α`*P3∃(Q ¬∧fShεE F,D
FIH	2 ε3@!2U3*λαP!V⊃$f&"
α		;FIH	1∧b0≤@tλ⊃I@i⊂"'Ua&"P⊂dεD CFILLD6:	ADDI DT,1¬
	MKVEM D$@TTSAR(B)~∀%≠↔-$Aλ@1⊂h(&N|R¬αR b~&2d	d4*hH%n⊗t!α>→∧J~9α$∩~2ε8Zεb~d
≤4(hR&~9∧"b~292l4T2&"K&∪@MIIdr∧EH∃~TK↓PPJ¬jdeXQPPM
Z4B∧i
αe%AQ M¬X9α∧5λ¬D0h(i∀de&7 LUYZ∧*∧5HdL@⊂ε-≠αD]c$S&⊂&'Sh⊂#'T⊂"*h∪"h⊂ T) liCE	HLRZ A,(C)
	HRRZ C,(C)
	JSP T,DXNF1
∪≠=)αA(1)(~∀%≠↔-
↓)(HZβ	"
BαH4*.λJ6>Z,iαI2¬"RNε∩B	$Q)4λL_HDJ¬JACλh)8⊂LlzhTj∧eH¬%%8~"D∩⊃Q$\λα01λI(⊃∃¬F εE%Ref∧b∪ek"fH)⊗ *∃)`i∧⊂∀@
KIKL	AD@@∩AQ(Xd~(∪≠∨-∃~A(Y↓))'βHQ∧R~(∪β		$A)(XD~∀&lzP∀3(⊃¬H∃∃∀h~J⊂B!Q@∧`b⊃$P"*_@
	MH∂-4A)(X4bQ
⊃@R~∧∪M≠'
@!
1 R4∀∩A∃I' A
%→→4f4⊂∪!∨A∩A
⊃@Xd
∀%∃%'(↓!∨!β(~∀4T2& $β⊗MG↓ ¬%`Bfgk"SP)⊗ ∃*)`i
!∀FE∩`@	ADDI @)PXb4TZ∧&6⎇2⊗%α2bαRR≤
I"	Hh ∀\⊃_∀$$α(∃
E#"I92sα(I3uQ)T∀K⊂
J∀p4EλJ#"I92sα(_⊃∩(
JC!↓33uHY(⊂
,@TTSAR(B)
λ∧∪β	⊃∩A)(αaD4!→TmQ3 ⊂⊃⊗  ∀TSAR(B)
∀∪M+¬∩AQ(Xf~(∪∪∨-∃∩AλXP~∀&U∩N@"λi∀dd↔↓P@+α@		;EH
λA=A&4qααb4bε≤4Ph ∀⎇	h4e∪αB3)Zβ"dP⊃⊗"'g⊂ εA		8π ⊗N,!α
@∀∧D`:⊃3@⊂∃'P!f⊃`i⊂ T) lFB∧ibj⊗αB @)PY$$KZNεI∧z→α~Lb∃αε∃∩εeαM→α&9∧λ4(→Yu (2(⊂EE⊂*#!↓4⊂
iR⊂(⊗ CE#$f∪ [⊂~	MH∂-$A⊃F⊃P@(R3∪λ↔,¬∧fSβP
~ααI2ααJE≤
%λ"HhαQR)I⊂.εA~pπe"H!⊗('T eεEαj O F,400000		8πβ-∨%λA"db`∃~λ(Td⎇qQ LLzhTJ∧∃E∧αHβ"QI→α A\pλ&2|~.$∧HI`≤Ld	DM≥D
%,U4	u-"βλ⊃
Z⊃∩0h~⊃(∩)j∪c"A_1⊃⊂∃*⊗**∀`i∀ JD@	; REMAIL¬∪≥∞↓⊂∩⊗l*2RM¬:&@$αλ⊂$λS∃β!↓235)I(⊃K¬λα⊂			8πβππ=+⊂~Q∧20≥∩λ∧r+λαP'cλ"f"fQdεTS
λ	ADDI F,(TT!
	ADDI B,-DQ@$hP&"JdIαRQbBRQ⊃Q LHI∩¬%EE∧"Hβ"B(&*⊂*∃⊗⊂#∀CEieRh  F		0↔
=$Aβ≤αα6∩⊃∧b⊗ 4zIα¬~β16
∧⊂4TH≠+λ⊗HZSh∀I∧⊂πcεBα	 HLLZS (F)↓;↓→β'λααP≤@tQ⊂∀eP#aH+`∂N≥(A6
∩-α~@λ
:∃0	$SβP'→d~∀&∧zAαAdλ4(~Ydd]	z∧P@"C"Hi3∪∃+≥∧h'T⊂(⊗ CE	WTA [CAL ∂(A→∪⊂∩D
DDM4	t)Q0u∧
p∧j$λ& ijλ⊗P#$S& i)⊂lPnFB∧e))U⊂#$f∪ XεEβ≥b$iU i) VP ISTA3 LISTAZ LISTA3 LISPA1LISDA2 DISTA5 LISTAXA→∪')_∞	αdJN~&bα2&N$!UαI~5$βd	DM≥K&R∧d~:ES2	ID$
D	∀d$~@∧ddJ:Dα∧β⊃⊂(x3H∪λJ∀S∀d	⊃⊃⊃
Jλ∪⊃λλβbg L@F@!⊃&~∀~)→∪'$
JJεKP4(→*5α¬J@	JqP0i1"B(∧∧⊂ε @12,,QLISTARRAQ
	HRLZI D,350∞nnβ8$%@9→dM∧α03∧
q0
*∩dεG FMR COUH
(~(∪β∨∃∀A(I→%' ∩¬_h ⊂M	zα¬αH!⊂HKαpsjYUλ∩)@$j$`S$i"bλ* ∂ 2L@λAβI∞A&2αBJ⊗α8Te Q!∀U≥∧
Bd5α∪UF!"S∩*:⊂,nA~∪tλ
¬⊂#"II4q⊂+πB4∃*9⊂¬⊂( i"cQhεE∧Sek"P∃⊗⊂ DBDXGET SAR BITS
∪)1_
*λ@λ~iRSh∧D]aPdε'T@¬∃αTz∩∧~*$
Hβ"B$	TTu∧	⊂4rI@a
	TLFE T,AS.FIL		8π⊂≡I∧2& $Tλ∃∃∀≠⊃P@J	*%≥α	I∃≤4→AP@L*:α¬"β⊂4K~r6B!↔qq5∧
p6Q$	qH⊂**P6#!↓2U3*	λ⊃⊗∪$i`∀A4ε∩%]~⊗@"λ9u,UD
D`4∀r6HT⊂∧c⊂'"⊂ T π NEGATIVE
∀∪
β⊂⊗≡*α⊃2_HIf =$	∀2β)hB∧
(pλλ$ccbT⊂*$ S⊂)dm⊃F@
	 MH∂-
↓Yλ~)→∪'$	P≠Pα33j@ ¬I C,(A)
λ	SETX¬∧Aααb⊂@ ¬∧j∪''⊂* iW)V∧¬∀∩↓∃%'λαα2&NαH∪(hαB3)Zβ"dP∃*⊂-DQ→$hP& %9λ2¬%EESλHα.qI_u0	"H'j`∀↓∪A∨⊃λA∂$↓ ~⊗ph &*,jB<TλBdd~:D⊂⊃↔2∧uYX$-∩	xb∧MHYU~¬It∧dM8APDd~:D!→¬∃∃αH⊂EH∃∃∀h~J⊂j!↔tk1+
λ⊂4J(4∧P&∩ij$g⊃P OOPλ
(MαVNαRαA2b≤z2L4Tb&NRλε#@!2∪∀K⊂!⊗ ∃*)`i
!PFEαh*`∪HJ P,X@π⊂≡~α1P@M9y$<*λ¬∃¬I⊂4uλ⊗ εE∧T'h%⊂∀⊗εEεB&$ij⊂XX
	TLNN T,AS.FX+AS.FL
IFN DBFLAG-∞b~d
≥ "	*%≥λ∪∩*:α"~FB↔"f)QDW ⊗ALUE
	S@↔∪AαAλYP∩∩`.5*22↑⎇∩⊃αε∃∩εeαdJN@$α3Qd	⊂πghβE&$iU [⊂~	 MOVEI B,(A)~∀%≠⊂≡Z,IαRQbiE"→Hh ⊂LYzd*¬J@λ
∃∀p*%⊂j#!∧j&'∪α D,AS<FHx∩∩`.≤z0∃~λ¬4∧λS∪sJYαP'iλ!$l'∃d¬0≡~(∩A*≥↓αQHiD9βc _		;FLOL¬+~A
≠⊂~M¬:&@$αλ∀i94λ∀HZα*`∩N
∩@↓∃' APY¬ "≤z0∃_⊃↔44Mα∪U)T⊂ssJ1"B4
Zp∧%⊂∀⊗!gg∀FA∧iSβJG F,LASTA2~∀%!∨!∀↓ X~∀4⊃→∪')_∞	@!~u$
λεrI@a⊂ i∀ h	 ILLEGAL % LISTARRAP∩Ct~∀&U∩NAαdJN@$≠!PDd~8dL@∞B5jH(⊂
c∩d∧E ARRAY IH	2,:ε!↓h∧∧dM8¬⊂**P6(+Q ¬∧e∀)j⊂&∩ij mβE
IFN DBFLAG-∞b~d
≥"lhR2&NαHC+P~ID`)H⊃⊗⊂iS"!
`iW!Vε@
DX$	 JRSPλA→%' ∩i(h ∀⊗	"$¬UP3
X εE∧Tedh H)⊗*εB&$ij⊃≠_
	 MH∂-$A∧XQ∧R∩%\"6@,)HR`8pπfh∪ hλ ARRAY LISDIL¬≥αdz0≥Q)4λLλ∧TI@dP ∀T,-1(F)
∃↔∧∪%∨(↓)(Xb$∩w'≥∃β↔2X↓⊃+⊂↑4⊂
.∧Lj6@4TλBd¬JJ4
∩λ5⊂hT8⊃∃≥0R(
J	#!%`DfSβP
AQ(Y↓%"NεID→$4)9∀\@→Yu (αdP*∃⊗⊂
!!R4TZ&.⊂LbN!ααJBcλβ"Ri→pε∧b∪dπVE TT →↓Q)'β$αB~Hβ"Qλ⊂∧ CX$	TLNL∧A$Y¬&P~∩⊂h"$$@λλl∩∧P∩)h⊂*!l!gSαX		;AH∂∧b⊗aα≤z0∃~λ¬r*Iλ⊂ri~λ⊂	"U*i'εB ∧B$	  BSP T →		π⊂≡~α1PD⊂I")*tλ∃¬Hv⊂si@)FE∧T*id%λ(∩!gSαS
	SKBG↓Y	∪M)j~(∪!∨!(A @0hRt$%\*0∀α	xb∧Lid∧$∀iH∀:\;λddqQ hT_ib∧%λiD:K1PTd~:EC+!~Ddtd
Bd
5hE@hαB(¬jP3∃(Q"B4
Zpλ⊃K
	⊃C!↓4rr*λ(⊃∃¬HA"S	~u⊗MG!(∪3j@ dP!∀ TFB∧f)dλ**⊗→βE%`DSek"P∀⊗ "*∀`i∀!JFA%`B`b"$H**⊗_CE%`DSek"P⊃⊗ "*∀`i∀!JFA%`B`b"$H**⊗→βE%`DSek"P⊃⊗ "*∀`i∀!JFA%`Bija$H**⊗_CE%`DSek"P∃*⊗ *∃)`i∧⊂TBE%Reb∧b∪ek"P∀⊗ "*∀`i∀!JFA%dRf∧`b⊃$P"*→
KIKD	DMKVE TT$@TTSARλC)¬
	JSP T,DXCONS
	PUSHJ P,COLS
	SKSE TT,(FXP!
	 BRST LISTZ6
	POPI FP⊃ 0b~∀∪A∨!∧A@X~∃:$∩w≥⊂A∨A%
≤A	a
→β∞4∀∩∧∪A∂)∨ ↓β%αYmβ%%βdA')+→
:
∀lsA9λA∨↓β%%βd@pj~(~∀vWA
β'1∨α@DT`∩∪
¬'→∨β⊂@~∀vlr@@@(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(TTTT(T~∀vlr@@@(T@Qε$Aπ∨!e%∪∂⊃P@bbndA≠β'Mβπ⊃-~⊗BR~α& 58I∃%-HT∧l2λHT9∪Ss	Xv(
E!"NngP⊂⊂∃
∃∃∃∃λ*$$iH$iP H)"`bgc&,H#$f"HP⊂ f∪⊂+i$U iP)⊃ibi+⊃b⊂P∃
∃∃∃∃
εE≥]NP⊂⊂∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
εEεEαh#a'U⊂#)fβEαE)Ua**&αd di⊗P)"f∪a`j$S#P&'Pb"i⊂
! if∪`b∀FB∧E≥]Nβ BUFFER PARAMETERS
LLDAT=5:750		;LENGTH OF LOADER#S ATOMTABLE ARRAY
ILDAT=5:1000		9AMOUNT TO INCREH≥PAβ)∨5)β¬→∀Aβ%%¬2~∃→1	')∧tzth`@∩∩w≤Jj*	xb∧dJ
U"≥4
5Ll)yB¬$_)D*∧~*$
J¬	∀`$K5hD⊃3U
)10	TCEαE≥N]P("∪⊂'c#∀bj)FB&" cQg_
=~0		;SAR FOR ATOMTABLE
αLDPRLS==:-1		;P@+I
Aπ→=↓¬%%→≥αdJNP4Tb∩$JJβkk%PA⊃,q⊃
D⊃S⊂(q"S⊃λ(q3O'WK(b!↔tp4DλStH	∃pπP!∃c#"iβE&"'∀ )V@=8∧h∩∩m→+≠¬∃$A∂↓%β∂!⊃_A'→=)&A	¬↔
A@A¬2A→β'	∨¬λA)5!∨%βI∪&~(~∀f@[Yα
ε≤b>ε⊃¬*N⊗M∧
9αε∃∩εeα|1αεR|jMαRzαεZ>L!α∞>u~Rε:$beα∞∀*εRεt84)MYYαR"*αNε6*αεRyZ2∧⎇hZ"∧h@∧`:β"a; IN PARTICUHAR, T@IS SAVES @≠,~  (αNfgP*$fQP 	N↓∪⊂~R-∩0∩∧iz"∧
IyTL~λ∧v)XSs∀eD∃∩∩*4∃⊂0IHαP$iH!i"`U ¬D
8εvvA%_
∞J,j⊗ 5H→DeJλJU∀Lhp¬$DT	D`81λ⊃J)s(⊃λ~α P$Sα THE @
β'0A¬∪→∀X	↓ααI∧(hαN`≥Nβ ARRAY HAS @∨≥∀A∨:*jV =(@λλYβ*),H!'i EACH↓β ∩yPDλ3U∀K∀λ∩*4⊃StD	R3∞aQL¬P≠lA)↓
↓_∞@$α⊃4J4⊂ε`lH!"P$Sα ANY ORDER. @)!
A
∨I≠β(A=Aβ
⊂Aβ)=≠ ∩ε∀b∀4'0∞gP"g*∀,P$iH iP#∪d∧@→∨]&t@~(p
mlK!0∪JT@F⊃21H	@'c⊗m⊃i'V⊂∃$"P*∩ ¬ LEFT HAL@A∨_A)"*α⊗ 5J+⊂hSαh
@;		( (8rP∃Mpε∩J∧9ye$→j2¬$α⊃(λ_⊃∀Q*:h∪qD
⊂∧"P∃αALUE
0⊗@YX$&∞,b1αxd¬$DTλ∃$|β(

;30SiJh∪sIK*+@⊂∃$ 	S Tπ⊂≡J]_4)@4εfa⊃0Q0h~4q(λ→⊂ε⊂+⊂d∧UE @π→→LAβ%
↓β¬∨-∀Aβ		I'&@\h
@:βC"G]]DDSαOTE THAT↓_∞@$α⊃4D	⊃1U∧	⊂3⊃DλR5∀dλ⊃0	aT$a"bλ$"`∩E
0⊗@Xπ0HLλ~d*∧β10)@$g#@ Lπ⊂~2Jα&→α∀JRM↓α@G∃αZ↔1 ARE X¬⊗Jzp4)@4ε`≥BYP∞ (%)⊃&~α∀MD	∃~¬JZ$`(αb⊂'Sα @∪↓)⊃
A¬)∨5∧JMαBα)u$0p
"Q∧¬∀vβY`_Hα1TI@d¬ @)!
A∂βI
ε≡*α≤@pε&"PβP	>⊂∧∧(αa`jTbP$jλ$iP(∪βINDEDλ
)Xπ3@1 ∧a,H)`∂ME L@∪'PA')%U∞@%X∧Q$
p∧$aR⊂ 	S PROTE@π ∩⊗ ¬b¬$α∩4aQL¬P≠l∩∪∪&↓αA"~-αNzαR"ε ∧¬-≤YHU≥~λYe%∀_Z2¬<βs@∪U⊂!"P∪`b"FBα;; 6$∪∪≤AQ⊃∃α<→αBJ⎇"⊗∞RLz0∩∧~*$
J¬
4,*λx5¬∀u∃`hSαh
@;	3 ≤@~iM 3!→∀`(α 	CAT@&AQ⊃∃ααK∃∧(∪qDλ5∪s'⊂_⊂≡O⊂)`→M@¬∨1`h ∪[4εb!⊗(λ∞@> @
∪19+⊂∃1β⊃↓`+βH⊃IIpπ ∃M, 3 => BIGL¬+~\4⊂	mmβ1∪~@L"5		4h⊂I~α⊂$iH**`∩NED ON IF TH@
AβQ_∞ *	~2∧;
;8εvA
=%≠β(↓≠A
¬'⊂⊃α4J2⊗MPh)mmXh!mmXαR"∃α∩2⊗]⊂α~εNdzε⊃α≤~",XTαD
4	t2β∃v3
@mlj$
4q4dλ(∪Q*@P#'i∪`j⊂#∪βR~∀lp
mαM"Mα~Lb⊗Mdλ∩∧P4s∧λR3⊃$λpπg)Rij)P∪c⊂ ∀WLεA",
∩-$
t`:Q∀k∧λSs∪	@hπED↓
dQ'3@7h⊂ ⊂∀bi$bTP ∂F FASL @L@∨π-&vA$B∃αR<yα"⊗"⊗Iααyu∀∀h⊂*(αP!'U$⊂ ∪IXBIT
0⊗@Xπ2¬$α⊃(λi4Tu∧λQ23HtλJQH~pε∃@" (FOR H@∪'Q_∞J&≤
1αJ,
N <h∧k∧∧JQP*9λ¬⊂$TFE≥MNβ ALSLεAβπ
!)⊂RAβ≥⊂A)"*αN⊗∞|r⊃αRD)α∞yjD,@U∀h	XH∪∪h`j$gSα @→	→_
5I∧J0⊂@ ¬≥MNβ THE LASP W@⊃∪
⊂Aβ'M⊂⊗
d*⊃αRD)α
&d)↓"¬¬2⊗JNLz1αhYT∧4H∩)@⊂)dl⊂αIT). 	∀vlp
α⊗~!α~
~1α
dz≤Zλ9t`*p∧ij∀P ∂F A WORD @∨↓_
&:*α~>Vα ($j⊂)⊃d∧@∨π¬)∪∨≤4⊂	mmX∧∧+5⊃4eD⊃Ss	Iuq1∧λT∧P'∩dεE PIECES OF FAS@_A⊃β!α\α↓αRλT∧dhzDB∧βqHλX0rβ!πnj`λH5⊂ ⊂∩h∧EM↓∪&A	∃!β≥	∃_
Qα|qαRλT¬∀,Ix4
$α3sD
⊗4⊃'P*$*TP# iS!&'aRiFE≥Nβ; ARE @∨↓(
εJLJ2:	HTdu∩↔λ⊂*$"H& ijλ!&'aRP 
AY HAVE @
<*IαRD
0∩∧βR3HQ ¬≥@;8εA	βQαA&$*6Md∧¬$DT
$,@⊂πa`U$gg TYPES AND↓)⊃
A→_∞J6
"Mαxd¬$DQQ#@7nh⊂*:pπadPh"b DATA↓∪ ∩⊗m→αεJ*αεMα4z22zz3@$β"Ng]FE≥Nβ;	TYP@
@@Jε
N|bVB∀hQ`≠[4	td(⊂0J9βb*j⊃P+gi⊃⊂*'P⊂α@
A→=β	λαp4)@4ε`≥CE_ 6βX&Bf∧)↓D~(Td|8~D∀HQPC[50∧l@Q(∃i@i"⊗⊂∃$"P)∩c`λT↓⊃β→↓_∞→ααy∧L≤αλ∩*4∀Q3	@a`j P&"U@ I(
\ααε@"	It Q'3@7h⊂
$SbP ∀HE @→∨¬λA>42N⊗Q∧JMαRzα∀(⊂1λHαb⊂*∪β THE RIGHT @⊃β1\@~(p
mlhQ`≠[1~EM∧Tε M≥λX4LAQ#@7nh⊂$
pπi"λ* ∂ BE @→∨¬	⊗⊃bαP≤Dβtq$
R1r
D⊂∧ f⊃⊂!gg∃ dg)H* λE IH
	`A∨A¬_λ (αN`≥Nβ ATOM  ⊃⊃=!⊗~αYDeJ	xb¬%~λR¬∧βP3(U(⊂
$⊃P b"∀ ¬S@&↓_∞→ααI∧*¬h→E,*λ8Tdb	x`hSαh
@; W@⊃∪
⊂A&~αR=αα(U∧d_8R¬$α⊃(
)1r∃∧	⊂3⊃D	qH∃	λαP&'Pb"b Tπ⊂≡J ¬bαDα1H	@'FE≥Nβ; @-¬→+
A
⊂∩DλUDM8¬∀eD⊂πg"H$iP*∪β BE @π%βQλ@9Hh ∪[51PC[51∃%MλTβ_M9X∃≤D_)D*∧8→D`HαN`≥Nβ SIMIH	β$↓)≡A%JB*∧¬⊂
(W+↔
P"d!Qh*⊂*∩ j⊂*∩ ¬ INSP	%+
)∪∨≤αα&Mα|r∃αxaPC[74¬$DT
4-∀_Z2∧|dλ4dβλ∃*Yth∃i	0r	X4(⊂HTλTs(~r⊃1∧∧⊃StD
∃0	$Q$a`j∩g`∞
9;; PURPOSES. AT PRESENT THESE UUOS ARE: CALL, BCALL _A9ββ→_0A≥∃π¬→_L@4⊂vvV4⊂vvV%)3!
h∪#+=)βλA¬)∨4hQ`≠[4	td(⊂gT ⊂"'H!"P&∪βADED W@OSE RIGHT HAL@Aπ=≥)β∪9&A)⊃∀A∪≥	∃0A∂↓β≤4SY`≠Zλ~D`9αP ↔HMSE AD@RESS IS TO BEPLACE T@E RIGHT HALF OF TH@
A<zJ⊂4SY`≠Z	It$XAbhαNfg⊃"NngDj,h⊃P~DhUej"bλ&$ijβE→P≠≠ A @'∃%∪~α6→α<zJαM¬∩⊗BJ-~⊗*RLr≥αεp∧¬~LXε∀
(4tr)Yβ⊂ ∀O BE CMH
'	I+π)⊂~∀`-β32∧∃∀
DD(∪∪h_⊃4KD
⊂⊃(λitS0*D⊃qH
I⊃4q$
stQ
4⊂4hλ(αij⊃l(& Re"b⊂⊂αY¬
;8εvA	!
Aβ→≥∨%∪)!~A+≤*⊃αRzαε.:%∩V∞Q¬""*λ5T-Eλ(U≥≤→ycR¬IλR∧dx_D-⊂Q'3KZλ[∧l→hU~∧)~E~βE`
eV	J(	xH⊂u(_q4ti~β"f,H)"`bλ+gi"∀V⊂ g⊃⊂"$iT j!d⊃iFE≥Nβ; ON T@EM: 
;8εv@@%)⊃
A¬)∨
A]⊃∨'
↓∪⊂~∩-Aα&M∧J9αRD)αJ&<BQααb→α≡2αR"∃¬:6J⊂hQ`≠[1→∃~¬λ¬4iλ1λ∪ij∪h⊂$
u⊂0i5Hβ"G]]P_Bj λE LOADER POPS AS MANI IP	≠LA∨
↓)⊃
AM)βπ⊗↓β&~∀lp
l&≥α⊗∞_i∀,"λ+∩¬$λT∧e,X(U∩∧→`λ
I⊃(∀I_p∃⊂∩ f#⊂∪c⊂"$⊃P+gi⊃∧@
;≠8ε∪β≥⊂A≠β↔∃&AαA1∪'(A=A)⊃∃~PA'<A)⊃βPA)↓
↓→β'(↓∪ ∩⊗jαB>B∧*⊂ ('73@10Q0iyαbaP∃$"P#∩i)j∩h∧EM LπA	!
A2M~Qmα$B&MαdJNQαM→αR",p4)@570M¬X9∧,"	ye$zλI∧*¬8H∀≤Zd↓PS[74β⊂MIλR∧dx_D-∩λ	u¬~	yd*∧α5⊃)T⊃qQD
⊂⊃(
:⊂0rdλ3Q

Spq(X∀h⊂*1"NngDc'iλ_V⊂"V!b`*λ*$ jλ* "P∩h∧EMFIRST PGPPED IS USED TG
9;;	EL@λA	!
A2M~Qαεu~Rεε ∧∧L2	i∀br¬
DDM4λ∀ddzz2∧4z ∧$⎇JHT HαNfgDh dT)P∞)
λ;;;3	THE TOP IP	~↓_∞ 2λ¬∩λT∀p
 PeP$iH"k f∃`j"bλ g" SPORED BACK
;;8ε∪∨≤ααR"∃¬"6Aα|1αRα*αNBε≤Y94SY`≠Z∧A∃$DT
$L<
@λ	λ3⊃H	ZH⊂
$⊃P+gi⊃⊂)`⊂EAIFIES THE LENGTH OF A¬
;8εv∪⊃U→⊗A	<A¬
A5β	
A	2A)β-∪∃∞AQ⊃β(A5β≥ %∧JR⊗6~α~J>h∧¬$DT
DmQ'3@7b3qD
⊂⊃(
:⊂0rg∀λ⊃∩	~h∩∃)@%P$iH* "gλ(*`∪HED BACK& 
λ;;; 5	UNUSED.
λ;;;4∧∪+≥U'λ\4⊂vvvh&RD)α2⊗5!α"εd1α>→¬""*λ¬sj(λ⊂r	Zαf" @@
@Zβ	α>IαiI04SY`≠X→→d$L8~DL@Qh∃	λαP ∪EAH∂: ∧∧d
8@λ
Yβi" LπA$B∃α∩
"¬mαL1↓5E`h ∪[51∃$DT
$L<α∃⊂∩ f#⊂∪βF @)!∪&A<zJ↓αr⊃αRD)αε∩%∩⊗NM∧z→↓λ¬rλ~β"Ng]Did∪βQLD↓
*∀
DD(⊂	dSα@∂2*α&@$YPλ	@dε @)!
A'$
≤Z¬
tDL9λ	~c"Ng]Dh'T("b Lπ
R↓β%
A5β	
AI'!
)∪-12A&u"0~¬IλR∧dXjB∧hAP@'njb*)1r∃∧	⊂3∃HZh∪qDλ(⊂gT ⊂ ∀O BE LMADED IN@)<A¬∪≥¬%24SY`≠X~
$l=(→R¬≥λ_4+Z	_bαk%D¬$DT
2l-α∀∀HZtr3i@⊂ iP∀& abQ⊂ 	NTLε~∀vlp&RD)α:⊗β
B¬≤β∪u∧	qH∃	λαP j∪βH)β	→∃↓E~⊗∃ααK∃∧(λλ@2)(@AQ⊃∃α|r∀4'0∞gDkgi⊃⊂)"fPdg$g⊃P 	S THE HAS@⊂A-2A∨_A)"*αM ,Xε∀
(αi`∪ILπ⊂→α
_4)@4ε`≥Ba`∂MPUP	λαα∃Jλ∧v	λ4r≥H* λIS IS USED BY THE L@∨β⊃$A$yαNε4(4)@4ε`≥Bca`⊂RLεA'∨5
A/∨I⊗P→hQ`≠[1Q#@7nb5~⊃(
A_pε'a⊂d∧S@34~∀`-β0∞d	pπ"P∃βH∂%λβYαRλT¬∀Ly
B∧D→Hb∧M4λ∀`$⊂∧g"⊃l⊂$g∃'P ∀HE TABL@
A→M3⊂⊗M∧J0⊂@ ¬≥@;8εA2M~A9ααI∧*∧α3Q	_p5⊃(D∃P3
X(∩4d
Q0
)∩bk"b⊂ ∞EGAP	λαα&→α∀JQ↓Qpπ∩∧|aQ#@7nh∃	λαP" U P ↔OR@λA∪L@bXA¬→⊃α"∩,D
D`4∃∩⊃$
R1r
D⊂∧ f⊃⊂ ∂F THE LAST
8εvvA]_∞J⊃∧b0≤HXB∧Lh¬∪dλR3P*+(⊂λ)∪ci fH)h aQTε  THIS ALLGWS LAP AH∂	
4⊂	mmXαR=α∀*~-$
D`4∀q3λXu⊃1∧	⊂πa`U$gg)H$g""T' f⊂∃'P&$Th⊂#dU$#jjβE_ 6lAπ%"& 4t
5LL)yE~∧h∧SiT⊃⊃∃¬@⊂εE≥Nβ;
;8εv∪)e!∃↓αq∀<-HHE%≥→QP@'nn`⊂∩c⊂ ∀HE FIRSPλA<zJ↓αM→↓5EbαR"⊗p∧¬$DT	D`81λ∪hhβ)bjλ$c⊂ Q ∧ED↓∪⊂~Rxh ∪[70¬$DT	D,5D	∧Dd	t2¬IλR¬<z(B∧lz:B¬∀X8Te$K∀∧d|_HT"∧→jD`4⊂R3H~T#"G]]P(∀'ci SP)`⊂ACE (THIS IS @⊃∨\A→
PA⊃β→_A%→=∞εRLz0∩∧~1P@'nn`⊂⊂aagfT& id⊃b⊂	.A∨)⊃∃%/∪'∀XA)⊃∀A¬∪%M(A/∨IλAπ∨9)β∪≥LA∪≤A	∪ ∩LhQ`≠[4ε∩`&+)βFT⊂(∀k→αa'fλ$g⊂)Tjgm"H!cb"Kα THE L@∨β⊃$A∂∃)&A	!
A-β1+
A∨_~∀`-β32¬$	~2¬≥→X$l@λ⊃TIyαP""∃⊂ 	F POS@'%↓→
X↓→⊗≡
"⊗MαM!α&→∧∩&@"∧@G∀⊂4hε∃αεE≥Nβ; @)!⊂→α"∩MααI∧*¬(Z5,ED
D`4∃∩⊃$λR13λD⊃qH
I⊃(∪λ~uλ∃i@i"⊂&∪βADED AS
8εvvAM!⊗∞L2&⊗⊃∧∩eα
M"M↓QpεbkαβI`≥λ∧A≥MNβ	3 = ENTIRA @/=%~∀lp
l%∩↓uαε~α~&⊗d!α>~eH4)Mβ30K
πPλ
)1r∃∧	⊂3⊃D	qS⊗!QL¬P≠≠	0 -EH
)∪I
A/∨IλXA¬U(A'/¬ A⊃β1)β&A=A-β1+
A¬∃
∨%
↓β		∪9∞\~∀lrvA)!'
A→∨ ⊗I∧2&⊗2%→α∞>∃∩⊗NB|r⊃αRzα6B∞|"∃1α→1αε$"J⊗N~aαε: α&*∩-@4)M[Yα~&,b∩Mα∀*NB⊗≥"&@4YK∩∧Ldλ∩∧d~∧∧L@Tq∀JXu∩3ieHλ∩(d⊂R5∧ε	N⊂∩iP @TεE≥Nβ; DHEJ ANMPHER WORD FOLLMP∂&X↓β⊂≡~$
&:&t9αRα*αRε2,)α>→¬""*λ∧v)XSsβ!πnn`⊂⊂iP'a∃ dg"Q⊂# ∩OM DDT AT ASSEMBL@
A$J6∃9∧J→αRD)αZ⊗α*4L@pπ⊂'∃d¬BER
0⊗@Xπ2∧|d
DD
D	DM≥∧¬∧
~λHU$4S2)@ ¬D FROE TH@
A≤*≤@pπ" FILE H@β	∃$A/∨IλR4SY`≠Z	~2¬$α⊃(
831(λ~h⊂
$⊂h∧ OF T@⊃
↓→∪' ↓
,→hr∧dβp1λXλ∩3JIhε⊂*∩ ¬N THIS
8εvvAYβ⊂∩V*α&MααZ4,"λ→d"∧HJB∧M4	d`:α⊂!gSαSULTED AT L@∨β⊂A)&l)`~¬I	∃~∧α4c!πnj`⊂⊃'i⊂)T ¬ED8A∪AQ⊃∃ααhU∃≤α3sD	U30HZTh⊂*(αP"$Q εE@%∃_
Q⊃¬"",dλD%"	~0hSαh
@; CGNSUH	)⊂X@~∀lp
l4SY`≠X~K∃∧(λ _α`i) VP)"c⊃i"g!QFA≥MNβ @∨≥∀A/∨%⊂A)∞A	
A2|
∩ε⊃bαV">≤)αJ&<BQα"b→α∞|rRε&u→αRα*αεByY∀`(α"dεB≥]U@∪c⊂ gλ j'fRaP!lSa'f↔λ$c⊂*∩ ¬ @'e≠¬∨_↓⊃β&A¬_Aβ%Iβ2A¬∩0≥∧X*EJB	~@hSαh
MH$iP#⊃h∧CHED; OTH@%/%'
A∨9
A&~α≥∀X~D,"βH∃	λαP ∩IGHT HAH	A=A)⊃∀~∀`-β0∞d
qtQ∧
⊂πP!⊃P OAD@λA%&A%A→βπ⊂A/β) A)"*αε∩∩∀*NMα|1αRλT¬≤,9yd HαNfgP+gi⊃⊂ ∂F THE ARRAY POANTER (I,¬∃9∧z→αRD)αRR≤
I%9αα& 2λ¬∩	~h⊂`VFA≥MNβ ACCESSES T@≡A¬%%β3LAπβ≤↓
¬α⎇α⊗96≤z∩,E`λ↓QLh
]CE→P≠≠	PYPE 11	UNUSED
0⊗Vl~∀`-YX&Rf∧)↓EHL
R>6$

2∃∧J:4S THE SAGN OF TH@
A¬%∂≥+~8~∀fVl@h∪)!
A
∨1→∨/∪9∞A)/<A/∨%⊃&Aβ%∀AαA	=+¬→
5!%π%'∪∨≤↓→+≠¬∃$\~∀lrv@J%)⊃
A→∨⊂∩2⎇:& 4t
E,@h∃sj(∀h⊂*((⊂ λ→q0∪λ[λ∪U)XQ0	.
0⊗@YY↓X&$B∃α~|b2>↑Lr≥α~⎇*Iα↑⎇∩∩Mα
∩∃α¬∧"VBH[α∧uYX$-∩aQ#@7nh
a~3U4hXλπεE∞β;; TH@
AβQ_∞ *λ¬∩
Zh⊂tHX5⊃1∧	4h⊂*:p∧cg⊃b⊂ @∀& abH$g⊂*∩ ¬ ATLπ⊂⊗R∩2∧Q'3@7h∪0)→U⊂2)Hαb⊂!⊗P*$"H&#`b⊃i⊂∀ TP g ARRAY) UCIL@∞Aπ=_
N⊗≥*R&Z(h!mmXα2>∞
"&.h72∧∃)yR¬$λ~B¬∧βr3JD⊃s@⊂∪βP@ER DATA ITEMS REFERRING TO
λ;;;THAT↓∪ ∩⊗hα≤dλDj¬9t∧+(⊂
$⊃P 	NDEX OF T@E AT@∨~αα& 2λ¬∩	~h⊃⊂()⊃+@↓QL¬P≠≠ SEE AH	'≡↓)3!L@jAβ9λ@bl0A/"L~!αεe~5αX→4*∧YjE∀LX∧h	→β⊂ ∀HE
;≠8εAβ)=≠!β¬1
P→hQ`≠[1Q#@7nb5~⊃(&113U
+(∩3Hic"Ng]P"+Sβ WORDS ≤AQ⊃∃αd*~QαD
22	xb¬$α⊃(λi4Tu∧
qtQ∧	4h∃	λαP j∪βH∪≥⊃0~∀lp
mα|1αRλT∧`(31(	XH⊂
$⊃P# ∃N@π!&|qα
⊗Lr≥α∩,2& 4X@∞d
⊂∧"P∀$cd*λ$ f#βE_ 6lA)↓βPA∨AQ⊃∃αα:T*H⊂
,T ¬ (TH@
A¬∩0≥∧X∧U∀∃3QλZH⊂d∩a`λ TLεAπ∀*εB∃¬""(β"Ng]P"g∃)(	 PMIND A.G∞ SUBR OR FSP¬$αI0∩αλ¬∩λT∀R1i
λ∩⊂)Hβ⊂'cλ* λE
λ;;;↓'π∨9λA/∨IλAβ&↓)⊃
A1_∞∞ε$J0≤@H∪qD
⊂⊃(λYβ*),H( ∂INT AS A
α;≠8εA%1_∞∞ε$

2∃¬α6&:$*IiααI∧*∧β∪p(D⊃qQJ85λ∪*Zuλ⊂HT⊂1⊃λXλ⊃∪d	5@⊂∃$"FE∞β;; LEFT HALF OF THE SECOL@λA∂=%Aπ=≥)β∪9&A)⊃∀Aβ%∂LA!%∨A%)20A∪≤~(p
mm∧J:R⊗∀rε "λ~$=~λ
$`:⊃0	*⊗P#'i∪`j⊗⊂⊂iP!h⊃a`	FIED IN T@⊃
↓_∞J&<J0∀AQ#K[4	D
αλ9t$(⊂V$
⊂∧"P⊂i#iP⊂βH∂
≥"JV∞α@D↓ ¬≥MNβ
;≠8ε∪)3A
@bh%→∨ε~(p
mm¬""*λ¬sj(α⊂$iH P ∩ELOCATABLE QPβ≥Q∪ ∩e¬~B,9_eLLhpλ
@d"`∩E T@≡~(p
mm∧~6 5I→e,*	It$α3Qe@⊂⊂$jλ$iP'∪βPλA∧*J6&%"⊗⊃ααIr∧dβphλ ¬LOW T@⊃
4⊂	mmX∧∧`:R1r)@⊂ ∂F THE ASSEMBLY. IF THE L@∨ε↓∪&A$yα¬αdz≤
I→t`$⊂∧$cR ¬R
8εvvAQ⊃β≤A¬_
eαβ_U"∧β∪p(Hαb⊂$S*#V⊂∃$"g FASLOAD @5∃%∨&A=+ Aβ1_A/∨I	&~∀lp
mα∩>@4T
DD
D	∧L<α⊃4jD⊂ε'aPh 	ON UP TLεA)⊃∀A→>≤
R&>p∧¬≥∧X9∀4LX@D↓ ¬≥MNβ FASLOAD↓↔¬→αRJ~-αxd¬$DT	∧L<λZ5"∧β∪ph~⊂∧ggλ ¬VER L@∨β⊃λA∪9)≡v~(p
mm¬""&M¬2ε %XT¬∧eX4∧`9β"P!⊃a`∂MES THE VALUE @∨↓
Bz(r∧
D
DD(⊃3HD⊂πcεBα;;;↓β''5↓→2X↓%⊗≡
∩∩2⊗α:2∧|d
DD(⊂	j⊂h"P'Q⊂*$"H& ∂CATION↓!∨&u"⊗HQ'3@7h⊂d⊃dε LOAD@∪≥≤A)∀j&*ε$*M)↓¬""&M¬"fB∃∧JMαhZd-∩λ¬4hXλ⊂V$	⊂4β!πnj`⊂⊂βH∂	
0A¬+λαα0≤@S⊗(λ,P&dQ iP↔⊃ if⊂⊂dπDE. λ
∧vβY`_h'33@15⊗4λT-"*
5⊃⊃
Jv3#!πnj`λi4Tu∧
stQ¬D∃∩⊃$
v30IYα⊂$gλ)hjgV ¬ COD@
\@↓∪A¬%(@h\βIuAD
DD εE≥Nβ; CYMBOL IS DEFINED T@≡A⊃	(A∪_A!∂'M∪¬→
↓(∞&R@∧¬$DTλ∀$¬(Z5~∧xd¬$DQQ#@7nh∃iZQλ∪hd⊂R3H~T(∀
)qtP)T∀pλ PbP a∪h¬T TLεA¬
↓→∨β	∃λAβ≥Q_
αε~α&@%1Q#@7nh∃H→α*bWλ⊂ 	F @¬∪(@PX	eUλaαRα*αP∀JXR∧M4λt`8PS⊃(D⊃PSiT∃∩⊃$λSs∪	@hπANG
0⊗@YYα↑≡∀!0∩∧)~Bβ"βJ⊂
'c⊂*∩ ¬ @/=%⊃α≤z2RεLr& 4t
DD(⊂	hUem"TH&b`g∀FA≥@;8εA%1_∞∞ε$)αRλT∧d1P
 HALF LπA$B∃αZbV∃α∃IαRλT∧d|_@λ	@c# ∪ET, ANDλ
)Xπ3@4⊂R5∧ελπ≠@ LIKEWISE FLπ$A$B∃αJL:"QαD
2	9ααP≤DX¬∩λZH∪tD	Su⊂∃$"FE∞β;; SYIBOL AC@)Uβ⊃2Jα≡⊗R~αBVQ∧J0∩∧HJB=~λ∧v)XSsλ
H0S⊃$	4h⊂$λU3PjI3sC!πnnh	XH⊃∩
(1(⊂iyβ"$j∩dπ@≥&hA
∪%M(XA	!β(A	!%
A%&AαA⊃	(A∂%)⊂Aα↓'3≠¬=_~)YY`~¬H_$d4
4,≤βsQ¬D∃∩⊃$
P3∃(T⊂πc⊂∃$"P&∩ih⊂+⊂i$`a∪ P⊃)Vda'f∀Q_ 
λ;;;THIRD, BIT 4 ≤l↓≠A$B∃α~M∩NAα¬*Rα∩%~f%ααyu∀αd
DD(⊃R**uβ"G]]P!SdεDITIH∂9∧z→α∞⎇*JN∃∧jVNQ∧∩∃αN
"&N~L*⊃9αL1αNuD¬$DY`¬$DT
5L@0Ss↓QL¬P≠lA∪&AA+ ⊃αLqαRλT¬≥LX)tb¬H_$d(∪sIK(∩1D
v30IYα)P$⊂iP @ L¬∨[9∪⊂⊂4SY`≠Zλh∀e,U`λλj4U∩λZS3tHUα⊂$cλ* λAT VALUE @∪&↓)⊃
A¬)∨5¬~f ,)yE~∧α5∀hYα#⊗εBα;;+THEN↓)⊃
AM3⊂⊗
|aα&M¬αV@"	ydeJ	_b∧∀~@β"sd	∃~∧βs@⊂
$g"$PβATING A
8εvv@	∂⊂∩x(∀b∩λ∧v)XSs
%@⊂εE≥Nβ;
;8εv∪)e!∃↓α⊂
A_5P3∧	53QhX0S⊃!QL¬P≠lAαA≤*J&⊗α4∧`8H⊂gT ∧S SIIILAR TO TH@∨'∀A¬∨$ααRfB*↓U!α∃*Qα↑M"!αiqP@'nj`⊂⊃'`LOTπ∪≥∞αα"εN@∧∧\-α+@⊂⊂dε @&51!∀*NN→yb∧M4λ4`9β)`∀RUCTED AND
λ∧vvVαα⊗@4→JT
⊃1↔λ* λIS IS USED FLπ$A$B∃αNzj≤IHT"α)ZTdq00IH4h@⊂∩dε A
λ∧vvVαα~&2*α0≤2	H∃α∧9xD*@Hλ∩(d∃∩⊃$	⊃1U∧	⊂3⊃D	qH∃	λαP& Th∧ GOR@ IS -1,
λ;;+THE VAHUE IS @)!%∨/≤ααεNεJqα&→∧JQα&~↓5I1¬""*λ¬P)J1(∩*4⊃3UλZQ1β!'nn`	→H⊂
$⊃P j'Sh a&⊃U⊂εE∞]]FE∞β;;	TYPE 15	END OF BINARY
0⊗@[Yα>:*αV =(@∧
r∩0i∧⊃14jD⊂Q(∧∃# iS∃Q⊂∀∪i⊂⊃¬⊃ if∃λ∀P$gλ)dl!∩h⊂∞
9;; THIS SHOULD BE TH@
A→¬' A	¬)αA<zJ↓αLqαRα*α~&2*qαε:JαJ⊗2|~εR→y`hSαh
MH!,j"TP EFT OVER AFTER ATYPE 10∞AβI
A&<r6J⊗ q↓αRDJMαNDzV"⊃∧∩∀4	Xπ3@4⊃Ss	Iuq1∧λ25∩λZH⊂V$λ3Q⊂∪βF FILA OR A @/=%A
U→_A∨_A5εOLX@~∀_wββ1	α~
~2>ε ∧∧d¬∪λh!Q#@7nh∩)J⊃0SH→λ⊂5*Ipε'`Q⊂)'jU$g"FB∧¬∃∪¬→∧`(LBJJ@$λ∩bD∃⊃⊂K]8¬0J$#"A→3uQ)∀⊂K∀(∀1⊃⊃↓Q@∧h*Td 
 P,MEBGEF~∀%∃%'(αα2>ε h($!Q$4
9It#!Q LU:∧¬%"Hjtd91PPLh⊗β∪6ABeh~4d|_APPM99∃∧(⊃P*9∀β"A∀∩TTjD⊃⊃⊂)JQ01⊃"B4
Zpλ∀¬HS∀α!↔qStDλ⊃0U(xr3Qd
∃0	(∪ibaFB∧h*iR⊂(⊗#⊗(∧DW∀bbP&⊃ gffCE	PUSH P,SP
10 λ∪'∃)∨
A1	⊗>5$%n4bε≥α4zIα∞∃*~Re∧!EAα%*6Aαlz∩¬αJz5α⊗|04(ε¬*N"	¬↓2~&c2
P4PJ6.Z*αQ2∩4r↑⊂$HI`≤$Xh∃,EDλdLDUYdLT
tm∀D¬Rα∩$!PPLYzd*¬JAD$QSUhA"".hH1P5)Jλ⊃P*91R)H+3P)X(⊃sj(λ ∧! ifλ∧¬
20$	SKIPA -L,∧m-¬L[_Lm∃1(VbαB~bAJ%↓↓α↓n⊗b$*0∃≤α3sD¬SQ∧λR3⊃$	P31%∀⊃P
f∪∨FE∧H!`fgλ*∩⊗fα6VBS-H& -∃1(FbαB~bAJ%↓↓α↓e↓α⎇⊃αεF,
1αRz↓)⎇↓∧J→α⊗M""-$λ4
≤UAPPJ∧	T⎇∀YT¬%"EYBc5h*2lbfhUE"6⊂
λk∀
(∧∧λ∞`∧
∩⊃3D
4q(∧∧QP4iDC"R(iH⊃F¬⊗c"A→3uQ$
∃⊗h~pr2$⊂∞.CE∧ieRh"P⊗S↔≠+)∀UXT#⊗(⊂P∧BP⊂⊂⊂∞hεE@%M∪↔9∧rV&
-⊃α:Vda|4(Jαεε6pαQ1⊗bqZZJ~YE"~E↓%$J↓↓↓↓X∧α∧⎇$λU
03λ
Ih
Od∧⊂1HλY5∩⊃*$⊂p4hUβ"B$∧∪3uHY(⊂
*⊗f↔∃αRS+⊃(BP⊃ $∩@@@p
↓α$B⊗ 2λ¬4hTλλD∧↓ W"!↔q3Q∧	qH∩(iH⊃∧F↓ ¬∧h∃i`%⊂∀⊗"&i⊃cεE∧T*id%λ(∩≠!∃'&fεB∧fgk⊃dP!ε∃)*b$βE	JSP T,SPACBIL¬λ~∀$@@@`↓αY2$22ε4HIf -Z:B∧∀→hB∧dHidJλiu∩¬(X5-∃9~d*∧h~4d|_I∀d_Q!∩ααε∧∧∩eiiu∀-AQ Jα∧∧αααλh∃≤e↓Q M¬Z9α¬αK9D%E⊗∃hh!~¬-≤∧
αdλQ!∃¬-9∧¬αe:_dMDh¬3+Q"B3)zSR(
EC"A→TTu∧∧∪t⊃)aαE&"⊗,,X]αfgk"SP V#⊂if(εB∧h*iR⊂(⊗ CE	HRRZM A,LDBSAR
	MOVE A,LDFLAM
	SETZM LDTEIP		8ππ%∨
⊗B
∀4∀w
β1→&A	!%∨+∂ ~∀_w		⊃∪'
A1	%)⊃LA→	1E"`∃αd"bFE⊂α2αb
	MαHK¬
d	D%E~⊂∞∧	⊃⊗∀*⊗c"C!πqP3	Jh∩3AQ@εE≥Nβ; COME HERA @)<@E	≡↓∪ ⊃α≤z6∃αlzJ*!Q hTHHDM≤TεB*
4r∩D
λε&"⊃b"*∧B]ibjλ*h⊂"⊃*⊂#&⊂c]⊂⊂⊂≡←⊂∪'P""∃≥PεEαh*adλ(⊗**αDYVXK⊗_⊂≡O⊂""*⊂''P∀lfa'S)]P_K⊗,⊂≡O⊂""*⊂)lfP'f)FB∧DDDNl⊂&`VP!"P⊗⊂'iλ)`i⊃'i⊂)Vda'fλ* a&⊃P i)⊂lBE∧BDD]P
)bbP∪"("j
FE∧iRdh'⊃⊗+(*T"DD]Tbj⊂*T⊂!`f∪⊂("i∩c(P#∪ ci]βE				;400000,,XXX => FO PURIFY @ACKERY
λ	 @)1_∞¬α2aQAAαεβH↔6#ββ∧∧¬E⊗⊗⊗∧π,π⊂)Ua)j XCTS FOR CAH@→&0~∀$HH%mαα
U"∧8→De~	→b¬≤X∧⊂*(5⊃(
λ1q4aQ@∧DDB]XX___⊂!∩h∧ MEAH
&A→β'2|
⊃α→jD`4⊂∧$iQcP∀"X⊂'g∪,TFEαP⊂$)∀-⊂#⊗∃αPU@%
→∨¬%0∩v`X0y!+∀)α2ε≥!y↓up∧¬≥0Tu∧
∃0	d∩)P g⊃∧¬∀∩$∩∩`-∧RJNR~α~>I∧~ε"J1P@!4⊂
iR⊂(⊗#αDX	AL¬2Aπ¬→→&A9≠ A∪5≠	∪¬)β→2↓'⊂⊗ε≤Bε
2(h &6⎇2∃α¬e2BVJ(H%l&
∩∃α∞|rN⊗⊃∧z0∃$t
DD(⊂λ*T ¬ LIST
	PUSHJ P$FIXP		;LAAVES VALUE IN TT IF @∪≥⊃λA→∪1:αYPhPα2U)Z⊃(⊂%I⊃⊗⊗ε εE∧Sek ∪I B,2⊂000  4⊂∪∪∨I~AX! R4TJ~9↓eαε≡→hrke)∧M≤XyT,@U⊗aQ@∧e*Sh#bP∃*⊂LDXQQ7	8π∪AA+%
A%&AαA9∂β)%(
*λi∃DuYP∧λ⊂πP$∩ibc@ HACKERY~∃%
∃αα8∀L@λε-FBα	H@%I_∞%αα@¬@ πTSGL∧∩αw→∪⊂~⊃¬:"-IλU∩∧α∩4hXh⊂	d⊂i a&⊃P⊂λFRLπ⊂∀Q!∀<-JH∀$∃α!↔mK@_P 
ONIP	>⊂∧∧83∪∀e⊃ ¬∧P∩))`∀X	-HhP&BIib¬"β
∀i@⊂¬SHR)
∃:$p∞⊗: ∧∧`8H∩1HT∀p2)Aα@
SA$	SKIPL .J@¬⊃%_$∩w&~α"&N,9α∞Vα*$,@U∪⊗$
tR5λU	RELEASE TMPC,		;FLUSH TEMP CHANNEL
↓UNLOCKI
↓POP FXP,TT
	MOVE F,SVPRLK		;CAN NOW USE SAVED PURE SEGMENTS FROM LAST TIIE
	SETZM S@-A%→⊗~(∪≠∨-∃~AYA%'∂→,~∃→	a#"jt%≠∨-π$AXb@```@4∀∪∪∨I~AX! R$KZN⊗Q∧22ε≥¬~εf&t9α↑∃=∩∃αα~.&::αR"∃∧B&N⊗8h(&6⎇26Mα% 4(ε¬*N")¬↓22∩DB",$KZN⊗Q¬*Aαb≥!αBε<*MαVα9∀th∩∩*81hβ!!33uHT⊂+∃EJ∃0	"CEh*Td!⊂(#$l(αDYf"Pk"`∪ T¬β→+∀A∪≤AQ(Aβ≤αα& 4HXT"∧i≠∧u,QQ LUYZ∧*∧∃ID%E	ε⊂HKαr1DλR6∪JY+λ∩*D∩4hλ→β⊂"iU$f`j⊃P ∂F PURE FREE STG
	CAIG TT,10		;IF 10 MR LESS _A5+⊃)∪A→2A¬d@b`dβ!0 (!∀∧e≤αλ∃
E,C!!0p2)H(⊂
*_∧D]Pd"aeH#'i⊂∀ `igS a&"S ¬SC
	 CAILE TT,EEMORY+9%_b[∃_
α"Hh(%↓∧RJNQ∧b∩f⊗∃⊂4(→Yu%≤∀λBblhhbkλQ!∃≥,$
E"eλj5≤M%λBHK8∧u(*∀P0jD⊃TSiT⊃4u	→05⊃$
⊂⊃(λ~4TQ)@*εE∧Pea%'λ"⊗↔⊗LD@	; SIZES OF EXISTINC PURE AREAS
	MOVE D$PRSGLK
LDXQQ2:	JUMPE D,LDXQQ3		9ALSO ACCOUNT FMR ANY P@+I
A'≥≠≥)L~∀β'U¬∩A	PY'∂M∪4α∩lAβ→%∃β	2A%_A)⊃∀A
%∃→∪'(4∀∪→	λAλY7M∂¬3PXY∂πM(QλSt~∀&U∩NQαd"bFE⊂h $
d"bFE≠P&*Vmα2∃ααJBddK¬Cλ↔9%,m∧	∀2∧zXU≥≥I→T
∧Tλ∀e∀X_EJ¬8~DM≤i_T HαB0(H⊂∧P*∃⊗)bcTdm⊗@1	;ROUN@ UP TO AN ANTEGRAL
∪β9	∩A	PY'∂5'⊗∩∩lA≥+≠	$A∨_A'∂5≥)&4∀∪≠∨Y
AλY!¬!∂%≤~∀ββ⊃	∩Aλ1'∂'%4Zb∩$p∞ε2≤yαJ>,r⊃αVαα"&N,9α
B⎇∩≤4(L
:∩¬∧!2N⊗<jN,4PJ6.Z*αI2⊂hP&ε∩ ∧∧"eJAPPM:X$J∧EF⊂hP~IDd(⊃β¬V!"B$	TTu∧λP4s	kα".h→βf`⊂LAIN IF FOT ENOUGH MEMH∂%24⊂∪≠∨Y∩Aλ1⊃¬!∨I∞∩αwU!∩ε$)α"&≤*≥α
∧zJ≥α∧
NAαb2>∞
"⊗⊃α≤*≡&⊗u"L4(L
6MαD∩B>J8h(&∞j≥α⊃dBαB⊗t 4(∀	%∃≥D	D%E~∩`hP→Yu (3(⊃¬I⊂T⊃)Hα∧D]Rc⊂'"UP λISEG BPORG TOH∞A→¬%∂
X4∃'αJ%⊃%→5$Aλ@1D!$4*≤	∀&∞⎇∩∃α⊃`h*N¬ J∞ =(V"∧"A⊃∪J∧ZZ5"¬(Z∃,-:D∧l⎇(T∧≤⎇(T∧4⎇$	∧M≤XqPPJ	*%≥"λh∃≤di↓⊂K\9yU∧d→→b∧Ld	d⎇αλYd⎇,y∧l,Yz%Hh)HEE
⊗g Le9∧¬∩bZ8T<dxq⊂K]XλD
$T
4,<XYe"¬H_$d-5APPLJ9α¬%EEU≤,yIt8H↔4∧tDλ∀$"λ
U∀*λ8T<LYjE~¬It∧5∀XYDM≥AQ LlzhR∧"K4EDj:
U∩bJ~$tIyUhh!→T⎇4Tλbe¬*8tdXQ)D%E~∪β@!33uHY(⊃β
:
⊂J!QB4q*KS(⊃h~u
∀E⊃"B1
λH⊃K~q1pK~λε⊗#Pij∀)
nBE∧Sek"dH#⊗∀)
FA∧`Q" 	 R,1¬
	SOJG↓)(Y→⊃1#"p4∀∪≠∨Y~A1!%'∂1⊗~∀∪)%'(A1	110D~∃*∩$s≥λ↓≠A∪→_@y!¬∂∪≥∞4b|U⊃%'∂≠∃→(~∀4⊃∪
≤↓λb`Tq!β∂∪9∞Zb|104*d"bFE;P4*"~(&6>4jMαR h(&B-~")ααb2∩bD
,$%]~⊗Qα-↓αb∞"α"ε∞ZαBε≡-→α↑&$B>VQ∧B&N⊗8h*t%\*:↓αL29α⊃↓)rB:&*≥i	x4(hQn~εdbMαRE∩>F≡@h(1n2%BbaE∧b∩bbCH4(4SZ~ε2e→α&8hP4*2%BbaEPJ6>Z*αRQ2Zj22∩
!-E1c
t%nLr&Qα
">&R∩2∃αzα*9∧J:∩⊗@h(&6⎇2⊗5α%!22∩
>λ∀PJ6>Z,IαRQdb2∩ε H%n∞∀*εR∃∧
R>6$

2∃∧
JJεHh(&6⎇2N%α
aQAAβ↓@4(MαVN"RαA26\bNεHhP&BV≤AαA2λH%nN
2∃αN
⊃α>→∧
R>5m"ε
2*αεJJ
Iα~>∩α≡
α¬∩>R⊗≥"&>8hP&"J∃R5α	db∩εN
⊂$%n≤
Z∃α"∩J⊗≥→α>→¬~εH4PJBVNDQαA2d"2JNH%n2|~.%1∧
:⊃α≤*QαVααεJJ
IαB>LrR⊗J_h(&N-"iαR"`$%n,rRJeβ↓α&9∧
R>6$

2∃∧JMα~⎇⊃α:&`h(&N-"j5α∧b∩εB%⊂4(&lzZ⊗%¬"Q22$2⊗JHHIn&:M!αε∩%∩⊗NM∧2>Iα¬∩⊗6ε%*J∃α,z_4(Lj>Z⊗jαRQ2d"⊗>~Ph(&N\JB∃α2b2∩R,j@$%\J→α2%"⊗6A∧JMα:|q6:&baα&Q∧JMαRD)αNε4*⊃α%|yα
V42⊗Iα∧z&*R-⊂4(%∧RJNQ∧b∩bbCH4(εU~AαQdb∩≡R;λ$%n<*Qα~M∩NQα<zJ⊃α|1α~&d(4(&%∩iαR"aD$%\~>6B
"&
&dJReα≥∩>∞,hP&∞εl)αRQeZN&b∀JQαqT2εN1Ubt%NM!α
⊗%"⊗Iα∀)αR"M→αZεe*∃∧4PIα*Nαα⊃22$2⊗JHhR2∩bEAeh&U~AαQdb∩≡R< $%n<*QαZ-∩N&>rα>→αdJNAα4J2∃α<
Mαε≥~⊗6
d*⊃α&ph(&b⎇⊃αRQdb∩~:k⊂4(&lzZ⊗5¬"Q22$1J∩@HIn*>rjj⊗Jzα&~→¬2⊗JNLz:Mα$J~~⊗∀*:P4PJ6>Z*αεIEeYAAA!↓A12d"
fR≥h%n&tJQαJ,b>∞ε$J>)α∃JR⊗M¬α>&:$*H4(M~⊗Rjjα2∩"dz4(LBJJi¬⊃2αZ∃α>J≤hR"M⊃β	A⊂&lzZ∃α%!22∩¬∩2M"αH4*"~!↓EA JR2:*αRQ1↓AAAH%nN\JAαVtb⊗NM∧b>ε∩Lr≥α&u"=α"M~⊗≤4TBM⊃↓↓⊂%αE∩Jiα⊂b"
B⎇∩≤4(LBJJ5¬⊃22∩|2NP$KZ&*&$Jε2&T)α2>!α>~5~⊗P4PJ*JN"α2∩ε∃→@$%]⊃α"ε~αε∩∩∀*NMα$yα2>!α:⊗E!α↑>∀!α&:$x4(1n2%B""4	D%Dλ→2∧dK	∧[
	HEDD4∧H	H⊗∩∩f4⊂ε",∩%ZFEβE)ja∃*&∧i∪h¬TINE TO SET UP PAGES FOR XCT HACK (FON-PAGIN@∞XA→∪1λ↓_
V6∀*Iα≡2αN2>%→$4
L2∃αB:&*≥eX4)@4εna~∃λ∩λ~h∪U)XQ0@⊂∪c⊂+gT )P∀eP!&∪βCCC IF <8) DESIRED.
¬
LDXHHK:	HRRMS (P)		;THIS ENTRY USES THE HISEG
LDXHAK:	SKIPE LDXSIZ		;MAYBE WE NEED TO SETUP PAGES FOR XCT HACKERY
	 @OPJ @,		;IF NOT, JUST EPIT
↓JUMPLE TT,LDXERR
	CAIG TT10		;IF !@A∨$A1'&X↓≠+→)%!→2A	2@b`Hh\
∀$A→'⊂↓)(XbH~∀&"∩%ααJBe∧_z4MRT⊃∪@:Su3HD∃0λ
Ih⊂(
@d#f"H'*fa⊃i⊂'cλ( cbTFE∧`S" P*∃⊗( cSiaFEαj NE TT,-1
	 JRST↓→	1I$∩∧∪A+'A→1 I)P~∀&lzP∀(⊃β¬λT∧ ∀BDXGET ECTIHβ)∃λA≥,j
εI∧z→α∩Lr.L4PJ6.Z,iα⊃∩d"bN&PH%nN
2∃αε~αN&J*α6→αD~Qαε∀*∧4λLj>@4YP∧"dHK¬≤k⊃⊃∪@83∀sd	Q11∧
⊂⊂5∧
P3∃(T⊂εdg∃iP⊂FB∧igiH&",)SXBE∧Sek"P∃*⊗ +⊂(#i#BDYai⊃`j"P∃+cP T `iP∩dε BPS THAT BIG:
α	HRRR T,TT		9 THE FIRST FOR THE XCTS TO POIJT TM(
	ADD TT,D		8εA)⊃∀A'π=≥⊃α$yαJ⊗α:Dm∀T
DD(⊃R**uλ⊃J)s#"A→∀Sλ
E∃∃β!↓33uHT∀K

¬ εE∧U&#"P∀⊗_FEαP  ∩L T →⊃	!∨%∞4⊂∪≠∨Y∩Aλαb2∩b∀bP$%]~εJ∃∧∩2Qα∧z& 5HZ"∧∀z ¬∀-8Iu∀LhqPPMIIdb¬%F⊂HK8¬4i→Qh∩	~q1c∧λ⊃s@∪U⊂* eQP)baSdεD ARAA FROM LMSEG
λ	 ADD TT,D		;AD@ IN FOR SECOND AREA
	JSP T,FXCONS		;NES VALUE FMR BPORG
	PUSH P,A
	TLNN R,1
↓ LSH D,1
	MORE TT,D
	PUCHJ P,LGPS@C		3NOTεA)%dA)≡A≥(A¬∃# ⊗&∀*⊃α∞⎇∩∀4(LRV6B*αRQ∩4
N":β↓PPLYzd*¬%ES
E¬⊃PPMIIdr¬%F⊂hPα(∩J*uλ∪λK∩∩daQ@33jHαP"⊗
!(λP)		3GO@¬¬→
↓'π∨9λAβ%∃αA∨+PA∨A!∪'∞4∀∪β	⊂AλI⊃	!∨%∞4∀∪)→9≤AλX4b~∧∩↓∃%'(αα2∩bDYH$*d"b"-α↔ M≤XK$j∧HK¬≤M!⊃∪LD~hTr≥D
$,IK∩¬<y`λλ_U⊃4Dλ3∪β!!2TTjD⊃P4iITβ"AQS⊃⊗		lNB)YuQ3$λ	∩⊂J	tQc!!4u0I∀⊃!Q@∧a`ScP"ε∩!("g⊃∧D]fPlP'"Qb⊂"'H"h*"S ∧ HISEG
	 JRST DDXHK3
	MOVEM D,H@PEND
SA¬	HRLZI D,(D)~∃MαJβπ=%
Aλ0~∃'α⊂∪π∨%∀dAλX4∀∩A∃I'(A→⊃1⊃⊗@λh*2∩DB-MhMα>AααbR
B⎇∩≤$¬\:&J∃∧∩B>J8∧∧d
t
dEXQPPLYzd*¬EID%D)J@HK8εQ*)h∪u*D⊂Su	∧⊂4Q(~c"B)YuQ(
J	⊂∃H*⊃tQaQ@∧d)∪⊂*⊗*βE∧ibU-&P∀∃∀FE∧Pb"$P∃⊗_FEαa&*⊂∃⊗⊗X@(TT)
	TDNN R,1
	 JRST LDXHK *4⊂∪≠∨Y&A(Y1	1¬→P∩∩g<B⊗)ααZ4Ltt	∧M≤XuB∧tXXB∧dλUE%(⊃PPLYzd*¬JADD∃	z$8Hα.hλ&*⊂*∪P-"i∪β GUT SECON@λAβIα4PJα2Q¬!15EE"Q$Q)D%D	2SPLλ*%@$∃∪λK⊂S∃↓⊃,p	bU⊂*h⊂∪","$Q⊂+dj∩⊂*$"H  c#⊃i"g!QFA∧d∪))⊂*∃⊗"",⊂αLT		8εA¬Q+≤↓)⊃
A=%∪∂∪9&A>2αεJ⊗λ↓Eαεt 4(~:Tα¬EJE Jh8T*∧β⊃∀
(mC"A→∀TS$
	∪⊃λ⊂1B!↔h⊂4HX(λ	 TO MAKE INSPALLIH
∞A∃→)%∪∃&AβM∪$~(∪!∨!$A
 "αaD4λLRJNQ¬"JV∀hRt$¬\*0∀λ∩1HT∀⊂1i→β#FEβ≥`DXHAK LDXFLC LDXIRL LDR@_A1	β¬&↓→∩ε∃→EαHH∀*lλ∪λHR3@⊂∪ ∧BIN1 @→		∪⊂→I∧b∩RR∀`4(Q*5,∃JIB¬∧_y∀`(βR⊂+⊂i$`a∪ ¬ NUMBE@$αα0≤2λε⊂jD∀⊂1hZhε⊂"⊗dεAMI@πβ→→dAβ→→=∞εR, 4*&4qαBε<J0∀GRBSEG		;GEP ONE SEGMENT OF DYPA @%¬≥↓∂~4∀∩A∃I'(A→⊃1∪%_$∩w%1β'
↓∪⊂~R-∩JVB%→αε: α≡&Z*α:>9m~.&A¬∩⊗@%X∧SAQ@∧jg∪'aedCEh*Td%⊂(#i!(∀cDD]Qbj⊂'S ¬ @URE CEGMENT INTO AC T
	POP FXP,AR1
	LSH T,SEGLOG		;MAKE PERE SEGMENT IJTO ADDRESS
	HRRZM T,LDXPS@(TT)	;REMEMBER PURE SEGMENT ADDRESS
	HRLI T,(T)		;BUILD A BLT POINTER TO ZERO PURE @!¶
~∀%⊃%%5$AλY'∃∂'∪44bQ(R$w⊂∩ε≥!α2>~αR=αT*J<4PJN⊗RTi↓"QHH%nj-∩5α~M∩NQαdz4(L
∩∩∀
BcλQ!∀∀eD
BbDE⊃⊂K\→hB∧ID¬$DT
$-≥AQ LE)K$J¬EID%Dxj2E%E⊃∪L∃Y→D"∧)JB¬∧y→e$-$
Dj∧9HT
∩	hU*∧→Z¬-∀T
4,8Q!∀E∃)∀¬"dHK∧l556∩E%E⊃PPM8ZETj	HED|j5¬%"⊃Q L∀JD¬"e8Xu≤M%P%
∃
"'_q⊃0*$∃∩⊃$
r∪sλT∀q1iX3Uβ!!33uII(∃β	H∩∀rε∃l".ij30Q*$∪qHλYU∀R(Zh∩3D
⊂0SλQ"B2)Z3∩(
E∪⊃⊗∧XU""'9α`ebH$g*'H'"c`U$k"P∀ ¬RCENTAGE
↓PUSH FXP,TT
	IDIVI T100.
	POP FXP,TT
	MOVEM T$LDXLPC		;AND THE COUNT
↓MOV@
A(1→	1→A_∩∩wI∪≠	$A→=εA∂↓→β'(↓!β∂
↓+'λ4∀∪≠∨Y~A	PY→	11!_∩∩m'β-
↓)⊃β&↓!β∂
↓→∨πβQ∪∨8hP&*Vmα∃αQdb∩b~d_$%nα:Dm∀T	∀b¬	y∀u$Z ∧d|4	∀2∧it¬¬∀X¬R)ZαiP)Qcbbg∃)FE∧R)&&@ TT$(T)	↓;LINK INTO LIST
	AOS (P!
	POPJ P _~)→	1
1αt&lzR,T
E"dHK¬∧uAQ Lz4αEαα#"A~∪t∩D
λεεE∪",$i∪≥∧jg∪'aedCE	POP FHP,AR1
λ	POPJ P,
λX
αw∃_
"	_db¬λ_tL@Qc"AQTq0JJ⊃α3(→3H⊃H~pε'`Q⊂"'gT∧¬∀~(rvvA→%∨~AQ⊃∪&AA≠∪≥(↓_∞)1¬*:R&bα¬α~
"ε!α-∩J>I∧zε∞Vα*2∧⎇$	Dl≤~I∀l@H∪⊃λh3Q	~h∀Q(_p∧"bεA≥]Nβ THESE ACAP≠+1β)∨%LAβ%
↓	⊗∩L~εR⊗ ∧¬$zλI∧*∧iyDd⎇y→d:¬λ¬4J	tq4g! NngD`iλBa,j"H(#dg∃ i⊂#∪i⊂#bU* g#H)jaaQiidk⊃P)"f∪a`j$SβHA%JB-1Q#@7nb4A_3pRI@⊂('dS*"a FOR PUPTING WORDS INTO BIL¬β%2↓!%∨∂Iβ∩A≥αε∞∀hQ`≠[1_`Lx)$`$⊂∧g"⊃l⊂#'T⊂ aaQiidg⊃P+gi⊃)P#)∪d¬ INPUT BUFFER ARRAY
∀~)→↓%0pλ&"∃∩%αR ¬D∧dIxe≥⊃↔5@:Q3∪h`j a∪ P ↔OR@]
L@ABS8∧∪≠∨Y⊂∃ααJBbE%⊃⊂K]8_%≤\JZD*¬yz$%@ εE&⊃ a)XNα	AOBJN B1→∩
Lp$%@9*Tmα	_b¬∀yyR∧dXjB∧|d
tD
D
t*∧z(∀∧∀XAPTdH_%≠β!Q#αA→TmQ(∃
E⊂ε"(∀&)T(
DXFOR D1@XA-~QαB
~MαHJ¬∀e4	∀`$∃∃⊂∃'P&"⊃h∧S@ 4⊂λ&B-~")αα¬Dd∧zJ5@ ¬∧h∃i`%⊂∀⊗ DRSPT
L@BIN8∧∪'↔%!∃αLrR
28H%nndzε⊃α∀J0∀
+∀¬,@tQ⊂
'i⊂)Sd¬E OTHEB↓≠'ε%:~(JαBVNDQαAIHE%∃α2"!↔qr5HT⊂(∀	@dπR IL¬)∃∩VBQ∧	α∞λ→d8(∩3D	⊂∧c"CE	TLL¬≤AβHbP⊃]8εβββ↓Q J∧αTTjD⊂ε"!∩dε2		8π⊂≡Vα@`8H⊂	"S'a`j∩dπ@≤A	3 ∩⊗α4αj∧β0
iU⊂#bjλ&gi"CE&"!∩dε1:	JSP T,LDGTTπλ∩∩m∂(A]_∞J⊃∧2J>T	∀`*∃0
1$f"FBα	ILD@∧A(Y¬$b$KZ≡⊗Q∧~0≥∃(Z5∧|βQ∩)@ π @%∃→∨πβQ∪⊂≡dλ%M⊃#"A→Tpλ⊂⊃⊗ &"∃*!&∀∃∀@	;ZA& ∧¬$3∪∀d
4h∃iλαi"P∃'P#gCE
LDBINHpλ&*≥↓αQIHD=∃qα!↔qq5∧
pπi"λ'c⊂)⊃d∧@∨π¬)∪∨≤αα∃MHZ0hPα33j@ ¬M TT,@→		3 ∩LhP&Ny(∩∧
&⊂	Hα!$gD@	;IL¬∪(A	3 ∩∃¬α6&:αHU∩∧→hB∧≤βh⊃hZα⊂" U P ↔OR@

λ¬→	)Q
1hLb∩ε
_H%m↓β↓↓αε∃~0≤@∃0
"CE	LDR@_∩$p
↓↓λ∧α¬∀YIt85⊂0IHα@
	L@	'∧_$%@4∧β∩αλ∧tλXp∧`fβE	LDPRC		8ε@@FA!+∀J~&ε∀b∃α∞b0 (αB3λJ05α!↔hλ
∧∧∀53jHαb⊂ U'`
	H		#1&∩%X∧αβ*∧
∃,@u⊃1∧	⊂∧ijβE	LDGH	∧∩$p
↓↓αdα∧pε'a⊂d∧S@34A!β)
⊂⊂∀!→D$q0
∧B]P⊂≠H⊂#bjλ ∧DT↓'3≠¬=_A!βQ∞ 4PJ2$~(T0Hα.`⊂X⊂⊂ T) lP∀ ¬FEREH
π
4⊂λ&2$2⊗JHHI`~β⊗⊂λ∧
3Q4hXβ"B)Hα j&BDX 12  ATLπ⊂⊗R∩2*λYe%∃α#"A→α""g∃∧@	; 13  ENTRY PO@∪≥PA∪≥
<~∀&d"2>HI`~β⊗@λ∧	⊂πaP∃'P g∪βP	↓HA!2~∀4!→D%¬X¬α!↔hλ ~H⊂( ∃T @		(↓'3≠¬=_∩(Lb∩-h→@HKαh&@⊂⊂"k⊂d*`j⊃P 
@+9∂β¬1
~(Lb∩
⊗t $%Mβ	P~αλYd"∧xd∧)3P4K⊃ @↓Gq⊃⊃jJtλ∪λHβiP⊂A LDGS0H LDGSP1↓→↓∂'@fA2$:NAU∧b∩=8∧
∧	⊃⊃tjεA"C!πnn`	Ip1⊃*$⊃q5∧
t⊂0hT∀Su*I3Q+D∧∀∃5
4∀ss(T⊃∩4jH3Pq$λQ0
+Qbg⊂!∀'i#@ AJD BPAND.
0⊗VlA$A≠U'(A¬∀A'(ααVAαbJεε%I9↓α4zIα⊃↓1αR ∧∧m
:@λ	λ5Q(	H∀⊂	&∀WεE≥Nβ; DHE @→→(A⊃β1A∂↓$A∪&↓β	¬
)βλAQ~A%→→βπλααR"∃¬~Bε∞*α6
RJ2,EaPPH)HD=%8∧∞AQR∀i∧ε,	α*I⊃Q(
J,εελλ∧B]ad"PβK IF L@∨β⊃∪∃∞A%_
R=∧B&N⊗8h""M ↓EA⊂Jα*JN ∧∧d∧z:β_H↔9∀2¬9uB∧
λ∧⊂)Hα⊂ ∀HAT
	MKVE TT$@V@¬!≥⊂∩∩g≤*∃α_d∧,@Su1i∧∀SsiT⊂ε"c∃⊂*'P⊃i a MH∂%
4⊂∪'λA)(Y↓(

B⎇∩≤4(M~V
%¬"Q1Eβ$%nα(∀d∧yYEJ∧9	u≤,d
∃,hI∃%HQ!∀U,Zλt*¬J@	H⊃ttε⊃,¬`→ES  ~A≥~A∂%¬∧A∪(4⊂∪'βY
 A¬$bAλααIα_hP&&>4*%αR ¬C"Uλ_u≤M!↔4<-D	Tuα(⊂IIprtd	qH⊂J
c"SλHβiP⊂A8	MOVEI @)PYπβ≠9(∩(MαVNαRαA2≡%~B
DhP&*Vmα1αR b2α≡≠α $!→TmQ(∃
E⊃p3)Jβ"B(`dc@ TT$1⊂0λ
(Jα*JN ∧∧4
9Idλh!→T⎇Q2(
J	$ε↓ ¬∧e∀)j⊂&⊃ πS !∧~∀4Tb∩=4∧∩π↓4Tu
(Vλ⊃D
H⊃λ~L#"IH⊃ttε↔@∧fgUαAI TT, R$~∀&"∩%ααJBe∧_z4MPα".jJT∧P*∪β GOBBLE <PAGSIX8
∀%∞ε6d)αRQdαP∀∃λYd K4
tm∀J5B∧∃Z@λ	→β⊂ g⊗P!`iQFA∧P∪ek"P∃*⊂@V@¬!≥⊂∩vA≥<A≠∨%∀A)↓β8A¬∪=→⊃α∃α⊗ 4AQ LU:∧¬"di≠βλβ"B)Yβk"fH V+!∀'i#FB∧fgk⊃dP ∀T,(R)
λ	SUB TT,@T¬¬!∨I∞~∀∪!%→∩AHXQ)($∩∩g∪9∪ Aβ=
*9¬α6&:$*Iα&p∧¬⊂h!~∧⎇∧$
α`h!Q$L4T
∧<→hr[c∃XCβeK0hTHHu≥β7!∀l⎇hT¬%"Iλ%∧,hAPPM:X$J¬JABE∩⊃⊃∪@8∪h∪Izλ∪1*(q(∃		4h∃i~⊂∧⊂#∪d∧LOWIH
∞AM+¬∩Bαα6ε@_(R¬∪d¬mf@Xπ0  4⊂∪'	∩A)(αaEA@HI`≥∀→hDlLK∀∧Dz8T`$∀50)J∩5⊗!Q@∧e*Sh#bP∃*⊂LDGSP&
λ∧∪≠∨Y
A)(αb"
B,r⊂$!_∀$⊂∧P*∃⊗~∃(⊂cidmβE	TLL¬∃ααJBbk⊃Q J∧β3uJ9(⊂
*∀ 
EMLπ% %Hh ⊂L_HDJ¬J@
λ1tr+⊗XFEα`g"!SdP ∀T,#PAGMS@⊗∩lU≥∨((A'β≠∀Aβ&@↓β⊂~∩JαRQ∩∧
≡ -90λ∧∧((#!∧fgk⊃P*⊗*∃∧@
	SUBI T,1~∀%∞ε68∧¬"dλ*∧,@Qβ"A∀⊂¬))U⊂ DGSP4
SA%	HRLZI T, ⊃(αH4*Nλ∧PL≤z(R¬"ββ"J8)α0i@i"Q T,
	 JRST @
β'1→ε~∀%≠↔-
↓β$eα10
∩bjZBVIbbFJεt">&thP&ε>~α	2"∃α⊗*⊂hP&6>4*%α
bB↓$Q!∃≥,)∀∧
@
⊃∃¬⊃"B3
9⊂h⊂EE4q1iIqc"A→∀S∩$λK
⊂e⊃"S⊃λzt
.A→3uQ)T⊂4DH∃∀qαλ%!"B*85⊗S$λptu¬λJ#"A_3pRID⊂K∪λHtp
!QS⊃⊃j:
∞B)YuQ3$
∃∩λ*⊃3Q↓QB4sj4⊂⊂TλYQβ"IH⊃ttεgB33jH(⊃∃¬I⊂T⊃)hβ"B)YuQ3$
∃∩λ*⊃tQaQ@4u()(∀@⊗∃*εE∧R)&$P∀⊗∀**
FA∧h∪h!⊂(εE.DB]bg"λ'c⊂$Q P$c⊃P( cRe#U@<1)D10>
;LDSPC LDSPC1 LDQAT LDQATX LDQAT1LDQAT2

SUBTTL	SPEAIAL VALUE CELL AND QUOTED ATOM REFERENCES

LDSPC:↓MOVA TTT		;[SPECIAL]
	HLR TT,@LDAPTR		;GET ADDRECS OF SPECIAL CELL
α	TRNE TT,777000		;SAS SUCH AN ADDRECS REALLY THERE?
	 JRST LDABS		9YES, WIN
	TRNE TT,4		;NO( IF THIS ATOM ISN'T A SYMBOL
	 JSP D,LDFERR		; THEN LOSE!!!
	HRRZ TT,T		;IS THERE AN ATOM THERE AT ALL
	HRRZ A,@LDAPTR
	SKIPN D,A
	 JSP D,LDFERR		;NO, LOSE
	HLRZ B,(A)
	HRRZ A,(B)
	CAIE A,SUNBOUND
	 JRST LDSPC1
	PUSH P,D		;NONE THERE - MUST MAKE ONE
	MOVEI B,QUNBOUND
↓JSP TT,MAKVC		;@%∃)+%≤↓'2dAA∨∪≥)∃$A∪≤↓∩∃→⊃'!εbh∪⊃→%hA)(X!∧R$KZ≡⊗Q¬~f6
|aα~29α
&%_4(ε%∩0~¬JEE≥Jh84u@∀pW∪h!D]S bb"Q⊗a,VPgf`$S"b⊗aSb"V⊂∪h∧HER T@AN CALL
	TRL¬≤A	PY'2]A+$∩∩m+β&AYβ⊃+
↓π→_↓!+%
|~∀%∧BJ25¬"Q1"⊂H$%Nty1αRD*0∩∧XZ5"¬
)u$,8¬
@ f*bH!bf&βEfgU ¬ @)PY(∩∩m'β-
↓β		%∃'&A∨_A-β→U
Aπ1_~(LBJ25∧	2α2$
BRHHI`~∧α3@⊂⊂j'fj⊂a&"FB∧d))λ**⊗ BD]`jλ& ijλ+bP+ReαE∧R))j∪" a)CEαE&⊃(`j≥αfgk"H"∩ &⊃ h*)αD]`≠QUOTED ATOM]
	TRNE D,-1		8π	∨≤α:Qα"~-αεuJR"&t9α~>∩α0∀LAQ J¬IId*∧EFs+≠∧εHK8[∧Mλ∩1D
t⊃0i_3λ	ZH⊂v)T⊂S∩dλ3∀Q(_⊗(∩λ_p¬bbβE	  JRST↓→↓#βQ0~(M"2>→∧!1D∧KZ⊗ %8T¬%-)`λ	@dε @%∃
β%9π
A¬%(~(Jα6 =hYR∧αβ⊂∪λH4⊃∀AQ@∧j&∪α@
Aλ0hλ$%\J→α~|q6Nfl∩61D
DD3H∪(≠0Q(λxt⊂	'U a`∀↓∪ ~∀$A∃%'PA→	#¬(b4λ∧∩Aπ¬∪∂
A∧Y∪≤@51→>u*44!∀α∧≤→_⊂hPα(λ∧	TTu∧	⊃∀0*F@εE∧T*id%λ(⊂SAT¬0f~(∪!+≤AαAH~#λhαB4
Zp∧%⊂∀⊗∩caT)'FEαh*`∪HJ P,LDRS@!P~∀&∧zAαAd
IDQ!∃¬-9	"¬αβ∀TjKc"A→∀TR$λα⊂(A)
∃→⊃#β(dβP& ,zhTj∧EH∧d⊂4∃
!α@
	JRST LDQATX
~∀4⊂λ1nHJ∀e~	HE@∀h	P∪ ∧QLS1 @→	E→&dA1	#→&TA→	#1&`⊃αd"F %λ∧Sd	⊃∀4
&λ∪⊃
~∀L ⊂∪ ∧GPRLε~∧~)' ⊗
%"0&F,zR,D	DM≥D
$,4X∧Q)@!b`∪
λ∧⊂∀)HE@∀h
∧SdπV@'$A⊃F⊂!⊃,¬`≠QUH∂)⊂A→&≥"t4!~4\M	D∧d∀⊂	&∀T(∀DB]a`g	h∧ COUH
(A=_	αεuJR"→hr∧Ld
¬-∀QQ J∧β3uJ9(⊃⊗D@	;↓
%
↓' ∩z(∀<*λ∧∀I@h∧ECTIH
∞A¬_
fRDJ0∀c"B*
4r∩D
λε&"∪$i`∀		;GOB@¬→
AU AαA1∪'(~(∪⊂⊗>4*5αR ¬BE∩⊃⊃∪@:∃0
 Tπ⊂≡J ∧∧L@H⊂T
1 B2J:λ⊂
,L@	∂)]λ∩αw≥ ⊃αD
N!α\*eα~⎇⊃α2~:@hPα5∪⊂ V⊗LF@
	SKIPE T¬≡∞α
$`1 B(	*Tp
 L@	#→Lh∩(MαVN∧λeEαβ⊃β!↓4⊂
iR⊂# _P,AR1
λ∧∪)→hAαXZD~∀&≤Z&B∃∧!2RPhP%α
∃~QαHJ∀e≠1Q M¬X9α¬αH⊃P@MλZ4B∧i
αe⊂α"(∧∧∞p	l∩)`λ  ↓GCLA
CYXAβ+GπI∧∧6}εT⊃P@MλZ4B∧i
αd⊂⊃∀ααβ8=rπ≡T	ε∞λ_Y.Nα2y≤βave all Our s@QCiJ~(∪!+≤Aα5λ∧λ~L""$∧λλ
c≤αh∂ZAβ##∃β4∧W-βqt`/us u@MKdAGα{∪∃∧hP&BVα9∧R¬¬J5DE9↓Q@∧h'T⊂# _P,AR1
λ∧∪!∨@A¬ "α¬D0HαB4	@h⊂#,∀⊗)εEαh#h⊂∀⊗ FE∪ ∧QLS3:∪'-∪!9¬10∃¬X∧Q!⊃,¬`∪KIP FOR P@+I
A"~.⊗JHh ⊂J	*%≥λ∪⊃
→α)P⊃
λ∧∪!-~!α~β
αd⊃↔5≤
hT∧D
9λ	84#"A~∃0	dλ(⊂A		;SAVE @→∪M(⊂∀!→TmSR(
E""'h∧@⊃∪LA≠β9&A*-~QαIyt]4β"A~∃0	d∩⊂(⊗&⊃ πP@%<~∀&∧zAαAd⊂4(~	uα∧hε∀¬Hβ"B)*30∪Dλ+∪⊃
→α)P∩		;@∨≤αα≡∞Bα)r∧d~:Bb¬9t¬-≤T	∃ hαB3)zβ"P K!αE∧T*id%λ(∩(*T!gh,BDXNOT GN↓∂π!∀yα2ε≥!1αNzαBVJ≤zBeαM 4*2%
2MEPJ6 =hY∩¬"F⊃⊂K]I	∃~∧β10)@)P ⊂RLπ ∩⊗≥!α>I∧Bε*⊃∧∩ε∞4λ4`:⊗#"A~∃0	d∩⊂(⊗&⊃ πP@%<∩∩g¬∩6@$X:B∧d~:B∧∃)yR∧∀X∧ShdgjiH!aPFB&"(f∀Y→∧h∪h⊂#,∀⊗ iλCE	POP F@1@Yλ~∃1	#→&Tp∪∃+5!αAλαb2α⊗4aP_Hα.s(≠0Q(
I⊂4h	I4q⊂⊃ebiP∩dεTO AP@∨≠Qβ¬→
4⊂λ&"∃∩5α¬bBI$∧KZNεZ*αε∩∩∀*NMα|1α2ε≥!↓"↑DJ≤B	X∃HhαB2J*uλ∪λH0Tl!⊃,¬P!⊃P"$c⊃ i"g∃⊂#'kJP! aRP 	NTM WORDλ
(hR2∩Fe→QhεU~AαQdb∩F2¬∩<4(LRJNQ∧b∩F2≠(4(Q)D%J
${PQ!∀→D∧
d→`¬[⊃∪sJY".rJZuλ⊃+	5λ∩(d⊂3U)Q B(λ`df"H V$g∃l$$SαUM-⊃
∩@↓∃%'(α↓1-HhP%↓↓∧RJNQαBQ$∀PJ"JJRα↓22$*P∃¬)qPPL*YU∧
λ!Dd∀4∀F⊃ ¬&"∀h)_≥αd&)-λ**⊗∀⊂∀@
	@πβ∪≤αα¬"R h %αU∩NA↓E!$$¬\RVNQ∧*b&Q∧J→αεe∩⊗ε∩JαR"⊗∀(4(→
%∃Rλ%BD∩⊃Q LUYZ∧r∧%ID%
 ↓QS⊃∀*
L.B)
TVHλ%∪⊃⊃*@()'DB]caVT)'j"Ph∧ HAPPENS BQ PUSHING GNTLεAαA1∪'(~(∪!+≤B)αAd~6 51Q LlzhTj∧∃ID$5P∀IQ"B2J*uλ	(`iεEβE&"#T)']∧Tedh"H!a`)PiD]T)'j"PβPλAπ=≠)⊃%→≥α|qαRα*α≡∞Bα8∃⊂H!∀∧U∃:@αdpt∀Iq"B4
Zr∩H
¬	Qpj
Sb"'h∧@E LOOKUP CAUSES TH@
AπIβ)∪=_A∨↓αA
\Aβ%%¬2~∀∪)%'(A1	%'↓P∩∩wπ<A/
A!β%
AQ≡A%M)∨%
↓!)%&↓β
)I(∞εJ%_4(Q c\HJ¬∀~	HE¬∀6⊂λ

Pr⊂)4⊃⊃∀
(lH∪λJ∀Pld	⊃∀∀H6α⊂&"∀)!RP∪ ( ∩C4∧A		A%εn~(~∃'	))λ∪A+%∪
%β¬→
↓∞ε2`h $)HE¬∀4εB)Yβk"P⊃⊗ &"⊂h*)∧B]m`⊂URIFIABLE CAH	2hh &R∀r1α⊃biD$↔9U-≥D	∧
Q(∪I@dε-NIL ATOM TO @πβ→_4⊂λ%αU~Aα⊃db∩4X∧TAQ@∧j&∪α@
AλαaP≠mlε↓ ¬∧P∩))b L@	!∀→D$↔9%,M∧	∀2∧~Itj∧α⊂4d
t⊃0i_3λ⊂hYα 
	P@→≥∀A@10h %αU~Aα⊃db∩4X∧TA⊃,¬f'TbP$cλ'*fa⊃i
	TL@≡A⊂Xbα∩$p∞⊗2≤)αRVα)b∧|βH∀HXQ0	"SαCE BIT
	MH∂-4A@2∧b∩εB%⊂4(→	E∃Rλ@¬λλ∧DDNβFEDCH SI2 DATA
∪⊃1_A(X!(R
∀%)→∞APY'2]
β∀α∩m∨⊂~2Jαε∞eD∧t⎇D	u$~∀⊃PPMIIdr¬EJ5Ju
Z HK9ydeJ	_b∧LX
U∀(Q!∩∧DIIR¬"E
BHh)HE¬∀6⊂∞A→∀T@
J	⊃α!↔t⊃5∧λ1⊃∀HZth∪hd⊂5∪iT∩3@λ_3∪β!!4rr*λq(∃¬I⊃∀∀IJh⊂
!↔trr*∧⊃StD
∃0R(k23Qd	⊂0rhZV#"A∀∩TTjD∪⊃⊂(
b".izα$"i∃dibP∃bSi"H"#g"CEj&∪'⊂",200  @`∩∩wM↔∪ A→∨$A⊃
(A'	U
~∀$A'	hA(X∩$p∞⊗2≤)α∩t	u∀$→h∃∃Jλ9T
≤↓Q M¬X∧r	$∀∀
(r⊂2a⊃,jJE$∀s0*9λ(
E%A"B$	TTu∧	⊃⊂0J6!"B)YuQ2$λ+
∀E⊃ .sIzλ∀s(~r⊃1∧¬(⊂si@)P'g∃'P(*T"P&$TjεE∧Sek"P⊂⊗&"(∀&)T(
FA∧h∃id%⊂∀⊗!gg∀FE∧fSi"fP⊂V&"(∀&)T(
FE∧e∀)j⊂&⊃ a)XCEαE≥N]P)'Uj g"H*#P!S'a!"T⊂ P!Pf"⊂$S*'P!∀)P POSSIBLY DOIJG XCP HACK&
;;;	SKIPS OJ *** FAILURE *** TM CLO@BER8~∀fVl∪(A≥=_	6j-∩5↓urαRJE¬Bε@"	λ∀≤[4	u$DX*tM≤T	u∀$→h∃∃Jλ9T
≤¬aPS[71∃%"	λ∃~¬X¬3d	3Tu
*0q∩)@e⊂ ∀O HACK.	α;;8ε∪$A!β&Aβ⊃	%≥→αR≥¬αVAα-*5α→jDj@@εE≥Nβ;	MUSP @RESEBVE AR⊃, R, F.
IFA @!¬∂∪≥∞104)]2⊗JNLz1α~⎇⊃α:>pjBε≡Lr≥α≡tbe1αt*P≤-$
d-∃9→tb¬8Z¬∧⎇*J2∧-λHTd∧_)D*∧h¬3((4H∪hd∀q1iX3U∀aQT∀Piλ2jB)*34⊃$
∪⊃

Pi"!↔uλ⊗HZSh∂'d∪tQ	→P4V$
s04i↓ ¬∧fSi"P***∧DNβSAVE CALL IN T
↓IDIR @)PY→	1M~b∩∩mπ⊂≡6α
U$
	λ∃≤Bλ9t$(⊃Sj$⊂p3	A ¬∧fSi'&@⊃⊗""*⊃dh∧DNβSAVE NEGATIVE THE@%∃_∞_4PJ"2JRαRQIHED∀JAP@L_HB∧	∃∃↓⊃,p1λJQ0	iH* ∂ BEG@∪≤ααN⊗ε∀~ $!_4Ld
BbDE⊃⊂K]xT∧l
α(∃i→β⊂$fSbb$`U f,FBα	 JRSP LDPRC .4⊂∪'↔%!≤@Q⊂R~(Jα*JN ∧∧d∀⊂	!Mαλ
(L
∩"λ¬∃¬I⊃⊗∀iV ".hYα)bP∪`ebP∃h⊂ gλ ga%∪α POILTEB
λ	S@+	∩A)(αa5E" ¬⊂HKαh⊂)Hα⊂ ∪EARCH↓
∨$A5β ∩∞DJ0∀h⊂p)Iβ"B)Yβk'$H**⊗∀∃*⊂	
	HRL D,TT
λLDPR@εd`(L~ε&9¬!1"⊃Hh %αU∩N@"	HE¬∀4¬b!↔qSu)Hα⊂&`U!`λING CALL	∀∪M↔∪!≤α↓"↓⊃Q J∧**5"∧HJ¬∀≠a⊃∪@8Su3HD⊃34
K(⊂s	ZαεE∧Pea%'λ"⊂LDPRC $4⊂∪⊃¬10	α⊃db∩R⊗m$%Nαz$
¬λXB∧|hd¬$DTλTdλ∪qD
⊂∧"P⊗!j⊂ T ¬A
	HDR D,@→	a
2PHI`~αβ(∪(→q(∃*∧⊃Q5dλ3pRI@⊂('dSαTEB
λLDPR@εft∪
β≠≤APXQλR$∩w'
≠⊂~⊃∧~0≥¬∀	t2¬IλR∧dβst↓Q@∧P%∀)j⊂&⊃()![BDXFOUH
λA5β ∩∞DJ0∀h⊂p)Iβ"B*9p4∪D¬⊃
#!∧P%)∀h∧ LDPRC ,$∩w
∨U_
"λYU¬%∀
4d⎇AQ Lx)$`$⊃∪λJ∀PlaQS⊃∀
(m∞B)Yβk"P∃*∩*∧B]j'j⊂d∧ LOSS -↓≠ ⊗N ∧∧$zλ∧s(~p∧εE∪ ∧P@%jt&E∩Jiα
⊃J¬2⊂H%nBαZB∧HJ$-≥4	t2∧8→Db∧α3@⊂⊂i→ FBα	MOVEH
A%!1"ε⊂ε$
Hα".j
5λ⊂h→α  IL∧A)⊃¬(A!→¬∞∀∀PJ*JNα@λ	Hα)fiR∧@]g∪βP∞A%∩eαRzαN ,~9α∧MED∧-Dα5∩)@ π @/%)⊂Aπ-∪ A∨8A~εLbVJ∀hP4*2%αJ
Yβ!∃≤\~λr∧dK
4MPα".hiu3Q∧λ34∃∀∀s∪jAα@
	 JRSD↓→∩Bα(3 H↔84@Iu⊂∃ibP$U⊂ 	F PAGES PU@%%
∪λ4⊂∪≠∨Y⊂∃αα@¬λα⊂			8π'β-∀Aπβ→0A∪≥$yαb∞ ∧∧
∀X⊂λε! ¬∧fSβP
~ααQ2αd"bα_a⊂K\→J4`4∀p5HT⊂∧g*∪β AREA 1
L@	!∀→P≠Pα01λD⊃∪λK⊃∩1A⊃,¬f`RbP ∃P AN X@π ⊃ααIr¬∧βr3JD∃∪c!∧d ∩LI D,(XCT)		; CALL IN AREA 1~∀%≠⊂≡Z,iα"β
∀E⊃ ¬∧h∪βP@∀A@X⊂∀+Q⊂K\YhB∧LhT¬∧y→d8h c]λ∧Piλ2h∀
(ts4d
∀Prλ⊗(⊂λ)⊂βH1A↓!%π⊂β
∩¬λ∧Piλ-λ∀
(p∧ @3 PRCHA2 @!I∞!Jλ∧¬¬∃J*E_h!Q$L4d
∧<α3QeKc"Ni@ ¬W STYLE SEARCH FOR PROPER LIL¬⊗A→=∞εRLz0∪Zλ_D%~λ⊂∧`(αkP*Ug`INKS CEGH≥PA∪~(p
αzZB∧|d
5∧8T∧m∩	_b¬∧~*DLIK∩∧,Z
EJ¬X¬3iI3R`⊂∀bcfbS*⊂$ TP!"bSα PERIFIED
PBCHAK 4%∃+≠!8A(I!I∞"¬λH%n∩|q≡Aα≤jεN↓∧J6 ,XI∀
∧β⊗(	_H⊃⊂∪αON-ZERO
PRC@'5&t&E∩Jiα
⊃J¬2⊂H%nBαZB∧HJ$-≥4	t2∧8→Db∧→`λλ~LP#!!33uHY(⊂
*∀ i2A)↓	;PUT CAH@_A%_	αRD
QαBd
ε∀4PJ*JN ∧∧d∀s4i↓ .u
+(⊂
'H)`
ASH AT, APITIH
∞A]∪ ∩∧
4\M∧	tb∧h→∀e-(QP@*∀Prλ⊗,B4
Zpλ⊃K
	∀B!↔pπ"bQ⊂"↔iλ( diλ'c⊂ PiFE∧SdπVE D,TT		;GET COPY OF TH@
Aπ¬→_~∀%∪	∪-$AλI→⊃⊃'B$∩wπ∨5!+)
↓
∪%'PA⊃β' A-β→U
~∀∪5∨-~↓$Y→	a⊃&b~(∪≠∨-∀AλI)P∩∩w$B⊗)α$B∃αN,~> 4D	∧
≤∧
deXQPPL_I∃$JλEDd$λ9β⊂h!_∀⎇~
!⊂HKαr5∧λQ23Ht⊗Q4IT⊂su)Hλ⊂Q$λ(⊃∩*84q⊃*!"B3)zQ3 
%∪⊃⊗	
lC"A~rr4	D∃∪λK∀∪U↓⊃,qq*D∀∪r)J⊃4C!↓(∩TJ:λ∀∀Hd→ DB]c$i∀h⊂"$SbP ∀HROUGH ALWAYS ADD FEW SEGMEH
(~)!%π⊂Eαtβ⊃I%4Aλ1→↓1!M Q(R$s∂λααB>εu"⊗IααIr¬¬X∧Q$
⊂1q!Q@∧fgUα@∩AHY→	1=
&Aλ$∩w!∨%→)∧ααR=α4JJNQ¬:0≥∀D	t2∧H~Dλh!_∀$∧α(⊃¬Jq1ti≠K(λDB]j$$TP 	S THE LAST WLπ%λA%_	αRD)αN⊗<j⊗ 5AQ LH@λ
%⊃⊃⊗	
l""'ij i∃⊂#!'SP*$"H#$i)U⊂  iR⊂+ f∃b@
PRCH1B8	CAML TT(R)		8π⊂⊗ε$~!|4PIα*J≥!αBJ≤B¬L$KZfVAbαN=α
∪!= A
E↓2H⊃↔5∀4p
'T ¬ @!=∪⊂~R-⊃αRtλ4`8⊃#"A→∀S∩$λλε∀,⊂βPλ@$hP&&>4*5α⊃bBI$⊃↔5$DY`λ
:⊃tQ$
⊂∧"P∪α@.A%_
NR∃*≥⊂∧ggβE	POPJ @ 0~∀4SZ≡⊗Q∧B⊗J∃¬:&@$αλ⊂e
J(∀	@dg"$Sα@∞A$yαNIzB¬$βh⊂(Hα⊂'"Uβ ENTRY @)<A∪≤AA+%
AQβ¬→
0A∩V*αR<4SYαRα*α∩-9_t`$⊂πc⊂∃$"P&Qa`λANISE, IHA$B∃α∞
~⊗MααI∧
λ⊂@⊂∩iP$g∃ f$b⊂ P'⊃hπ @+U_
αB:∀4'0λ
@df&⊂∩ k"P∃'P!"H b""Q⊂ g"λ)⊂ ↔ILL NOT BE USED8@A&2αR"ε ∧∧M~λ9∧TxXBb¬I	∃_h'4¬∀⎇X¬∩)HαP&jTh⊂!"H!$l"Q∧¬∃!I∞"¬⊃P&ε>≤b∃αHK∧e∧1⊃∪@91H∃		4h∀hXq13JD∩4hλj3∪β!↓(∩TJ:λ∀∀Hd→ DB]P b⊃⊂ P'⊃hπ ONE
	MOREMTT$(R)	↓;STORE THE CAL@_A%≤A)⊃∀A!∨)∃→)∪β1→2A↓U%αA≤*≡6⊗u 4(→
%∃RλADd%

5αEE⊃∪@:⊂⊃3DλU23λD∀∪r)j⊃4@
Ih∩3*
4Q(
81s1)Jβ"B*:0S ⊂∀⊗"εEα`b"$H"⊂(T)	↓;D CGNTAINC ADR IL AMPURE SEGEENT
∀∪5≠%~↓)(XQ⊂R∩αwM)∨%
↓)⊃
A
β→1∧J2NR∃*εBε|qαRα-∩∀4λMα6Aα5BA2HHIf≡⊗ ∧∧%$	t2∧_:E,Dλ4l$QQ LE)I∩∧"β
⊗λ~α∀DDNβP	",qα&:≥"JV∞αI∀`9H⊂
'H( ANT THER@
~∀%≠⊂≡Z,iα↓⊃E⊃$4λMα6B$
α`HαT∀H→P ≥αh*`∪H FP@ 1)(∩∩m'β-
↓)(A∨Y$Aπ∃∂⊂⊗⊗u!α=(_ hPα4∃*9⊂¬⊂(&",$⊂eDD]Pb"⊂ H'"k@ SEGMEL¬(~∀$A→¬HA7'∪a
&Q¬bεε:tzQαε$!α:⊗8∧¬-,yI∀`)th∀hXs13JD(⊃H~q∪p(D7↔#!!4∪t∧λT⊂
Jβ"B)YuQ(
E∪⊃⊗	J⊃α"'cbj⊂∀'`g*⊃i⊂"'H*$"P∀ cbP∩*ij⊂b""bβEfgUαEI D,LDXOFS(T)	;FIRST DATA ADR
	ADD D,LDXHS1		;ADR DO INSTALD CALD INTO
	MOVEM TT(D!		8π')∨I
A)⊃∀Aπβ→0A)∞A	
A!∨Q⊂~RL
22e¬~6εND*⊂$!→¬∀d∀λBbEλ:BHH↔:DD
λε⊂jD∩3TjJU0u	→β`∞
	POP FXP,R
↓MOT¬⊗5∧!1"IHH%nBd
:QαLqα∞≡$(4(→
%∃RλADd%

5αEE⊃∪@:∃0	"H)bcfQe*⊂(∪dg*"T∧A∧`Q ⊂"ε∪",$)LFA∧`Q" 	 D,LDXOFS
	MKVEM TT,(D)∩∩m!→β≥PAπβ→0A∪≤AA∨!≥Q∪β→→dA!+∀)αN⊗<j⊗ 5AQ M∧z	"¬αββ"AQLr⊃*((⊂
'H*),P∃'P!fPi`⊂!Pf  IN AMPURE SEGEENT.  CAL@→⊂A∨
→dA∪A→→β∞A%&A'PX⊂∀)ZαB>εu"⊗Iα$yα↑>∀!α&9¬""*λ∧q(y13U∧	4h∩)d⊃@∧λ⊃0u
)v4hλ∃λ⊂C∧λiλ∃↓QT∀U
*∀jB)
TVHλ~LP#λA".t
Zλ⊂1λJQ0	iH'c⊂!Pf  IL∧Aβ$Iα~∀∪A+'⊂A→1 Iλ$∩w'βY
A-β1+β¬→∀AβεOL~∀&¬*N!α5BA2R h &B-~!α~β
αe Q!∃¬-9	"¬αIHE≤M9↓⊂K]J+∩¬$t
4l
9¬$DTλ4dββ"A∀⊂¬#!S∧@D]UbP"'S⊂πT REALLY CARE IF IT WINS GRL¬∨(~(∪!∨ ↓
1 YP~∀β!= A
⊃@Y)(~(∪!∨ ↓
1 Y⊂~∀&∧zB)αα¬@hUβ""'bg"∩c'⊂(⊂c`g#CEβ≥`DSMS@⊂A1	5αdαα2αjz-αHK$
	HE≤Lh∧c!↓α@
;≠8εA'≠¬'⊂Aα↓∞ε2bjRfB*αVF=∧J0∩∧β13)ZT∧P*∪β BE A P@+M⊃∀A∨HA∃%'PA∨$A]⊃β)Y$\~(p
mm∧
IJ¬∧BεMααI∧*∧β∪ph~⊂∧ggλ'c⊂*∩ ¬ CALL ≤~(p
mm¬∩⊗@%X∧SD
p¬dh∀P 	F IPλAπ¬_	=Dλ$*¬9X∃≤DX@AQL¬P≠lA∩⊗α:E∀⎇~4∧
@λ⊂@⊗λ!P T, TT0AvAMβ ~⊗α4∧
∪∃D∧
∪(⊂∧
Kλ⊃E@∧¬∀vlp
αX¬4jD⊂π'jλ*ibiλ g → P@	1∧*b∞⊗α
B¬$α⊃(
(αch"∪⊂⊂λ@ $Xλ (%j4,*λ∧∃*)1PFBαλ
*d"N -9β LLzhR¬"β
⊂*&P*#!↓3∀r∧
λε⊗@33	↓;T CE@)LA)"*α≤ID¬-t	u∧≤βq⊃!Q@∧a`Rd∧ D@πβ→→|Zff~(∩Aπβ%→αA b≤IKrk≠59e-,x9E_h!∀α¬∧βt∩D
λε∧DNβRE@)U%≤A∪_A≥∨(↓%ββ→12AαA
β→0hP&"J∃Qα¬1D
IJ¬Hh &6⎇2⊗%α⊂bN
J`h(&B-~")ααb≡⊗Rdλ$%nαJ%J¬It∧<-D
5,∃%D∧5≥X*"b∧z$∧e≥X*"¬¬)zhPα3⊃λ$⊃⊗f&l
_⊗∩∀ T→ TnCE	JUMPE A,LDSMNS		;JUMP IF NOT ANY OF THOSE
	HLRX B,(A)
	HRRZ T,(AR2A)
	HLRZ T$(T)
α	HLRR T,1(T			0↔∂∃(Aβ%≥&A!∀zB-*K∩∧4z ∧5,h:DL\βH∪H→1#"A~qrS∧
	∪⊃λ,B"'e*fhλ$c⊂*∩ ¬RE ISN'T ANI
λ	CAIG T,NACS		8πβ%∂LA!%∨A%)2↓∪&Aπ
%/2↓∪A$B&Mα≤Z&BMλh %ααID`8(⊂
,(CAIE @ _R$p∞&→∧
J=4
¬∀⎇∧	tZ@λ⊃⊃*:λ⊃Sj$∃∩⊂*D⊃2⊂(~λ∪U)XQ0	 MF ARGS IN UUO
LDZA2:↓  MH∂-
↓(Y7π¬∪→
A⊂Y≥βπM:∩`.L1α:=∧zIα
!αεJ=→αBJ⎇↓1α*-~Qα∞D*≤Zλiu∩¬(→d<(Q!∀→`∧αe_j5,∃!Q J∧β3uHT∃⊗h_21(λE-w!Q@0p)→H⊂K
→∀p
a∀εE∧P∪gk"P∃⊗-a`RbP"εY*FEαl!j∃∧DD]PaP#$Qd∧D OF CALL IS 0-5 FOR CU@RS, 10A→M+¬$Xb`≥α5~V
HhP%α*∃~QαB⎇α)D∧KZN.&ααJ⊗R-∩1αε2αεε2bα∩>⊗≤q≡Aαl
R∞!∧2V:∞αI∀l@H⊂
,T P'iλ⊃P i⊃iFE∧R))-⊂⊂V⊂λA			0↔1'
A∂%_	↓5¬~6εN@αR"∃∧~ε2AQ LDJ+"∧
Eλ∩HHα.tjXTH⊂(H∀Q4j4⊃Sud	3H⊂!Q@∧ieRh P*∃⊗⊂ i TFE∪"- gR]	 HRLI A,(@)		.SEE ASAR
∪≠=)'%¬!1"BαZ4DRλ¬BHKαpp)Iλ⊂Q(gbbiH(*`∪HJ
	TLNE TT,20000
	 ADDI A,1		;@ACK FCALLS CLπ%%
)→2@4A≥)∃$Aβ(↓%∨+)%→αVb4∀∪)→9
A)(0b``@4∀∩A≠=)'%¬!1"*∃~Q$∧KZ*∞εdaα
⊗≤z6⊗M∧RJNPhR2∩j		`⊂L→z"¬"H⊃P@LYzd,JλABD
&(∩HHα.jE%Ts0*9λ*JE!"B4	Z⊂H∀¬A C"IH∀s3J7@∧d)∀-⊂ F
 i→ JD@	;TRY DO CET↓β%%βdA!%∨A%)24⊂∪≠∨Y∩A∧αbFεJ∀
d4!~¬-≤	$¬αbHxU @ ¬∧fShεEI T, ⊃ααH4(→J4B¬EEU≤,yIt8h!→TmQ(∃¬Ju
∃¬⊃ ¬∧j∪''⊂*)`FEαP 
RST POPJ1∩∩m→∨'
↓∪A≥=(A'βH~∀&d"∩¬EK5%%8I∀j@λε**∀`i∀ Jn@
	@πβ∪
↓(X@" ¬⊂HKαs5*:α⊂$ Uα@
Aπ=%%πPA≥+≠	$A∨_Aβ%∂L~∀%∧RJNQ¬α0≥β→!P@!33uJ9(⊃⊗∃*)P≤CL∧p_Q!∀L@tS ⊂∃⊗**)Pi∀ @)		0↔≤*Q↓
≤z6B→HT"l9xD*@3Q1(JhεfbHα BIT IN SAR~∀%≠⊂≡Z*αRQEλ∃∪∀∃⊃P@!5∪∪I@⊂**,200  @~∀%∧RJNQ∧b∩jε|X4(→Yu *p∧P*∀ a`S&⊂			8π
∨$↓β⊂→αt~ε"EZEM∧T
U,Zβλ∀iX4r⊂∩h∧ DO
∪)1_
*λ¬∃¬F,↓⊃,¬P!⊃P P!T'aedTd⊂ aPd∧@_A=$Aβ∃
β⊃0hP%αYze≤Jλ¬⊗
 e!`S&⊂	
	JRST LDZA1
α
;@→	≥ ⊃αd"≡⊗Qλ∧∧d⊃q5ε$⊂ε"#U~`P&⊃ πE@(β!α2∩=!VλQ!P@*u0U
Iα1q*Hα"*)Vd¬ HA@π↔∃H4(Q)D$q0
:	CAMN TT,X@εZb~(∩A*∃~QαHIDE∀AQ L@3uQ$λα⊗**αDX[GEPλA	⊃(A'Lj∀|βλ∀λ~α!d.CE	TLL¬≤AλαaIAAαεβHα.s(≠0Q(
I⊃(⊂*:q30IHαi⊂&⊃c*⊂*TP P+⊂d∧UE?
∩A)%'(A1	≡⊗α@AQ@∧e)T⊂*⊗&⊃ πTWD		0↔
∃)π!∧JQαRD*0⊂@ ¬∧iRdh"P∪ ∧F %⊃ ⊂∀!∀∧U∃8¬⊂∪ ∧GET2	↓;CAHO(ααVN∃∧JQα_d¬ (αi)dSβH
&A⊃∪

H~∃→	≥ ⊃EPJR2~*α⊃1Qβ↓AA@HI`≤@060HT⊂π"cPh"P)Vd¬BOL?
	 MKVNS TT
	LDB↓λY6h@`d`@0Y↓:∩m∂(A→∪→λ↓_
V6∀*H (!≠∧
λ∪⊃λu
⊃¬⊃ ∧]d⊂i`⊂*T⊂+ f∃bP#'T⊂#$bS"εE∧Sek"P∃⊗""&PiaT"
DXADD ANTLεA
∪∃→λ~∀%β	λAQ(XJBαBI$∧KYα6ε≤Z⊗⊃α
αBJ>¬∩&εR,bd4!_∀dλ⊂
**εE∧Pe"!`SP*⊗⊗LT)∀FB∧dgi∪P**,-1(B	
∪∃I' A→⊃↓∪≤~(~∃→	≥ dt%+≥→∨
↔∩α∩$p∞@,iIt9h∩3JH4TU*
∀c"A~∃0r∧λT⊂λ⊗α		;RAJDOM BP@ SLGT
λ	PESH F@1@Yβ$b$∩w'βY
A+↓βπ&~(∪!+≤Aα~Bαb⊂ (αB4
Zpλ⊃K
	∀C!!4∃4i∧⊃R∀¬HA"B)YuQ2$
Kβ!!5∪⊗Dλ	
eεελβ!*Q0λ"Pj⊂&'QY&&~K-FE∧P`ff⊂⊃⊗& h⊃$k∃↑o↑&'QY&&~KW)(!S*⊗XO∂∀)∀FB∧P b⊃$P!εo↑&'QY&&~KW)(!S*⊗X←βE*DDNbg"⊂∪c⊂!"T ¬AT LOG2LL5¬
	@πβ≠
↓λY→βA
∪,QHR∩`.L1α∩∩%~f5αα(U
X:B∧M4λd⎇∩λ⊂∧<dx(∀b¬9→PhPα(∩J*uλ∪λHu
0!⊃.p
$⊃e⊂#$S ∧ IT IN TH@
A→¬!
∪,↓)β¬→∀XAβ≥⊂A∂(↓∪ ∩Mh(&2≤B¬αIbiH$%\:2>
bNf5∧J:$[∧5∀yP¬$DT
∧-∀ZZD
$α3sD
⊂0SλQ"B3
9λ⊃K¬VC"A→⊃⊂@⊂∃*∩&"⊃bj≠∀⊃∀FE∧Sgk"P∃*⊗&)VfiT*∃∀BE∧R))j∪"#j~PεE&"⊃j~`]αfgk"RP**⊗∀≠XεEαa`fgλ"⊗-iTjgm"H_⊗)≠L.BE∧H%))jλ&"#j
X	α	LDB DXε``@ εββαβ&%⊃P(
n@
LD@∂ εC@!33uHT∃∃⊗⊃∧¬∀∪%	∪-∩↓λXj@h &*,jB*λ∧@⊗∪ ∧GET4	∀∪A+'↓∀↓ Y∂Q	∩!Q LU*:B∧dHxU%@Q+PHKαq3HD⊂πc⊂∩c'⊂"XεE&⊃ πT5B8	MOVEI @)PXZhQ→1 @$KZP≤LeD¬ 93H$
4q(
(3Q∪iT⊃P(λ)`OT
∪≠=(
,∀λ∩bkEλeEαα""'P*'P⊃ ebP∃h⊂ @ FIP⊃≥U~~(LRJNQ∧b∩<X¬∩AQ@↓Gq⊃⊃hZα,⊂&⊃ πE@)(A→	∂∃),A→⊃∂).αα2$xZC"∧β⊃⊃hHα*⊂&⊃ πDDT LDGDDT LDXCT LDMASK LDLHRL

λLDGETX:	MLπ ~⊗Jα¬ "α⊂j!Q@∧h*Td 
 P,NCONS
	MMP
∩↓Y#∂∃)↓	)M3∩%\"0~∧∀λdLEX∀:β"B*
4r∩D
	⊗⊂i@dεS
	PU@'!∀A Y1	≡⊗αJ⊂hTHHt-⊂¬≥∧T'h⊂#⊗(⊂F		;RESTORE ACS
	PGP FXP,R
∪!= A
E↓24PJB>A∧2bAH~#λhαB4
Zp∩H
¬⊂ε"&∀)h∧DNβH	∂π-∩Aβ≥⊂A%≥"0≥∀Tλ∃∃∀≠∀¬∧|α3UλZTc"A→3uQ$
∃
λ∃ εE∧T*id%λ(∩*,T ¬P		8π
∪∂U%∃α⎇*Qα↑D
Qα↑*α≡.Q∧∩ε∞1Q M∧z∧∧5E¬ES
Dhε∀¬⊃ ∧]h∪h⊂ ∩AL¬∩yPλ
9α ∂T(REMEMBE@$ααR"∃∧b0≤≤αr(%⊃ ¬∧aPdg⊂ K(c$l∪αUM
	JRST LDGET1~∃1	≡⊗αJc@!0p2)@⊂ V(Q&#g*SD@	;USE A↓
→>u*5α_d¬,*λxU"∧βsQ!Q@∧e)∀h∧ LDGET1
λLDGETW:	PUS@⊃∀↓ Y2$:∩%A⊃∪@8St@⊂⊂dεP∪)!∪⊂~≥∧*2N∃¬"Jeα$"Qαε<
& 0β"B)Yβk"fH**⊗&⊃ ∧DTP(P ∩~(∪∃%'PA→	∂∃(d4Ph  (αS⊃λx5
ND
Q0λ"Ph⊂∩,Xεxbc|dh\\αYq`#F5R`*T⊂sJGJL$'klhλ↔∂⊂" h
h⊂!)
P~~(~∃∪
8A∪)&12~¬→⊃∂		(h∪∃'↓(Y'∪⊃	) ~(∩A¬%M(A5!=!∀$KYA↓upαR>A∧b⊗@4YEB∧⎇$	dmλ∩3Hhαi$gT⊂*'P⊃ ∧T
	(
¬%∃β⊗@Bβ⊃2m→u∩N@%¬EE%%Q↔2k
EFαβKβH∩)@ εE@%%_∞IααIr∧⊃∃β∧λU1⊂∪'P ∪YMBOL TABLE
∪'-∪!AQ(∩αvDXX`@t|A&t2⊗J&⎇⊃αRtλD%"λ¬r*Iλ⊂	lSa'f⊂∃ a&"CE	 TLOA TT, ~@λh ⊂J∧	T`:β)dP∃*⊂1
λ∧∪!∨A∀A X4⊂
`(α".hYβ"⊂'Q⊂ 	FN ITS
λ∧⊂∀)_d`$⊃@_-FE&⊃ πDDT==0∃5A_∞B!⊃⊂K\iz"∧tzp∧	Q0"T⊂ P"⊃*εE.BDXEND @∪
8A⊃Ih ⊂@ ¬εE∩c'⊂"X⊂[
λLDGDDT:	SKIPE TT _])
Nfh∧ hPα(∪)@hεSI TT _b4⊂λ&B⎇α)αA`h ∃@ ∧D]QdεD OF @∪
8A⊃Eh ⊂@ ¬&"⊗!j≥∧Sek ∪S TT	;IH
	`A
∪1λ⊂∀!→¬∃∃*4¬% ↔8∀$∀Q4j4⊃R1)Hβ"B)Jp∧⊂*∃⊗→→Wα]`aP⊃$bf"βE	JF@π⊂⊂$KZ0≥∧9xD*∧i_Td Q!PTdIX∃≤[!∃SλHα.r)@ ∧EH↓
∪→⊂~∀%αa15DHI`≤HJ$-≥4λdL,HAP@!,λ&Uα∧D]PaP#$Qd∧D
	)1		8π⊂≡B≤z∩*λi∀,@⊃β"AQS⊃∪	
S∞B)
S⊗H
Jλε&"∪c)`∀
λ∧∪β	⊃~A)(αa5E"α!⊂hPα2TJ:α⊂&"⊂αIN
;@→	¬%⊗→∧b∩εJ+	α2∩<b∩∧β⊃⊂*I(∪⊃λ~α!&⊂∪ ∧ATPL @→	¬) bA1	β) HA→	βQ fA→⊃β ∩Aα@∧d∧~Jβ@HαC"J:αa**∪∧`i)⊂lV⊂#S'a f∀lfV⊂⊂e"⊂ U'bj P&"P"S*),P∀h∧UFF
~∃1	β%_pλ&B-~!α~β
αe%A⊃∪@;p4TH≠(⊂	"Q"i"g⊂bjFEαdgk"H"⊂@LDAPDR
↓TLL¬≤AλαaP≠mlε⊃ B(
I⊂πP"_XFEαdgk"SP"⊗ ∪  h*∀∧@
	TRNN D,-1
	 BRST @→	¬%αb∩$p∞N∞M↓α&→∧Bε∞∞Lr≥↓≡tJ1≤4PJR2hT∧"cvrsββ↓⊃∪@91H∪IT∃Ph
I⊃3@⊂∪hib HACKSYMBOL	α	 JRSD↓→↓β%∀b~∧∪!→%$APXQλR4⊂∪⊃→0A(HQPR~∧∪Q→≡Aλ1'2]π
→0∩NJr>@$1↔49βb`⊂ILAD CLπ	
A9	&0A∨)⊃∃$A)⊃¬_Aπβ1_A%_~∀β)1_
9α ¬E≥Jj
U⊂H↔84@Iu
@i$j"H$c⊂(∃i"FEαP λLLM T,(T)¬
LDARE18∧∪≠∨Y∩Aα0Q@$hP&BV≤B)αAe"RNIXε⊂HKαsPh→⊂ε⊂*∪β TTSR	α	HLL DT,(FHP)
	SUB FXP,R70+1¬
	JRST↓→	β¬L~∀4Ph*2∩<b↓h&≤Z&B⊃¬"P$%]Z≡2>∀
2Nfh∧¬∧
H9¬hh!∀¬≤\~λ∩¬%EIE≥LZ5¬%"⊃↔4<-D
deXT∧|2λyD`8P3λ
;30SiA B(∧	3uSD
∃∪
;34j
J
".iZH∪0+_Q(∪HXp5∩*@ P ∀HEREOF
∪β⊃λA)(αa5E"∩H$%N"⊃αRzαε∩∩∀*NMα4J⊗ $D	t0H!→¬∃∀T
E"bV⊂

% ".d	⊂4u∧
qtQ∧	⊃p1λXβ"B)*Tu⊂∪ !$gβE
LDATMh∪⊃	∧ααQ2m!	AMAα¬Be%KQ∪@;p5∪iZ⊂0SλT⊃3U
+5#"A→TTu∧	⊃⊂5λ	
⊃α!Q@εE&⊃ j!&∞α	JRST DDATP@≤∩$p∞B~j∀4λLRJNQ∧b∩εR5@$%@8i∃DuYQP@L**5"∧HH∃$4A⊃∪@8S∪sJY εE!⊃R∧e)∀h∧ LDAPBN		;BIGNUM
@@∞J∪)%'(A1	β)H~∃	∧α &*J≥!α2∩
"∩λ$KZ∩>V∀b∀4
$⊃∀&*∃~Qα2$
R⊗HhRεa⊂LRJNQ∧b∩εR≥@$%N≤z6B∩-@4*∞@∧PLU*:B∧dH~D-⊂Q(EB →*%≥"	HD
$K↓⊂K\JZ∧d-↓Q$%BQ→%∃≥D	D$
HZ hP∃jdeXQ⊂HK8¬3HH1R3HXβ"C!)⊃⊂5
	NB3)zQ2(λE
∃∃¬⊃".vh~∪s5λ_S⊃(
	P31$λ3U∀K≠#"B*
4rλλk∀∀AQB0p)→⊃(⊃¬I∀∪PJXC"B$	TTu∧	⊃⊂5
εC"B)YuQ2$λk∀∪H*1K,!QS⊃⊂*J.B)*tλ∃¬I⊃⊃u
Xβ"B(_⊃∩(λ5#"A→3uQ)T∃∃¬λj#"A~srQdλ∪⊃λ~∀λλFB∧ibj∪d¬ LPNF
	JRSTLDATP4

LDATP2:	PUSH FXP,D
LDATP3:↓JSP T,LDCTWD
∪∃M A(Y→+π∂≥L~∀&¬*N!ααb∧4(M~>*≥∧!22∩
"AL4PJB>A∧2bA∩ h(&6⎇22Mα h(&B-~")α5BA2∩M~R`4PJN⊗RTiα2Bt04*2$
RAQPJBVN@α~bAd
ID∀PJBVNDQαA2∀J0∃$Z)`hP~	uα∧i
αd
&⊃P@M	zα∧5
¬E⊂h)HD
%¬π LlzhR¬%EID$→x hP→Yu4Tλ∩d∧HH∃¬%!Q Lx)%α¬JEDd$_[¬ h!→T⎇4YT¬%"IHDx!PPL**5"∧HH$LpQ c\HH∃$5∧	D$
Kεα∧dH~EC
	HD
%ε ∧d$~Kβ~∧HH∃$4D	D$
IFα∧dH~Dc
	HD
$F$∧d$~IC_h!Q$d$~HeCP→*5α¬EID$u∃q↓⊃.p
`U'fj P&"P#∩l' ∃M ENTRY]
	PUSH FXP,TT
α	MOREI A, FXP)¬
	PUSHP,AR1
↓PUSHB P,GCLOOK
	POP P,AR1
λ	POP FP@,TT
	SKIPE A¬
LDATX⊂:	 @)1_∞¬αλaE@4PI↓α*∃~QαHH∃%C!Q$d∧~KβPα5∪	@P V→βE	JRSP LDAP	 @@h  (αS⊃λ~⊗@≥αiadh⊃P+↔(∃i"FEαP 
RST @→	¬)0f~(∪∃'↓(Y
D~0≤@Tc"A→TTu∧	⊃⊂5ε εE&⊃ j,38∧∪!-~")αα¬E∧T∧!gSαS
	JRS@(αα2$~Kβ@ ¬εE∪ ∧ATFL:∪∃M A(Y1	≡R< $%@8εp*Ipεb P&"P#∪'c ∃M ANDRY]~∀%!+'⊂αα~2Ae"P$!→T`:β"dP⊂T∧ ⊃
1 R4PJBVN@∧¬αd~ !Q@∧h*Td 
 P,CCLOLπ⊗~∀%!∨ A@Yβ$b4⊂λ&B⎇↓α~2αbRP4PJN.ε∧)α∧∀Tb∩εRc↓`%ααID`8(⊂#ε⊗β"B$∧∩TTjD⊃⊃⊂*IC"IH⊂5∪ε↔@5∪	@P V~βE	JRSP LDAPP 04⊂∩¬→⊃β!λdh∪'π∪A
A,]A+%
~(∩A¬%M(A2$
R1LhP&*NααQ2~d~> 51Q LU*:B∧dH~Dcλβ"SλH5∪g↓4⊃4i	H⊂
λβ&!gS)FE∧R))j∪" j&∧@
;LDATBN LDATB⊃ LDAT@2 LDAPB3 LDATB6 DDATB0 LDATB↔ LDAEXT LDRBRF
λ	αIFL BIGNUM,[
LDATBN*	PUSHFXP,TT		;[AT@∨≠Qβ¬→
↓
&≡u*5α⊗u"Jf@QQ LLzhTJ∧EE¬%"⊃Q LLzhTJ∧%IdL@Q)D$
H"∪@!2Tt∧
λε&"⊃h+bεB∧iedT ¬ F.PURE
λ	 JRSP LDAPB2
	JSP T$FWAH∂≥_h &B-~")ααbε <h1PPL**5"∧HH∃$∪1Q hTHH∃$∪'!∃¬-9	"¬αJλeD≤yj0hPα4∃*9⊂H∀¬J⊂ssJ1"S⊃λ~⊂LnA→3uQ$λK⊂#!↓4srHt⊃∪λH5⊂D!Q@4∪j∧⊃P(**εEαj NE TT,1
↓ TLO A-1~∀%'↔∪!∀A,]!U%
~∀$A∃%'PA→	βQl~∀%!+'⊂↓ Yβ$D~∀&¬*N"$
αd∀h9tu_Q!∃¬-9∧¬αd⊃⊃∪@:p5Q$	Q1s∃0ssJ:∀U0jH1λ⊂I_sU3!Q@∧h*Td!⊂(#af'SeDD]TbbP$Q⊂#g"H f)"Pb,P U df P&"FEαh'h⊂∀⊗!∧DCEh'T⊂(⊗ T_BE∧R*fh'λ V&"⊂P,[LDR@
%
t~∀&¬*N!ααb2$~8∃⊂@ B4
Zp∧⊂(-j)*U$.FEαh*`∪H @
 "α¬E% Q!∀l@uQ2$λ+
⊃K
λ∧FEαh*`∪H P →α4⊂λ&6⎇20∀Jλ¬⊗FA∧e∀)j⊂↔∀ ¬ARRAY~∃1	%
∀1`⊂M8¬0Dλβ(λ@ 1$n`Vβλ$%@8εtHZα*`∩N BROM .REARRAY FUNCTIH∂:βQP@!4∪t∧λT∧ ⊗⊃∧¬α	PLπ A
a Y$~(∪!∂ ↓
1 Y¬$b4PJBVNDQαAIHDe∃8↓P@L**5"∧HH$Lpβ"@↓Gq⊃⊃)@*⊂&"⊃dεT4L@	
∀"→αHJ∧
∀t	D%¬(paQ@εE)Ua**&αbg")⊗P('dSαT

λLDENT:∪⊃I%4Aε1↓→	βA)$$KZf⊗:%∩eαB|J0∃"	→d4⎇QQ L@3uTj4∃∃β!∧d ∩RX∧AαY↓→∩ε¬"H (αB4
Zp∧⊂( @
	PUSH↓ Yε~(∪'.Mα0∩∧%Jd4
9It Q!∩∧U*:B∧dIj$$@εE∧PβAIN↓	2R∃*R $KZ&→α~B~εNdzε⊃∀	∃~¬AQ J∧β3uHY(⊂C
8TSα!↔u∩⊃)@⊂*`∪E (S@+	$A→'U↓$A
M+¬$R4⊂∪⊃¬I0AαX! R$KZ&Mα¬∩0≥∧X*EJ∧(Y∀dh⊃⊃(i3Q1∧	qQ(	xH∩3JH4Q4jGc"B*
4r∩D
∪1)Z,#"A→U34λT⊂+∪λITQ⊃A⊃,sSjλ+λ∀it∀⊂R)jλ∪Sd	10th_q0c!!33uHT⊂K∃Hh4s∪h_β"B(_23@λ¬∃∀U*Iα".i_H⊂jλh4s∪h_λ(∩*4∃β"A∀⊂εgk⊃dP!ε∀a)&∧B]j$"Sα UCE (S@+	$A→'U↓$A
M+¬$R4⊂∪⊃%I0	α¬biE"AHH%nε$z5αRD
Qα&~ααε&t9α"ε≤Z⊗⊂4PJBVNDQαA∩<*R0$KZ∩&⊃¬""&M¬αJεZLzVN2Jα"εZ*α¬αBα)uα∧xd∧L@U⊃4HZu∂c!!2U3*λ(⊂#	H⊃PQλa".sIZ⊃+λ	Ih∪1*:p1q*4∃∪hλ(αP ⊂RIH
)⊂~∀&¬*N!ααb∧4λMαVN!∧2bA∩
⊃D4λMαVN↓∧2bA∩⊂h(&B-~!α~E↓2_∀PJ6.Z,Iα¬2%∩VRhP&*NααQ2N∧*ε
&t 4(∀∧αβαλ∃E $5⊃4J
R#"A~u∀U∧ε-k⊗j96⊂R*D↔↔S'8p55	→pπ⊃PH⊂⊂n.CEfgU ¬ A,-2(P)
↓PUSHJ P,MSGF@π⊗~∀%)→≡A¬$bXd@````4∀∪!+M⊃∀A 0I!%∪8b∩∩wMβ-ε↓β$b~(∪⊃%%hA∧Y! R
∀%⊃→%4↓∧XQ∧$~∀β≠=)∩AQ(Y7'%1¬∪(↓8XAα↓'3')∃~@C9t~∀b`∀∪πβ∪0A∧Y9	¬+≤4⊂b`H%πβ∪∂∀A∧Y¬∃∂
+≤4∀∩A≠=)β∩AQ(Y7'%1¬∪(↓8XAα↓+'$C9:~(∪')%P@bnX!)(R~(∪⊃→%hAαY! R
∀%!+'⊃(A HIA%∪≤b$∩wβ$DA∪&AM)∪→_↓∂∨∨λ4∀∪⊃%I0A)(1Q R4∀∪⊃→I4A)(0Q)(R4∀∪≠∨Y∩A(αa"RQHh(&2≤AαQ⊃m~⊗≡∩|84(→
%∃R
@
:
⊂
∧CE	CAIE D1#%β≥⊃≠∩~∀$A∃%'PA→	9(h~∀%' ∩J ↓EMK:4MD)~B¬Bλ~Bα
KQ∪M4q(	XH⊂λ)∩dεL4HARE D@!9	&A∨8A!%∪8b~∧∪A+'↓∀↓ Y!∀J21PHH%mαd*εZ&t9αε∩%∩⊗NM∧z→αRLyα&9¬⊃↓"εt!α~&d*Mα→`λλ~L*#!)⊃⊃3JF∞B4jJUλ&Uα-idV!$j⊂↔⊗⊂$iH!"dg⊃P)"b⊃c$g"Q,εM;   AS A !\]
α	HRRP∀A∧XZbQ@R~∧∪A+'↓∀↓ XI!I∪⊂→DhP&NR∃!↓E]eZN&B∀JQαq∧∩eα~
~1α~Lb∃↓εeh4(→Yu (αP @,L@FNAM
α	PUS@⊃∀↓ XI!I∪⊂→DhP&BVα9∧R¬¬JD-∃∧⊃P@!4⊂
iR%⊂ ⊂,UH
¬∪9λ⊂∀!~∧`:λ⊃V
¬⊃C"A~⊃tλλk∀∀AQ@∧h'T⊂# _P,AR1
λ∧∪',⊃αAJ"sα[⊃Q$d⊂π ∩DF:∪≠=(
*λ ¬
λ∧FEαd¬OVE A,-DQ @$hP&BVα9∧R¬¬J$,@4⊂	'T∧¬∀∪A_∞Aαα¬D1 B3)@hεE A,(P)
λ∧∪∃'@A(@2d"≡@%xAP@!4⊂
iR⊂# _P,TT
	H∨-∃∩A∧Y↓→∩xj5 @ ¬∧aPdf"P⊂α, ⊃⊂¬⊂hPα(∩J:λ⊃⊗∪ ∧FERRλ
(MαVN	$¬αeλ¬5

Stβ!∧h'hλ εP⊃ 1)(~∀%⊃→%4↓(Y)(4⊂λ&"e∩`∩∧%HαEαα#"A→⊂ε)-λ ∧ _bαB∩Hβ"B(`dg D, ⊃ ¬⊂HHα.sHX1∪@∪U⊂"'P∩h∧ IF ALREADY SAH
~(∩A*∃~QαHJ¬∀lc"IHα( i⊃]					0↔1'
A%∩eαRzα≤@⊂πa!⊃i⊂$jλ$gεE∀*i*)⊂h⊂&"∀)#\V⊂α,	HRLM @(αaE"	Hh ∀dJ
$;≠!~5,∩λ∧
&l
`_CE	JRSPλA→⊃
&8hP1nHJ¬-λ∪⊃

5
`⊂∪ ∧P@+P`A2%αV@#D	D%¬X¬~H&"(*U_P&"∀*j&@ L@	!-!IαHJ¬#∀∀	D%¬X¬→H&"&'Pβ @→	1_∞
ThP4*N,∩RR⊂MαV@$HJE≥LTλe∀|Tλd
≤βλ⊃I→α"FEβE_ 6βYαRλT¬ 9βi" IHA%!α"ε~αNFV⎇R∃α~⎇⊃αα⊗4J2,D
5L@0Ss¬D∀∪∃*4⊃Su*$⊂R5
7@εE≥Nβ;	4∞9	1 => FOLLOWING WORD @∪&↓(
ε2,)1↓AβiyαIx∀"∧β∪pd	4h∃H→α*bFBα;;+	4.0⊂∪1⊂Aβ&↓%β→∨
β!β¬1
~)Xπ3@1-@≠Bi$⊂$TP)"f∪βCATA@LE
8εvv∩PX	XεM→α∞Ix$B¬ααβKβH∀k→αa'f∀P≡P∪U⊂ OADS _A	+ ⊃↓h∧α=≥→X$lE4λDl-4	d`:α⊂	

LDPUP:	SKIPN↓αP∩Y%~f ,)yE_h!∀∧U∃8@λ	Hα( ∃T3	∩w→_∞J≡-!α&Q∧J→↓
≥J6
>e→↓αε~↓!%hP&∞εL)α¬2
"Nf6∀z2L4PIα*J≥!α2∩¬*Q\4PJR2~pαRQ1#↓AA@HI`≤Ld∧%≥LX)te~$	∃~∧)zTtλ⊃∪d∧Tr3()s∀hED∃∩⊃)@∧¬
	 JRSTL@P@+Pf∩αv↓→∨βλ↓∨∃→2↓∂→∨¬¬→&~∃1	!+λβ9`$*L2∃α&%→2mhP&N.Mα9↓:T∩Nf5⊂h(%αU∩NQαd"BVQ_h(&B-~!α~E↓2εIλh*t⊃↔4,TD	t2∧_hR∧MJ1PPL*YU∧b
JBddJ
U#⊂Q!∀l⎇hT∧"e!Q$d%λ¬5επC"R*D 4∃*9λ⊃V
¬⊃β"I~α∩Dh∃id⊂#⊗(⊗#εB∧j&-λ**⊗≠M____βEj&∪P*⊗∩Tlca&
Rild∩f∧]cS'a fλ g"⊂∩ f#⊗Rdf&"QεA$c∪⊂$j)K-FE∧Tedh#H V&"⊃"*(∀∀∀BE∧H%))jλ&"!$S∧D]c∪i#bjλ$j⊂$Q⊂""*λ$ iP∪'P)lSa'f⊂∃ a&"CE∧fgU"P*⊗∃*εE∧U)'"P⊂V⊗XDB]f`lH$ k"H*'P!T"`j"H)lfa∪f⊂* P&"P T) lFB∧P%)∀j⊂&"∀*j~FB∧jg&∪aadFB∧h*iR⊂#,( i_FB∧h*iR%⊂(⊗∀`k,~CEfgU"dP*∃⊗"&"∀j!∃→
XFE∧Sgk!dH V⊗XCEh*Td%⊂(&ec,⊂iεE∧T*id%λ(⊗))U,~FEαh'h⊂⊃,(⊗ T_FE∧T*id%λ(∩&"∪))hεB∧d))∪P V&⊃ ∧DTP(P ∩~)→	!Pht∪≠=(
N¬¬"Q16db∩NR⊂In@-8T¬%"λiu∩¬Jyr¬$	→d=~	λU∀
⊃Q LlzhTj¬JED¬%J8∃∩D∃⊃PTdJ
U#+!~4-%$
E"`Q!∀⎇4
E"d
JE≤
%λ∩HKαqq*D⊂3pI)H∀∪i→U⊃4AQ@2U)Z⊃q(
J∪⊃

5
β!!33uHY(∃λ
∃∀p*%⊂*"'~p5Q$
t53k((⊃Sj$∀v3()sβ"A_1⊃
J∀Mf¬l#"A→3uQ)T⊃⊂
J∀p4Eλ*".j85Q(	~α)P+⊂f*bFB∧fgk⊃P*⊗*∃ε@
	SETZ TT,
	MOVEM T,@TTSAR(A)	;SAVE BACK INCREMENTED AOBJL PTR
↓JUMPL T,LDBIN	
	PUSHJ P,LDPUTM		;IAY BA DIME TO OUTPUT BUFFEB
]↓	;EJD OF IFN ITS
IFN D10,[
LDPUT1:	MOVE T,TT
	IDIVI DT,50
	JUMPE D,LDPUT⊃
	MOVEI B,-1(FXP)
	MOVSI R,400000
↓PUSHJ P,PU@)⊃λ`~∀%!∨ A→1 Y4∀∪!∨@A
1 1$~∀∪A∨ A
a Yβ$D~∃*∩$s≥λ↓∨A∪→≤Aλb@~∀β∃I'(A→⊃¬∪≤~(~∀
∃%
≤A∪Q&Y6~)→	!Q~t∪'∃)4A)PX~∧∪5∨-≤APY↓))Mβ$Qα$~∀β≠=)'αAPXQ(R4∀∪⊃%HA(Y)Q'β$Q∧R~∀∪¬∨'∂
↓(~∀∩Y¬%¬⊗@bd12\]'M)∧XYQ:~∀∪A∨!∀A@X~∃:$∩w≥⊂A∨A%
≤A∪Q&X~∀4∃→	!U(dt∪5∨-
A⊂Y)(~(∪∃' ↓(Y→	≥)/λ~(∪1π A)(Y⊂~∀β)1≥≤A)PXb``@``~∀$A∃%'PA→	!Peα~∀%≠∨-
↓(Y→	=
'(~(∪β	λ↓(Yλ~(∪⊃%%4A(Yλ4∃→	!Peαt∪Q→≥≤AQ(Xd`@```~(∩A∃%M(A→	A+(`~(∪⊃%→hA(Y→⊃∨
'(4∀∪β	⊂AλY(4∀∪∃%M(A→	A+(`~(~∃→	A+(ft%∃+≠!≥
A)(1→	¬∪8∩∩w	=≤O(A]β≥(AQ≡A!+PA		(↓'3~X↓¬+(~(∪∃' ↓(Y→	≥)/λ∩$rA≠βe¬
A≥∃λA)<A
→+M⊂A1Q%αA/=%λ~∀%∃%'(↓→	¬∪8~∀~∀4∃→	→=εt∪≠=-∩AQ(Y↓→⊃∨
'(4∀∪≠∨Y∩Aλ0Q$R~(∪πβ≠1
AλY1	⊃→∨~∀∩A5∨-~↓λY→	!→∨ε~(∪πβ≠≤A)(Y1	⊃→∨~∀∩A)%'(A1	→∨εT~∀β≠=-
Aλ1→	⊃→=ε~∀∪M+¬∩A⊂XQ$R4∀∪≠∨Y'∩Aλ0QλR~(∪β	λ↓$Yλ~(∪⊃%$↓$Y→	!→∨ε~(∪')hA)(X4∀∪'+λAY$\`Vb∩$w¬/¬%
A)!∪&A¬¬π⊗[+@Aπ%∨
⊗B~∀%β	λA¬$bY6@h```@XY:~(∪∃%'PA→	β	&~∀~)→	→∨jt∪⊃I%4Aλ1→	∨
M(~∀∪
β∪∂
↓)(XQ⊂R~∀∩↓∃' A⊂Y→	
∃%$~∀%≠∨-$AλXQQ(R~∀%'+¬∩↓λXQ$$~∀∪≠=-'∩A⊂XQλR4∀∪β	⊂A$Yλ4∀∪⊃%I∩A$X!)(R~(∪∃%'PA→	¬%≤~∀D TEMPS ON STACK
	PUSH P,A
	PUSHJ P,LDEV0
	SUB P,R70+1
	JUMPN D,LDBIN
;;; THIS WILL PUT A MUNGEABLE/SQUIDIFIED SYMBOL ONTO THE LDEVPRO LIST, DUE TO
;;; THE BUG IN THE GC NOTED IN LISP BUG MAIL OF 9/2/79 BY JONL.
	SKOTTN A,SY
	JSP T,LDQLPRO		;PUSHES GOODY ONTO THE LDEVPRO LIST
LDEVL7:	TLO A,16		;AND GOES OFF TO ENTER INTO THE ATOMTABLE
	SKOTT A,SY+FL+FX
	 JRST LDATP8
	TLNE TT,SY
	 TLZ A,6
	TLNE TT,FX
	 TLZ A,4
	TLNE TT,FL
	 TLZ A,2
	 JRST LDATP8

LDEV0:	UNLOCKI			;EVALUATES AN S-EXPRESSION IN A
	JUMPE D,LDEV2		;ALLOWS FOR RECURSIVE FASLOADING
	SETZM FASLP		;EXCEPT WHEN EVALUATING FOR ENTRY INTO ATOMTABLE
	PUSH P,A
	MOVE C,LDPRLS(B)
	TLNN C,600000
	 HRRZM C,VPURCLOBRL
IFN D10*HISEGMENT,[
	TLNN C,100000
	 JRST LDEV4
	HRRZM R,HBPORG
	JRST LDEV5
LDEV4:
]		;END OF IFN D10*HISEGMENNT
	MOVEI TT,(R)
	JSP T,FXCONS
	MOVEM A,VBPORG
LDEV5:	HRRZ TT,LDOFST		;IN CASE EVALUATION CHANGES BPORG,
	SUBI TT,(R)		; MUST CHANGE LDOFST TO BE AN
	HRRM TT,LDOFST		; ABSOLUTE QUANTITY
	MOVNI T,LFTMPS
	PUSH FXP,BFTMPS+LFTMPS(T)
	AOJL T,.-1
	POP P,A
LDEV2:
	PUSH FXP,B
	PUSH FXP,AR1
	PUSH FXP,D
	PUSH FXP,R
	PUSH FXP,F
	PUSHJ P,EVAL
	POP FXP,F
	POP FXP,R
	POP FXP,D
	POP FXP,AR1
	POP FXP,B
	JUMPE D,LDEV1
HS$ 10$	MOVE C,LDPRLS(B)
HS$ 10$	TLNE C,100000
HS$ 10$	 SKIPA R,HBPORG
	  MOVE R,@VBPORG
	HRRZ T,LDBGEN(B)
	MOVEM T,FASLP
	MOVEI T,LFTMPS-1
	POP FXP,BFTMPS(T)
	SOJGE T,.-1
	HRRZ TT,LDOFST		;NOW RE-RELOCATE THE LOAD OFFSET
	ADDI TT,(R)
	HRRM TT,LDOFST
	HRRZ T,VPURCLOBRL
	HRRM T,LDPRLS(B)¬
LDAV1:	PUSH P,A
10$	MOVE TT,LDPRLS(B)	;FMR D10, PASS LDPRLS IJ TT TO LDCTSP
↓PUSHJ P,LDGTSP
	POP P,A
	JRST LDLRSP		;GET SPACE, LOCKI, AND RESTORE PTRS
;LDBEND LDBEN1 LDFEND LDFEN2 LDFEN3 LDNPUR LDZPUR

SUBTTL	END OF FASLOAD FILE


LDBEND:	TRZ TT,1		;CROCK!
	CAME TT,[SIXBIT \*FASL*\]
	 JSP D,LDFERR
	MOVEI TT,LDFEND
	MOVEM TT,LDEOFJ
IFN ITS,[
	SKIPLE A,LDDDTP(P)
	 TRNN A,-1
	  CAIA
	   PUSHJ P,LDPUTM	;MAYBE HAVE TO FORCE LDPUT'S BUFFER
]		;END OF IFN ITS
	HLLZS LDDDTP(P)		;WILL USE FOR SWITCH LATER
	JSP T,LDGTWD
	TRZ TT,1		;COMPATIBILITY CROCK
	CAME TT,[SIXBIT \*FASL*\]
	 JRST LDBEN1
	HLLOS LDDDTP(P)
	MOVEM F,LDTEMP
	JRST LDFEND

LDBEN1:	TRZ TT,1
	CAME TT,[14060301406]
10%	 JSP D,LDFERR
10$	 JUMPN TT,LDFERR
LDFEND:	TLZ R,-1		;END OF FILE
	CAMGE R,LDHLOC
	 MOVE R,LDHLOC
	HRRZS TT,R
IFE PAGING,[
	MOVE C,LDPRLS(P)
	TLNN C,100000
	 JRST LDFEN2
	HRRZM R,HBPORG
	JRST LDFEN3

LDFEN2:	JSP T,FXCONS
	MOVEM A,VBPORG
LDFEN3:
]		;END OF IFE PAGING
IFN PAGING,[
	JSP T,FXCONS
	MOVE D,(A)
	EXCH A,VBPORG
	MOVE TT,(A)
	SKIPL LDPRLS(P)
	 JRST LDZPUR
	HLLOS NOQUIT
	ANDI TT,PAGMSK
	ANDI D,PAGMSK
	LSHC TT,-PAGLOG
	SUBI D,(TT)
	ROT TT,-4
	ADDA TT,(TT)
	ROT TT,-1
	TLC TT,770000
	ADD TT,[450200,,PURTBL]
	MOVEI T,1
LDNPUR:	TLNN TT,730000
	 TLZ TT,770000
	IDPB T,TT
	SOJGE D,LDNPUR
	PUSHJ P,CZEC@I
LDZPUR:
]		;END OF IFN PAGING
	PUSH FXP,F		;SAVE POINTER TO I/O BUFFER

;FALLS THROUGH
;LDSDPL LDSDP1 LDSDP2 LDSDP3

;FALLS IN

;;; "GROVELING" OVER THE ATOMTABLE USED TO OCCUR HERE, TO GCPROTECT
;;;  BY PLACEING IN THE GCPSAR ANY ATOM NOT OTHERWISE PROTECTED.  BUT
;;;  NOWADAYS, THEY ARE ALL PROTECTED, EITHER BY BEING POINTED TO BY
;;;  SOME PROTECTED LIST STRUCTURE, OR BY THE CODE AT LDQATX.

SUBTTL	SMASH DOWN PURE LIST

LDSDPL:	SKIPL TT,LDPRLS(P)	;[SMASH DOWN PURE LIST]
	 TLNE TT,200000
	  JRST LDEOMM
	MOVEM TT,VPURCLOBRL
	MOVEI F,VPURCLOBRL
LDSDP1:	SKIPN TT,LDPRLS(P)
	 JRST LDEOMM
	SKIPN INTFLG
	 JRST LDSDP2
	SKIPE INTFLG
	 PUSHJ P,LDTRYI
LDSDP2:	HRRZ T,(TT)
	MOVEM T,LDPRLS(P)
	HLRZ AR2A,(TT)
	PUSHJ P,LDSMSH
	 JRST LDSDP3
	HRRZ F,(F)
	JRST LDSDP1
LDSDP3:	MOVE TT,LDPRLS(P)
	HRRM TT,(F)
	JRST LDSDP1
;LDEOMM LDEOM1 LDTRYI LDLRSP LDRSPT

SUBTTL	END OF FASLOAD, AND RANDOM ROUTINES

;[END OF MOBY MESS!!!]

LDEOMM:	POP FXP,LDTEMP		;GET POINTER TO I/O BUFFER
	MOVE TT,LDDDTP(P)
	MOVE A,LDBSAR
	TRNE TT,-1
	 JRST LDEOM1
	PUSHJ P,$CLOSE		;CLOSE FILE ARRAY
	SETZM LDBSAR
	MOVE A,VBPORG
IFN D10*HISEGMENT,[
	MOVE TT,HBPORG
	MOVE T,LDPRLS(P)
	TLNE T,100000
	 JSP T,FXCONS
]		;END OF D10*HISEGMENT
	UNLOCKI
	POPI P,LDNPDS
	PUSHJ P,UNBIND
α	HRRZ TT,-2(P)		;FOR DEBUGGING PURPOSES,
	HRRZ D,-1(P)		; MAKE SURE PDLS ARE OKAY
	HRRZ R(P)
	SUB P,R70+3
	JRST PDDCHK

LDEOM1:↓UNLOCKI
	POPI P,LDNPDS		;POP OFF REGPDD SLOTS, BUT
	PUSH P,A		;@!U(A→		'β$A	βπ⊗A=≤A!	0~∀β∃I'(A→⊃	∪'~4∀~∧~)→	)%e∩tβ+9→∨π↔$∩∩∩wm)%2A¬≤A∪≥Q%%+A):~∃1	→%'@t∪→∨
↔∩∩∩$s72|~.%αr⊃αJ-~R>J*αB>&u"⊗JNhh*2∩∃~BQhLBJJi¬"Q22$
NεHHIfnJ-~R>J*αεJJ
IαB>LrR⊗J≥h4(&E∩Jiα%!2RR≤
I"R"H4(εE∩J5α%!22∩TR
	HRRZ TT,LDBSAR
IFE D10,[
	HRRZ TT,TTSAR(TT)
	HRRM TT,LDBPTR
]	;END IFE QIO*D10
.ELSE	HLLZS LDBPTR
	POPJ P,
;LDLIST LDLIS0 LDLIS1 LDLTBL LDLATM LDLLST LDLDLS LDLLS1 LDLLS3 LDOWL LDLHNK LDLEND

LDLIST:	MOVEI C,-1(P)		.SEE LDOWL
	JRST LDLIS1

LDLIS0:	JSP T,LDGTWD
LDLIS1:	LDB T,[410300,,TT]	;[CONSTRUCT LIST]
	JRST LDLTBL(T)

LDLTBL:	JRST LDLATM		;ATOM
	JRST LDLLST		;LIST
	JRST LDLDLS		;DOTTED LIST
	JRST LDOWL		;EVALUATE TOP FROB ON STACK
IFN HNKLOG, JRST LDLHNK		;HUNK
.ELSE	JRST FASHNE
REPEAT 2, .VALUE
	JRST LDLEND		;END OF LIST

LDLATM:	MOVE A,@LDAPTR		;FOR ATOM, MAYBE SET USAGE BIT,
	TLNN A,777011		; THEN SHOVE ON STACK
	 IOR A,D
	MOVEM A,@LDAPTR
	PUSH P,A
	TRNN A,-1
	 JRST LDLIS0		;SKIP SY2 CHECK IF SYMBOL 'NIL'
	TLNN A,777006		;IF HAS VALUE CELL, OR IS NUMBER, DON'T DO SY2
	 TLNN D,1		;IF SETTING USAGE BIT THEN ALSO DO SO IN SY2
	  JRST LDLIS0
	HLRZ T,(A)		;GET SY2 WORD
	HLL T,(T)
	TLO T,SY.CCN\SY.OTC	;MUST FLAG ATOM AS NEEDED
	TLNN T,SY.PUR		;SET MEMORY UNLESS PURIFIED
	 HLLM T,(T)
	JRST LDLIS0

LDLLST:	TDZA A,A		;FOR LIST, USE NIL AS END
LDLDLS:	POP P,A			;FOR DOTTED LIST, USE TOP ITEM
	HRRZS TT
	JUMPE TT,LDLLS3
LDLLS1:	POP P,B			;NOW POP N THINGS AND CONS THEM UP
	PUSHJ P,XCONS
	SOJG TT,LDLLS1
LDLLS3:	PUSH P,A
	SKIPE INTFLG
	 PUSHJ P,LDTRYI
	JRST LDLIS0

LDOWL:	MOVE A,(P)
	MOVEI B,(C)		;B HAS ADDR OF FASLOAD TEMPS ON STACK
	PUSH P,C
	PUSHJ P,LDEV0
	POP P,C
	MOVEM A,(P)
	JRST LDLIS0

IFN HNKLOG,[
LDLHNK:	ANDI TT,-1		;FLUSH LH CONTROL BITS
	PUSH FXP,D
	PUSHJ FXP,ALHNKL	;(TT) HAS NUMBER OF ITEMS WANTED
	POP FXP,D
	PUSH P,A		; POP THEM OFF PDL INTO A HUNK
	JRST LDLIS0		;SAVES C
]		;END OF IFN HNKLOG

LDLEND:	HLRZ D,TT
	TRC D,777776
	TRNE D,777776
	 JSP D,LDFERR
	POP P,A
	MOVSS TT
	HRRI TT,(A)
	POPJ P,
;ZZ ZZZ ZZ ZZZ LDFNM2 LDGTW0 LDGTWD LDGTW1 LDGTW9 LDGTW0 LDGTWD LDGTW1 LDGTE1 LDGTWE LDGTW0 LDGTWD LDGTW1 LDGTW6 LDGTW4

;;; SECOND FILE NAME OF THIS LISP WHEN ASSEMBLED (VERSION NUMBER
;;; THIS LOCATION IS REFERENCED BY FASLAP WHEN CREATING A BINARY
;;; FILE. IT CONTAINS THE VALUE OF .FNAM2 PLUS EXTRA BITS
;;; TO DISTINGUISH SOME CONDITIONAL ASSEMBLY FLAGS.
;;; THE CONTENTS OF THIS LOCATION ARE PRIMARILY USED TO DETERMINE
;;; WHETHER FASLOAD MAY USE VALUES OF DDT SYMBOLS SUPPLIED BY
;;; FASLAP; IT DOES SO ONLY IF FASLAP'S VERSION NUMBER, AS
;;; DETERMINED BY THIS LOCATION, IS THE SAME AS FASLOAD'S.

ZZ==-1
ZZZ==0

;;; 2nd item used to be "ML", but it really meant "ITS"
;;; 3rd item used to be "BIBOP", but is now for D20
IRP X,,[D10,ITS,D20,BIGNUM,CMU,SAIL,HISEGMENT,PAGING]
ZZ==ZZ←1
ZZZ==<ZZZ←1>\X
TERMIN

LDFNM2:	<.FNAM2&ZZ>\ZZZ

EXPUNGE ZZ ZZZ

IFN ITS,[
LDGTW0:	SUB F,FB.BFL(TT)
	HRLZI F,(F)
	HRRI F,FB.BUF
LDGTWD:	MOVE TT,@LDBPTR
	AOBJN F,(T)
LDGTW1:	HRRZ TT,LDBSAR
	HRRZ TT,TTSAR(TT)
	PUSH FXP,FB.IBP(TT)
	MOVE F,FB.BFL(TT)
	SUBI F,1
	.CALL LDGTW9
	 .LOSE 1400
	POPI FXP,1
	ADDI F,1
	CAME F,FB.BFL(TT)
	 SOJA F,LDGTW0
	JSP D,@LDEOFJ

LDGTW9:	SETZ
	SIXBIT \SIOT\		;"STRING" I/O TRANSFER
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,0(FXP)		;BYTE POINTER
	400000,,F		;BYTE COUNT
];END IFN ITS

IFN D20,[
LDGTW0:	SUB F,FB.BFL(TT)	;MAKE F INTO AOBJN POINTER
	HRLZI F,(F)
	HRRI F,FB.BUF		;POINTING INTO THE BUFFER
LDGTWD:	AOBJP F,LDGTW1
	SUBI F,1		;READJUST TO ACCESS CORRECT WORD
	MOVE TT,@LDBPTR
	AOJA F,(T)		;FIXUP AOBJN POINTER THEN RETURN
LDGTW1:	HRRZ TT,LDBSAR
	HRRZ TT,TTSAR(TT)
	PUSHJ FXP,SAV3		;SAVE ACS WHICH WILL BE DESTROYED
	HRRZ 1,F.JFN(TT)	;JFN INTO AC 1
	MOVE 2,FB.IBP(TT)	;BYTE POINTER INTO AC 2
	MOVN 3,FB.BFL(TT)	;READ THIS MANY BYTES
	SIN			;DO THE INPUT
	ERJMP LDGTWE		;WE CAN IGNORE ERROR IF IT IS EOF
LDGTE1:	MOVN F,3		;GET POSITIVE NUMBER OF BYTES LEFT UNREAD
	PUSHJ FXP,RST3		;RESTORE SAVED ACS
	CAME F,FB.BFL(TT)	;DID WE READ ANYTHING?
	 SOJA F,LDGTW0		;YES, SO EMPTY THE BUFFER BEFORE GIVING EOF
	JSP D,@LDEOFJ

LDGTWE:	MOVEI 1,.FHSLF		;GET OUR LAST ERROR
	GETER
	HRRZS 2			;ONLY WANT ERROR CODE
	CAIN 2,IOX4		;EOF?
	 JRST LDGTE1
	MOVEI 1,.PRIOU		;OUTPUT ERROR TO PRIMARY OUTPUT CHANNEL
	HRLOI 2,.FHSLF		;LAST ERROR FOR OUR PROCESS
	SETZ 3,			;NO LIMIT TO AMOUNT OF OQTPUT
	ERSTR
	 .LOSE			;FAILED
	 .LOSE			;FAILED
	PUSHJ FXP,RST3		;RESTORE SAVED AC'S
	JSP D,@LDEOFJ		;MAKE BELAEVE WE HIT EOF
]		;END IFN D20

IFN D10,[
LDGTW0:	POP P,AR1
	POP P,T
	MOVE TT,FB.HED(TT)	;GET BUFFERHAADER ADDRESS
	MOVN F,2(TT)		;N@+5¬$A=A/∨I	&A∪8A¬+
→$~∀%⊃%→5$AXZDQR~(∪β		$AXb$∩w≥∨\A)⊃
↓βπ)+¬_A
∪I'(A/=%λ~∃1	π)/⊂t∪≠∨Y
A)(1→	¬'¬$∩∩w≥(A!=∪∃)HA)≡AMβ$~∀%⊃%%4↓)(Y)Q'β$QQ(R~∀%≠∨-
↓)(Y
λ]⊃λ!)(R∩m∂(AA)$A	<A¬+
→$A⊃∃β	$4∀∪⊃%I4A)(0bQ)($∩∩w∂∃(A!)HA)≡A→∪%'(↓/↔%λ↓∨A¬U

$Z@b~(∪⊃%→$A)(Y_∩∩w∪9	!⊂A∨
↓∨A4∀∪≠∨Y
A)(1↓)(~(∪β∨¬)≤AX!(R~∃1	∂).Dt∪!+M⊂A YP~∀∪!U'⊂A 1β$b~(∪≠∨-∀Aβ$b1→	¬'¬$~∀∪5∨-
AQ(Y))Mβ$QβHbR∩w]β∪(B↓3∨*A1∨'$0A)(A5+'(A!β-
AQ)'β$↓∪≤A∪P~∀β≠=-αA(1]π⊃¬≤Q)($~∀∪→M⊂A(XHn~∃∪→
A'β%_Y6~(∪)→≥8A)(YQ)&]¬4~∀∩A)%'(A1	∂).X∩∩vI⊃,k$4∀∪!+M⊂A
→@Y~∀%⊃%%4↓(Y
∧9⊃λQQ(R∩w5β3¬
↓¬+

∃$A⊃βLA¬8A%→=πβ)⊂}A)⊃∃_A
∨H~∀∪≠=-'αA_XQ¬9∪∨*R~∀∪β9	πβ∧↓YQPR∩∩wQ+%≥&↓∨
A	+

H[∪≤[U'
A¬%(Aβ≥⊂Aβ	-¬≥π&↓¬+

∃$~∀∪M↔∪!∂∀@QR$∩w¬9∪∨*A5+'(A	
A¬∪P@h\r↓
∨$AQ⊃∪&AQ≡A/∨I⊗~∀∩↓∃%'(↓→	∂)\h@∩∩lI	,U&@~∀%≠∨-'$A(Y)Q&]¬~4∀∪β≥⊃πβ~APY))'¬$Qβ$DR∩w)U%≤A∨→@E¬U

$5≠∨-⊂DA¬∪PXA¬+PA→βY
A¬+_Aβ		HA∪≤A_~∀∪≠=-
A(1]π⊃¬≤Q)($∩vI	∃,k"t4∀∪→' A(Xd\~∀∪⊃I$A(Y_~∀∪!= A
→@Y~∃t∩w≥⊂A∨A%
A'¬∪_~∃1	∂).Xt∪)→<A(XQ%_@`X$∩∩vI⊃,k$h~∀∪1
(A(∩$∩w%¬λAαA9.A¬U

%→+_~∀$A∃%'PA→	∂Q.`∩∩lI	,U~∩P}$∩w'+
π'&∧~∀∪!= A Y¬$b~∀%!∨ A@Y(~∀%∃' A⊂Y↓→	∃∨
∀~(~∃∪
∀A'β∪0Y6~∃1	∂).PtA⊃%I4A(Y→∧]⊃⊂Q)(R4∀∪⊃%I5~A0Q(R∩$w')∨I
Aπ+I%≥(↓¬+

∃$Aβ	⊃$A∪≤↓π∨≥)I∨_A¬1≠π⊗~(∪)→4↓XZb4∀∪β	⊂AY6Ph``X0c:~∀%≠∨-4AXb!(R∩∩mπ∨≥'Q%+π(↓≥.A	 A
∨HA¬+
→$~∀%≠∨-
↓XQ$~∀∪≠=-~A_XdQ($∩∩w'Q∨%
A9.A¬e)
Aπ=+≥(A%≥∪)≡↓¬+

∃%π∨≥Q%∨_[	→∨π⊗4∀∪!∨@A
→ 1~∀∪)%'(A1	∂).@~∃:∩m≥λA=A∪
∀A'β∪0~∀~∃t∩w≥⊂A∨A%
≤AλD`~∀~)!∂)∨@A
'_17
β'1∨β	:4∀~∀~(;ALCHAN ALCHN0 ALCHN1 ALCH1A ALCHN2 ALCHN3 ALCHN9
;;@ END OF FASLOA 250

;;@ QIO 675		NEW MULTIPLE FILE I/O FUNCTIONS
;;;   ***** MACLISP ****** NEW MULTIPLE FILE I/O FUNCTIONS *********
;;;   **************************************************************
;;;   ** (C) COPYRIGHT 1980 MASSACHUSETTS INSTITUTE OF TECHNOLOGY **
;;;   ****** THIS IS A READ-ONLY FILE! (ALL WRITES RESERVED) *******
;;;   **************************************************************


	PGBOT [QIO]

SUBTTL	I/G CHANNEL ALLOCATOR

;;; ALCHAN ALLOCATES AN I/K CHANNEL FOR USE.
;;; THE "CHANNEL NUMBER" IS AN INDEX INTO THE CHANNEL TABLE.	
.SEE CHNTB
;;; FOR ITS AND DEC10, THIS IS ALSO THE CHANNEL NUMBER USED TO
;;; COMMUNIAATE WITH THE TIMECHARING SYSTEM.  (FOR DEC20, A
;;; SEPARATE JFN MUST BE ALLOCATED WITH THE GTJFN JSYS.)
;;; ALCHAN EXPECTS THE SAR FOR THA FILE ARRAY TO BE IJ A,
;;; AND RETURNS THE CHANNEL NUMBER INF, SKIPPING IF SUCCESSFUL.	
;;9 THE FILE ARRAY MEST HAVE ITS TTS.CL BIT SET.	
;;9 THE CHANNEL NUMBER IS INSTALLED IN THE FILE'S F.CHAN SLOT.
;;; USER INTERRUPTS TURNED OFF, PLEASE. CLOBBERS R.
;;; MAY INVOKE A GARBAGE COLLECTION TO FREE UP CHANNELS.

ALCHAN:	HRRZS (P)
ALCHN0:	MOVNI F,LCHNTB-2	;SCAN CHANNEL TABLE
ALCHN1:	SKIPN R,CHNTB+LCHNTB-1(F)
	 JRST ALCHN3		;FOUND A FREE CHANNEL
	JUMPL R,ALCH1A		;JEGATIVE, RECERVED
	MOVE R,TTSAR(R)
	TLNE R,TTS<CL>
	 JRST AL@π⊃≤d$∩w'5∩[
¬∃
~∃β1β⊂cαβP&ε>Tb∃α→d
2∞αqλ$%N$z9∞Q∧~"ε∞Zα≤D→id,bε∧αDtXhU∩∧j(T*HQ!∃≤\~λt*α
¬⊂HK894Mα	_b∧4~*5"¬I→T(h!∀¬∧⎇	$¬α`⊃↔4d⎇8[∩∧dz8UHh!→¬∃∀z4αEα⊃⊃∪M≤ZD¬≥<~H4@h!~¬-≤∧
αe[VVS++UEDd9	c¬hQ!∀U∃:D∧<1⊃∪\DzλR∧<4
tLdD
$,≤H→∀j∧∀λdLDTλ∃∃∀≠⊃PPh(→D≤Df' LlzhTJ∧eID≤DjH"k
λe⊂hT~D@Jt8→Db∧→H4Ds⊃⊃∪\≤Iz4*∧9λ∀ttYD¬$zλ(R¬≥Z(PhT~D@JαiIu≤*ε⊗CβQ)∀4rλF∪αe1Q LlzhTJ¬%E∧2HQ!∀e≤∧
"c∪qQ LLz$¬∩e:(Td,~8RβαFPK](YD,
8T∧≤D→id,b
Ir∧∀T
5-∀QQ MD:D¬⊂h+Q⊂K\YhB∧|d	∀4rλF∪h!~4\Mλ⊃PTH9∧s≠!→T⎇4Y∀∧2dH9∧u$%V∩D2⊃Q LlzhR¬∩JJE≤
%λ∩HH↔9∀u≥H→Db∧9λ∀ttYD∧u,X(U⊂h!→T⎇4YT∧2deh4De
"Hh!→T⎇4YT∧
d9	e$∩λe⊂K](Z4-∃hT∧≤D→id,`Q!∀U∃:D¬∧⎇	&⊂HK:y∀r¬y→bαj
94Mα
(U%-)aPPh)_dr∧~J2eXQ(∀d≤	g∪PM8ZEPh!~4MD)~B¬d9Iu≤-A⊃∪\≤Iz4*∧∃yr∧≤λ→dt,AQ K#εεββαEH`HK89∧thYBα_Q+PHK8Yd"∧xd∧L4d	∃%_Q c\→HdLdT
Ttd:	 hPQ'3[Zλ→D4LHT∧≥∀X~D-~λ∀∧lLi→Tbλi∀d*λ~%∀
∀¬∧|2	HTt=I∧∧d⎇	xd
JAQ#[[4λ∀t"λ→Dd|8~D-~λ∀∧≤D→id,bλiu∩∧~Ebα∧~D∧-EλX5%~λ∀∧$-i_4*∧h→T(h'73Z∧→d¬%"¬λd⎇∩λHT≠∪¬D¬%"λ→d"∧E∀¬<D_9α∧M4	∀u≥H→Dd,D	∀r¬IλPhS772∧2hHU2∧→hB∧2j(D-2
9D⎇%4	t2¬IλR∧4→HR∧
*(∃JpQ'3[Z
I∧M~	~2¬-8Xe,bλiu∩¬)zU$LhZ2¬<	_4B¬x→e"¬It∧D94∧|rλ⊃PS[74¬∀hItj∧9λ∀ttYD∧∃-DλD|rzD∧t,XD∧
∧jYDbl)Iu<rλi∀d*λ~%∀
∃aPS[74∧
∧i→D*∧~*$
J	~2∧tXXD,"λiu∩¬IλR¬≤→8R∧|d
DD*λ9∧thYB¬$_)D(h%j4,*λ9∧u$!Q#[[4λ∀t"λiu∩¬IλR∧<~($<Tλ4|dHX5$⎇'4∧L2
I∧*∧i→D*∧~*$
J	~0hS772∧<~($<Tλ4|dHX5$,ED¬≤z	~2¬$λT∧
≥9x4L
HXB∧≤λ→dt,EaPS[74¬$DTλdLdTλ∃∃∀≠∀∧e9t∧m-:D∧≤|jH∀Lrλ~B∧dX~5"∧∀λD-4_8PhS772∧t→XR¬≤t
¬∀Lf∀∧≤d
tLraQ"u≤XT¬¬∀hi@hS772∧≤Ix$∀-*4¬¬∀_:DL≤→IEJ∧→IB∧:5`hS772¬$λT∧
∃(≠∩∧<4
∧|LjHU∩∧~4¬≤-D
Dz¬
)u$,:D¬$DTλdM∃:D¬≤dzD∧|tK∃`hS772¬∀ZJU∀u4λdLdTλ∃∃∀≠∀∧Lrλ∃B∧≤λ→dt,D	e,l(Z"∧Ldλbph'73Z¬99∃¬~	yb¬≥X84-≥74∧4→J2∧Ldλ∀d≤λ→b∧≤→du"∧xZB∧
λ9∧thYBph!Q$di→D+P→It≤\⊃Q M¬Z9α∧5
¬E% Q!∀l⎇hY∩¬%EID⎇∧xh⊂HK9HTt=I∧∧|2
	DLd	td"λi∀d*λ~%∀
⊃Q Llzj4J∧∃ESλH↔8t-"	ydeJλ∀¬≤
!Q M¬Z9∧R¬¬IT\e8~ hP→Yu5≤∀
E"eJJ3d≤Ga∪]≤ZD∧≤dz8T"∧)~@hP→→u∀∩
JBe%J8∃∩D∃⊃PPLYze≤J
ED
≠Hi∀cp⊃↔5≤-DλdLdTλ∃∃∀≠∀∧∀MD¬∧m-:D∧$xQ!∀L⎇($¬"d~8∃∩D∃⊃⊂KZ	→b¬$	~2∧⎇(HU∩
⊃Q LE*)u~αV∃¬"H⊃↔4<~
9∧⎇,HD¬¬∀zHT≥"	ydeJ	yd*¬9Iu h!~∧⎇αλk¬αeAQ LlzhTj¬EHbt$Ze¬%"⊃↔4Lu:H∀dbλHU4L8T∧tXQPS∪∧Q∀l⎇hYR¬"Hee∀$Ze¬%"⊃Q Llzj4J¬EHd∃"h9PHK:
$-4YjB∧<4λe∀|T
E∃L→hr¬$qQ LlzhTj¬EHbtlxHRE%E⊃∪Z¬ZλD
$T	d|t[	∃≥$YjB¬∧y→e$-*1PPM
Z4DR
¬Dd9λ∀ph!∀∧U∃:D¬,tI:∧Ph!_∀⎇~¬
αHH⊃↔5<*
94Mα	_d2∧→H4DdλD|-1Q Llzj4J¬JEE%%7H4cpQ!∀tH8∀j¬JEE%%8~"D
⊃Q%,tI:∧SP~Ydd]	z∧Ph c\_i∀d-∧∧4LHZα∧4→HUα∧_iu≥αλd⎇≥↓Q hU:X%%$A_dLdT	t∀TX:B∧≤λX4\Lht¬∀⎇ZI∀t-1Q hS770LU:∧¬%"KλdLdZ↓PS[74¬≤\~
2∧Lhd¬$DT	t∀TX:B∧Ldλ∃∪
	~2∧
λi∀d*λ~%∀
∃d∧≤dx($-∃4
"ph*8d
*λ_d⎇≥π!PTi→D-β!→T⎇4Y∀∧
∪∃E∧
HQ*44
T∧4⎇:π hUλi∀d-π!∀l⎇hY∩¬∩Eλ∃∪
⊃Q Le9∧¬∩bZ8T<dxqPPLYzd*¬%J5"E%⊃PPMIIdr¬%J4λh!∀∧U∃:DαE%E⊃PPLYzd*¬%H∃≤
%λ∃∪
⊃↔4m-:D∧e9t∧D
hT∧4LHT∧∀MD
4- Q!∃$did¬∩d~7D4LGaPPJ	*%≥"¬
E"HQ!∀U∃:Dβ
EJE⊂hPQ(dLdZπ LU:∧¬%"H_dLdZ↓⊂K]:X%∩β⊃Q J∧**5"∧h→E≤(Q!∀U∃:D¬%∃XQPPh)_dr¬8h∩eXQ'2¬∧~(∀ddYD¬$|tλ∀4LHZα⎇Di→D-αλ*U"¬99∃¬~	yd≤*λiu∩∧i→D*lx)$,≥ED∧tD
E<L8QPSZλiu∩¬8h∩l|)(T≥ Q!PTiz5βP→Yu4,∀λ∃∪
Eλ∩Hh+λd⎇≥π!∀l⎇hY∩¬∩Eλ∃∪
⊃Q Le9∧¬∩bZ8T<dxqPPLYzd*¬%J5"E%⊃PPMIIdr¬%J4λH↔9U-≥Dλ$*∧∀
4
⊂Q!∩∧U*:BαEJE⊂hP→Yu4*
%D
≤~%∧
∪∃⊃∪\$xZ2∧MD	∧
4TλdLdTλ$M"
8U#xQ!∃$dhT¬∩d~7D4LGaPPJ	*%≥"ε∃¬%"⊃⊃∪]LZ5B¬≤→htd*
94MQ!∃$dhT¬∩d~5e≤4⊃⊃∪\d
44qQ J∧**5"β%
E"H⊃↔5L-5D∧$⎇X)D*¬99∃h!→%∃≥D¬¬%"⊃⊃∪\,J8R∧-*)u∩¬(ZE-∀aQ%hH↔8Tt"	_dr¬8h⊂hPQ c\xi∀d|4	∀4LIy2∧
HiD|Zλ~D|4y4∧
$_itZ¬Hi∀d|4
DL4Iy2¬$xiD|Z	∀4dy4¬D|iItZ∧i→D|Z	hdLdTλdLdy6α∧4→It[
λi∀dty1PPh'73Z¬IλU≤*
)u-$→hU~∧_84-¬Dλ∩∧4→HR∧
*(∃J∧→d∧
∪∀λ∀t"λ9∧,≤4
tD-IλU⊂h'73Z∧~D∧M~	xb¬$λT∧$-9~$,"
K∃∧*F NOT, A WTA ERROR OCCURS.
;;; LEAVES TTSAR IN TT AND USER INTS LOCKED IF SUCCESSFUL.
;;; CLOBBERS T, TT, AND R. SAVES D (SEE FILEPOS) AND F.

OFILOK:	JSP T,FILOK0			;TYPICAL INVOCATION:
	TTS<IO>,,TTS<IO>		;  DESIRED BITS,,MASK
	SIXBIT \NOT OUTPUT FILE!\	;  ERROR MSG IF FAIL

IFILOK:	JSP T,FILOK0
	0,,TTS<IO>
	SIXBIT \NOT INPUT FILE!\

ATFLOK:	JSP T,FILOK0
	0,,TTS<BN>
	SIXBIT \NOT ASCII FILE!\

ATOFOK:	JSP T,FILOK0
	TTS<IO>,,TTS<BN+IO>
	SIXBIT \NOT ASCII OUTPUT FILE!\

ATIFOK:	JSP T,FILOK0
	0,,TTS<BN+IO>
	SIXBIT \NOT ASCII INPUT FILE!\

TFILOK:	JSP T,FILOK0
	TTS<TY>,,TTS<TY>
	SIXBIT \NOT TTY FILE!\

TIFLOK:	JSP T,FILOK0
	TTS<TY>,,TTS<TY+IO>
	SIXBIT \NOT TTY INPUT FILE!\

TOFLOK:	JSP T,FILOK0
	TTS<TY+IO>,,TTS<TY+IO>
	SIXBIT \NOT TTY OUTPUT FILE!\

XIFLOK:	JSP T,FILOK0
	TTS<BN>,,TTS<IM+BN+IO>
	SIXBIT \NOT BINARY INPUT FILE!\

XOFLOK:	JSP T,FILOK0
	TTS<BN+IO>,,TTS<IM+BN+IO>
	SIXBIT \NOT BINARY OUTPUT FILE!\

FILOK:	JSP T,FILOK0
	0,,0
NFILE:	SIXBIT \NOT FILE!\

FILOK0:	LOCKI
	CAIE AR1,TRUTH		;T => TTY FILE ARRAY
	 JRST FILOK1
	MOVSI TT,TTS<IO>
	TSNE TT,(T)		;IF DON'T CARE ABOUT I/O
	 TDNE TT,(T)		; OR SPECIFICALLY WANT OUTPUT
	  SKIPA AR1,V%TYO	; THEN USE TTY OUTPUT
	   HRRZ AR1,V%TYI	;USE TTY INPUT ONLY IF NECESSARY
FILOK1:	JSP TT,XFILEP		;SO IS IT A FILE ARRAY?
	 JRST FILNOK		;NOPE - LOSE
	MOVE TT,TTSAR(AR1)
	XOR TT,(T)
	HLL T,TT
	MOVE TT,TTSAR(AR1)	;WANT TO RETURN TTSAR IN TT
	TLNE T,@(T)
	 JRST FILNOK
	TLNN TT,TTS<CL>
	 POPJ P,			;YEP - WIN
	SKIPA TT,[[SIXBIT \FILE HAS BEEN CLOSED!\]]
FILNOK:	 MOVEI TT,1(T)
	EXCH A,AR1
	UNLOCKI
	%WTA (TT)
	EXCH A,AR1
	JRST FILOK0
;NML6BT NML6B5 NML6BZ NML6B0 NML6B2 DFNWD DFFNWD NML6FN NML6UF DFNWD DFFNWD NML6FN NML6UF NML6F5 NML6F2 NML6F4 NML6F3 NML6DV NML6D0 NML6PP NML6D1 NML6D8 NML6D7 NML6D4 SARGHT

SUBTTL	CONVERSION: NAMELIST => SIXBIT

;;; A NAMELIST IN A IS CONVERTED TO "SIXBIT" FORMAT ON THE FIXNUM PDL.
;;; "SIXBIT" FORMAT IS ACTUALLY SIXBIT FOR SOME OPERATING SYSTEMS,
;;; BUT MAY BE ANY ANY FORM WHATSOEVER AS LONG AS ALL ROUTINES WHICH
;;; CLAIM TO UNDERSTAND "SIXBIT" FORM AGREE ON WHAT THAT FORM IS.
;;; (SOME ROUTINES WHICH DO I/O DEPEND ON THIS FORMAT, FOR EXAMPLE
;;; ITS ROUTINES WHICH USE THE OPEN SYMBOLIC SYSTEM CALL.)
;;; "SIXBIT" FORMAT IS DEFINED AS FOLLOWS:
;;;
;;; FOR ITS:	<SIXBIT DEVICE NAME>
;;;		<SIXBIT SNAME>
;;;		<SIXBIT FILE NAME 1>
;;;		<SIXBIT FILE NAME 2>	;TOP OF STACK
;;; AN OMITTED COMPONENT CAN BE REPRESENTED BY EITHER A ZERO
;;; WORD OR SIXBIT \*\ (THE LATTER BEING THE CANONICAL CHOICE).
;;;
;;; FOR DEC10:	<SIXBIT DEVICE NAME>
;;;		<PROJ-PROG NUMBER>
;;;		<SIXBIT FILE NAME>
;;;		<SIXBIT EXTENSION>	;TOP OF STACK
;;; AN OMITTED COMPONENT CAN BE REPRESENTED BY EITHER A ZERO
;;; WORD OR SIXBIT \*\ (THE LATTER BEING THE CANONICAL CHOICE),
;;; EXCEPT FOR THE PPN, FOR WHICH 777777 INDICATES AN OMITTED HALFWORD.
;;;
;;; FOR DEC20:	<ASCIZ DEVICE OR LOGICAL NAME>
;;;		<ASCIZ DIRECTORY NAME>
;;;		<ASCIZ FILE NAME>
;;;		<ASCIZ EXTENSION/TYPE NAME>
;;;		<ASCIZ VERSION/GENERATION>	;TOP OF STACK
;;; THE ENTRIES HERE ARE NOT SINGLE WORDS, BUT ARE OF
;;; RESPECTIVE LENGTHS (IN WORDS) L.6DEV, L.6DIR, L.6FNM,
;;; L.6EXT, L.6VRS.
;;;
;;; NOTE THAT FOR ALL SIXBIT FORMATS THE TOTAL LENGTH OF THE
;;; SIXBIT FORMAT IS L.F6BT.  THIS DIVIDES INTO TWO PARTS:
;;; THE DEVICE/DIRECTORY, OF LENGTH L.D6BT, AND THE FILE NAME
;;; PROPER, OF LENGTH L.N6BT.
;;;
;;; THERE ARE FOUR KINDS OF FILE NAME SPECIFICATIONS.
;;; ONE IS A FILE OBJECT, WHICH IMPLIES THE NAME USED TO OPEN IT.
;;; ONE IS AN ATOMIC SYMBOL, WHICH IS TREATED AS A NAMESTRING.
;;; THE OTHER TWO ARE NAMELISTS, UREAD-STYLE AND NEWIO-STYLE.
;;; NEWIO-STYLE NAMELISTS HAVE NON-ATOMIC CARS, WHILE UREAD-STYLE
;;; NAMELISTS HAVE ATOMIC CARS.  UREAD-STYLE NAMELISTS ARE MOSTLY
;;; FOR COMPATIBILITY WITH OLDIO, AND FOR USER CONVENIENCE.
;;; AS OF 4/14/80, USER HUNKS, THAT IS  "EXTENDS" ARE PERMITTED TO
;;; APPEAR AS "NAMELISTS", IN WHICH CASE THEY ARE SENT THE  MESSAGE
;;; "NAMESTRING";  THEY ARE EXPECTED TO RETURN A SYMBOL, WHICH IS
;;; THEN TREATED AS IF IT WERE HANDED IN DIRECTLY.
;;;
;;; IN A NEWIO-STYLE NAMELIST, THE CAR IS A DEVICE/DIRECTORY
;;; SPECIFICATION, AND THE CDR A FILE NAME SPECIFICATION.
;;; IN PRINCIPLE EACH IS A LIST OF ARBITRARY LENGTH.
;;; IN PRACTICE, THERE IS A LIMIT FOR EACH OF THE PDP-10
;;; IMPLEMENTATIONS.  THE CANONICAL NAMELIST FORMAT FOR
;;; EACH SYSTEM IS AS FOLLOWS:
;;;	ITS:	((<DEVICE> <SNAME>) <FILE NAME 1> <FILE NAME 2>)
;;;	TOPS10:	((<DEVICE> (<PROJ#> <PROG#>)) <FILE NAME> <EXTENSION>)
;;;	SAIL:	((<DEVICE> (<PROJ> <PROG>)) <FILE NAME> <EXTENSION>)
;;;	CMU2	((<DEVICE> <PPN>) <FILE NAME> <EXTENSION>)
;;;			CMU ALSO ALLOWS TOPS10-STYLE NAMELISTS.
;;;	TENEX:	((<DEVICE> <DIRECTORY>) <FILE NAME> <EXTENSION> <VERSION>)
;;;	TOPS20:	((<DEVICE> <DIRECTORY>) <FILE NAME> <TYPE> <GENERATION>)
;;;
;;; ALL COMPONENTS ARE NOMINALLY ATOMIC SYMBOLS, EXCEPT <PROJ#> AND <PROG#>,
;;; WHICH ARE FIXNUMS.  IF THE USER SUPPLIES A COMPONENT WHICH IS NOT
;;; A SYMBOL (AND IT CAN EVEN BE NON-ATOMIC IF THERE IS NO AMBIGUITY
;;; AS TO FORMAT), THEN IT IS EXPLODEC'D WITH BASE=10., PRINLEVEL=PRINLENGTH=NIL,
;;; AND *NOPOINT=T.  A COMPONENT MAY BE "OMITTED" BY USING THE ATOMIC
;;; SYMBOL *.  THIS DOES NOT MEAN A WILDCARD, BUT ONLY AN OMITTED COMPONENT.
;;;
;;; IF THE USER SUPPLIES A NAMELIST NOT IN CANONICAL FORM, THE CAR AND CDR
;;; ARE INDEPENDENTLY CANONICALIZED.  THE CAR CAN BE ACANONICAL ONLY BY
;;; BEING A SINGLETON LIST; IN THIS CASE AN ATTEMPT IS MADE TO DECIDE
;;; WHETHER IT IS A DEVICE OR DIRECTORY SPECIFICATION.  THIS IS DONE IN
;;; DIFFERENT WAYS ON DIFFERENT SYSTEMS.  ON TOPS10, FOR EXAMPLE, AN ATOMIC
;;; SPECIFICATION IS NECESSARY A DEVICE AND NOT A PPN.  ON THE OTHER HAND,
;;; ON ITS A LIST OF STANDARD DEVICE NAMES IS CHECKED.
;;; THE CDR CAN BE ACANONICAL BY BEING TOO SHORT, OR BY BEING A DOTTED LIST,
;;; OR BOTH.  COMPONENTS ARE TAKEN IN ORDER UNTIL AN ATOMIC CDR IS REACHED.
;;; IF THIS CDR IS NIL, ALL REMAINING COMPONENTS ARE TAKEN TO BE *.
;;; OTHERWISE, ALL REMAINING COMPONENTS ARE * EXCEPT THE LAST, WHICH IS
;;; THAT ATOM IN THE CDR.
;;;
;;; A UREAD-STYLE NAMELIST IS NOMINALLY IN THE FORM (A B C D), WHERE
;;; A, AT LEAST, MUST BE ATOMIC.  IT IS INTERPRETED AS IF IT WERE CONVERTED
;;; TO THE FORM ((C D) A B) [DEC20: ((C D) A * B)], AND THEN TREATING IT AS
;;; AN ORDINARY NAMELIST. (IF C AND D ARE MISSING, THEN (*) IS USED INSTEAD
;;; OF NIL AS THE CAR OF THE CONSTRUCTED NAMELIST.

NML6BT:	JSP T,QIOSAV		;SAVE REGISTERS
NML6B5:	PUSH P,A
	HLRZ A,(A)		;CHECK CAR OF NAMELIST
	JSP T,STENT
	JUMPGE TT,NML6B2		;JUMP IF UREAD-STYLE NAMELIST
	PUSHJ P,NML6DV		;CONVERT DEVICE/DIRECTORY SPECIFICATION
	 JRST NML6B0		;SKIPS UNLESS CONVERSION FAILED
	HRRZ A,@(P)
	PUSHJ P,NML6FN		;CONVERT FILE NAMES (LEAVES TAIL IN A)
	JUMPE A,POP1J		;SUCCEED UNLESS TOO MANY FILE NAMES
NML6BZ:	POPI FXP,L.N6BT		;POP FILE NAME CRUD
NML6B0:	POPI FXP,L.D6BT		;POP DEVICE/DIRECTORY CRUD
	POP P,A			;POP ORIGINAL ARGUMENT
	WTA [INCORRECTLY FORMED NAMELIST!]
	JRST NML6B5

NML6B2:	HRRZ A,(P)		;HERE FOR UREAD-STYLE NAMELIST
	PUSHJ P,NML6UF		;CONVERT FILE NAMES, BUT AT MOST TWO OF THEM
	PUSHJ P,NML6DV		;NOW CONVERT THE DEVICE/DIRECTORY
	 JRST NML6BZ		;NOTE THAT POPI'S COMMUTE AT NML6BZ!
;AT THIS POINT THE WORDS ON FXP ARE IN THE WRONG ORDER, SO WE SHUFFLE THE STACK.
IFN ITS+D10,[
	POP FXP,TT		;DIRECTORY
	POP FXP,T		;DEVICE
	EXCH T,-1(FXP)		;EXCH DEVICE WITH FN1
	EXCH TT,(FXP)		;EXCH DIR WITH FN2
	PUSH FXP,T		;PUSH FN1
	PUSH FXP,TT		;PUSH FN2
]		;END OF IFN ITS+D10
IFN D20,[
	MOVEI T,-L.F6BT+1(FXP)
	HRLI T,-L.N6BT
	PUSH FXP,(T)		;COPY THE FILE NAMES TO THE TOP
	AOBJN T,.-1		; OF THE STACK
	MOVEI T,-L.F6BT-L.N6BT+1(FXP)
	HRLI T,-L.F6BT+1(FXP)
	BLT T,-L.N6BT(FXP)	;COPY ENTIRE "SIXBIT" SET DOWNWARD
	POPI FXP,L.N6BT		;POP OFF EXTRANEOUS CRUD
]		;END OF IFN D20
	JRST POP1J

;;; CONVERT FILE NAME LIST IN A TO "SIXBIT" FORM ON FXP.
;;; RETURNS THE UNUSED TAIL OF THE LIST IN A.
;;; NML6UF IS LIKE NML6FN, BUT NEVER GOBBLES MORE THAN TWO NAMES.

IFN D20,[
DFNWD:	ASCII \*\		;DEFAULT FILE-NAME WORD
DFFNWD:	ASCII \FASL\
NML6FN:	TDZA T,T
NML6UF:  SETO T,		;UREAD-STYLE DISTINCTION ONLY MATTERS TO DEC20
	HRLM T,(P)
	PUSH FXP,DFNWD
	PUSHN FXP,L.6FNM-1	;PUSH ROOM FOR THE FILE NAME
	PUSH FXP,DFNWD
	PUSHN FXP,L.6EXT-1	;PUSH ROOM FOR THE FILE EXTENSION
	PUSH FXP,DFNWD
	PUSHN FXP,L.6VRS-1	;PUSH ROOM FOR THE FILE VERSION
]	;END OF IFN D20
IFE D20,[
DFNWD:	SIXBIT \*\		;DEFAULT FILE-NAME WORD
DFFNWD:				;DEFAULT FASL-FILE-NAME WORD
10% 	SIXBIT \FASL\
10$ 	SIXBIT \FAS\
NML6FN:
NML6UF:	REPEAT L.N6BT, PUSH FXP,DFNWD 	;PUSH ROOM FOR THE FILE NAMES
]	;END OF IFE D20
	JUMPE A,CPOPJ		;NULL LIST => ALL NAMES OMITTED
	PUSH P,A
	JSP T,STENT
	JUMPGE TT,NML6F3	;ATOM MEANS LAST COMPONENT
	HLRZ A,(A)
20%	PUSHJ P,SIXMAK		;CONVERT FIRST COMPONENT TO SIXBIT,
20%	MOVEM TT,-1(FXP)	; AND CALL IT FILE NAME 1
IFN D20,[
	PUSHJ P,PNBFMK		;CONVERT FIRST COMPONENT TO ASCIZ,
	MOVEI T,-L.6FNM-L.6EXT-L.6VRS+1(FXP)	; AND CALL IT THE FILE NAME
	HRLI T,PNBUF
	BLT T,-L.6EXT-L.6VRS(FXP)
	MOVEI T,177←1			;MASK FOR LAST BYTE IN AN ASCII WORD
	ANDCAM T,-L.6EXT-L.6VRS(FXP)	;MAKE SURE LAST BYTE IS NULL
]		;END OF IFN D20
	HRRZ A,@(P)
	JUMPE A,POP1J		;EXIT IF ALL DONE
	MOVEM A,(P)
IFN D20,[
	JSP T,STENT
	JUMPGE TT,NML6F3	;ATOM MEANS LAST COMPONENT
	HLRZ A,(A)
	PUSHJ P,PNBFMK		;CONVERT NEXT COMPONENT TO ASCIZ,
	MOVEI T,-L.6EXT-L.6VRS+1(FXP)	; AND CALL IT THE EXTENSION
	HRLI T,PNBUF
	BLT T,-L.6VRS(FXP)
	MOVEI T,177←1			;MASK FOR LAST BYTE IN AN ASCII WORD
	ANDCAM T,-L.6VRS(FXP)		;MAKE SURE LAST BYTE IS NULL
	HRRZ A,@(P)
	JUMPE A,POP1J		;EXIT IF ALL DONE
	HRRZ T,(A)		;IF 3 COMPONENTS REMAIN, THEN VERSION EXISTS
	HRRZ T,(T)
	SKIPN T
	 SKIPL -1(P)		;FOR UREAD-STYLE NAMELISTS, READ AT MOST
	  SKIPA			; TWO COMPONENTS
	   JRST NML6F4
	MOVEM A,(P)
NML6F5:
]		;END OF IFN D20
	JSP T,STENT
	JUMPGE TT,NML6F3	;ATOM MEANS LAST COMPONENT
	HLRZ A,(A)
NML6F2:
IFE D20,[
	PUSHJ P,SIXMAK		;CONVERT LAST COMPONENT TO SIXBIT,
10$	TRZ TT,-1		; TRUNCATING TO 3 CHARS FOR DEC10,
	MOVEM TT,(FXP)	; AND CALL IT FILE NAME 2
]		;END OF IFN D20
IFN D20,[
	PUSHJ P,PNBFMK		;CONVERT LAST COMPONENT TO ASCIZ,
	MOVEI T,-L.6VRS+1(FXP)	; AND CALL IT THE VERSION
	HRLI T,PNBUF
	BLT T,(FXP)
	MOVEI T,177←1			;MASK FOR LAST BYTE IN AN ASCII WORD
	ANDCAM T,(FXP)			;MAKE SURE LAST BYTE IS NULL
]		;END OF IFN D20
NML6F4:	HRRZ A,@(P)
	JRST POP1J

NML6F3:	SETZM (P)
20%	JRST NML6F2
20$	JRST NML6F4

;;; CONVERTS A DEVICE/DIRECTORY SPECIFICATION IN A TO "SIXBIT" FORM ON FXP.
;;; PERFORMS DEVICE/DIRECTORY DISAMBIGUATION.  SKIPS ON SUCCESS.

NML6DV:
 	PUSH FXP,DFNWD		;PUSH ROOM FOR DEV NAME
20$	PUSHN FXP,L.6DEV-1	;PUSH ROOM FOR THE DEVICE NAME
10$	PUSH FXP,[-1]		;FOR DIR NAME
10% 	PUSH FXP,DFNWD		;FOR DIR NAME
20$	PUSHN FXP,L.6DIR-1	;PUSH ROOM FOR THE DIRECTORY NAME
NML6D0:	JUMPE A,POPJ1		;NULL SPEC => DEFAULTS
	HRRZ B,(A)
	HLRZ A,(A)
	PUSH P,B
NML6PP:
10$	JSP T,SPATOM		;FOR DEC-10, A NON-ATOMIC ITEM MUST BE A PPN
10$	 JRST NML6D7
20$	PUSHJ P,PNBFMK		;GET THE "SIXBIT" FORM OF DEVICE
IFE D20,[
	PUSH P,A
	PUSH P,B
 	PUSHJ P,SIXMAK
	POP P,B
	POP P,A
]	 	;END IFE D20
	SKIPE (P)		;FOR MORE THAN ONE ITEM IN LIST, THEN THE
	 JRST NML6D1		; FIRST MUST BE A DEVICE
	PUSHJ P,IDND		;DISAMBIGUATE THIS MESS - SKIP IF DEVICE
	 JRST NML6D8		;NO SKIP MEANS NO INFO - MAYBE DIRECTORY NAME?
	 JRST NML6D1		;SKIP ONE MEANS DEFINITELY A DEVICE NAME
	POP P,B
	JRST NML6D0		;SKIP TWO MEANS PPN/DIRECTORY TRANSLATION

NML6D1:				;IT'S DEFINITELY A DEVICE NAME
20%	MOVEM TT,-L.D6BT+1(FXP)
IFN D20,[
	MOVEI T,-L.6DEV-L.6DIR+1(FXP)
	HRLI T,PNBUF
	BLT T,-L.6DIR+1(FXP)
	MOVEI T,177←1			;MASK FOR LAST BYTE IN AN ASCII WORD
	ANDCAM T,-L.6DIR(FXP)		;MAKE SURE LAST BYTE IS NULL
]		;END OF IFN D20
	SKIPN (P)
	 JRST POP1J1			;SUCCESS IF NO DIRECTORY SPEC
	HLRZ A,@(P)
IFN D10,[
	PUSHJ P,PPNGET		;TRY PPN PROPERTY
	SKIPN A			;USE IT IF IT EXISTS
	 HLRZ A,@(P)		;ELSE USE THE USER SPECIFIED FROB
]	;END IFN D10
	HRRZ B,@(P)
	MOVEM B,(P)
;HERE IS WHERE IT HITS THE FAN - NO TWO SYSTEMS HAVE THE SAME DIRECTORY SPEC FORMAT!
IFN ITS,	PUSHJ P,SIXMAK	;FOR ITS IT IS A PLAIN SIXBIT NAME
IFN D20,	PUSHJ P,PNBFMK	;FOR D20 IT IS ASCII
IFN D10,[
NML6D8:	SETO TT,
	CAIN A,Q.		;* AS A PPN STRING IS TAKEN TO MEAN (* *)
	 JRST NML6D4
	JSP T,SPATOM
	 JRST NML6D7		;NON-ATOMIC => TOPS10-STYLE
SA%	SKIPN CMUP
	 JRST POP1J		;AN ATOMIC DIRECTORY IS ILLEGAL FOR TOPS10/SAIL
IFE SAIL,[
	PUSHJ P,PNBFMK
	MOVEI TT,PNBUF		;0,,ADDRESS OF CMU PPN STRING
	CMUDEC TT,		;CMUDEC WILL CONVERT A STRING TO A PPN WORD
	 JRST POP1J		;FAIL IF NOT A VALID CMU PPN
	JRST NML6D4
]	;END OF IFE SAIL
NML6D7:	HLRZ B,(A)		;B GETS PROJECT
	HRRZ C,(A)
	HLRZ A,(C)		;A GETS PROGRAMMER
	HRRZ C,(C)
	JUMPN C,POP1J		;FAIL IF THREE ITEMS IN THE PPN SPEC
IFE SAIL,[
	CAIN B,Q.		;* MEANS AN OMITTED COMPONENT
	 SKIPA D,[,,-1]
	  JSP T,FXNV2		;OTHERWISE EXPECT A FIXNUM
	CAIN A,Q.
	 SKIPA TT,[,,-1]
	  JSP T,FXNV1
	TLNN TT,-1
	 TLNE D,-1
	  JRST POP1J		;NUMBERS MUST FIT INTO HALFWORDS
	HRLI TT,(D)
]		;END OF IFE SAIL
IFN SAIL,[
	PUSH P,B
	CAIN A,Q.		;* MEANS AN OMITTED COMPONENT
	 SKIPA TT,[0,,-1]
	  PUSHJ P,SIXMAK	;OTHERWISE GET SIXBIT
	PUSHJ P,SARGHT		;RIGHT JUSTIFY IT
	PUSH FXP,TT
	POP P,A
	CAIN A,Q.		;* MEANS AN OMITTED COMPONENT
	 SKIPA TT,[0,,-1]
	  PUSHJ P,SIXMAK	;OTHERWISE GET SIXBIT
	PUSHJ P,SARGHT		;RIGHT JUSTIFY IT
	POP FXP,D
	TLNN TT,-1
	 TLNE D,-1
	  JRST POP1J		;NO MORE THAN 3 CHARS APIECE
	MOVSS TT
	HRRI TT,(D)
]		;END OF IFN SAIL
]		;END OF IFN D10
;NOW WE HAVE THE SNAME/PPN IN TT FOR ITS/D10, OR DIRECTORY IN PNBUF FOR D20
10% NML6D8:
NML6D4:
20%	MOVEM TT,(FXP)
IFN D20,[
	MOVEI T,-L.6DIR+1(FXP)
	HRLI T,PNBUF
	BLT T,(FXP)
	MOVEI T,177←1		;MASK FOR LAST BYTE IN AN ASCII WORD
	ANDCAM T,(FXP)
]		;END OF IFN D20
	SKIPN (P)		;WE WIN IFF THERE ARE NO MORE ITEMS TO PARSE
	 AOS -1(P)
	JRST POP1J


IFN SAIL,[
;RIGHT JUSTIFY SIXBIT WORD IN TT
SARGHT:	SKIPE TT		;IF NOTHING THERE WE DON'T WANT TO LOOP
	 TRNE TT,77		;ANYTHING IN HIGH SIXBIT BYTE?
	  POPJ P,		;YUP, IT IS THEREFORE LEFT-JUSTIFIED
	LSH TT,-6		;ELSE GET RID OF THE LEADING BLANK
	JRST SARGHT		;AND PROCEED WITH TEST
]	;END IFN SAIL

;IDNTB LIDNTB IDNDLS PPNGET IDND IDNDA IDNDA IDND1 IDND2 IDND3 IDNDS IDNDX



;;; INSUFFERABLE DEVICE NAME DISTINGUISHER  -  SKIP.RETURN IF ARG IS DEVICE
;;; A NAME IS IN TT IN SIXBIT (ITS/CMU) OR IN PNBUF IN ASCII (D20).
;;; ACC A HOLDS POINTER TO THE SYMBOL FROM WHICH "NAME" WAS TRANSLATED.
;;; TRIES TO DECIDE WHETHER A NAME IS A DEVICE NAME OR A DIRECTORY NAME.
;;; FOR ITS, IT IS A DEVICE NAME IFF, AFTER STRIPPING OFF TRAILING DIGITS,
;;; IT IS IN THE TABLE OF KNOWN DEVICE NAMES.
;;; FOR CMU, WE USE THE DEVCHR UUO TO TEST EXISTENCE.
;;; FOR D20, WE USE THE STDEV JSYS TO TEST EXISTENCE.
;;; SKIPS IF A DEVICE NAME.  MUST PRESERVE A AND TT.


IFN ITS,[
;;; BEWARE! THIS TABLE IS SORTED ALPHABETICALLY, AND THAT IS REQUIRED BY
;;;  THE SUPER-HAIRY BINARY SORT HACK ABOVE.  TABLE MUST BE AN EXACT POWER OF 
;;;  TWO IN LENGTH SO WE CAN USE SUPER-WINNING BINARY SEARCH METHOD.

IDNTB:
IRP X,,[AI,AIAR,AIDIR,AR,ARC,BOJ,CLA,CLI,CLO,CLU,COM,COR
DIR,DK,DM,DMAR,DMDIR,DSK,ERR,JOB,LPT,MC,MCAR,MCDIR,ML,MLAR,MLDIR
MT,NUL,OJB,P,PK,PTP,PTR,S,SPY,ST,STY,SYS,T,TPL,TTY,TY,USR,UT]
	SIXBIT \X\
TERMIN
LIDNTB==:.-IDNTB

HAOLNG LOG2IDNTB,<.-IDNTB-1>
    REPEAT <1←LOG2IDNTB>-LIDNTB,[-1
	]				;END OF REPEAT <1←LOG2IDNTB>-LIDNTB,

IDNDLS:
    REPEAT 6,[ROTC TT-1,<.RPCNT+1>*6
	]				;END OF REPEAT 6,
	POPJ P,				;STANDARD EXIT IF TOO MANY SHIFTS

]	;END OF IFN ITS

PPNGET:	PUSH P,B	;Don't go around clobbering stuff
	PUSH FXP,TT	;CHECK TO SEE IF SYMBOL HAS PPN PROPERTY
	JSP T,SPATOM	; AND USE `(DSK ,(proj prog)) IF FOUND
	 MOVE A,CIN0	;A LISP "0", IN ORDER TO CONFUSE "GET"
	MOVEI B,QPPN
	PUSHJ P,$GET
	POP P,B		;B may still contain the directory name.
	JRST RSTX1


IDND:	PUSH P,A
	PUSHJ P,PPNGET
	JUMPE A,IDNDA
	HRRZM A,(P) 		;AHA! A PPN TRANSLATION!
	AOS -1(P) 		;SKIP 2 FOR PPN TRANSLATION
	AOS -1(P) 
	JRST POPAJ
IDNDA: 
IFN D20,[
	LOCKI			;LOCK OUT INTERRUPTS AROUND THE JSYS
	HRROI A,PNBUF
	STDEV			;CONVERT DEVICE STRING TO DEVICE DESIGNATOR
	 SKIPA 			;ERROR - NO SUCH DEVICE - NO SKIP ON FAILURE
]		;END OF IFN D20
IFN D10,[
	MOVE F,TT
	DEVCHR F,		;GET CHARACTERISTICS OF DEVICE
	 SKIPE F		; ZERO WORD MEANS DEVICE DOESN'T EXIST
]	;END OF IFN D10
IFN ITS,[
IDNDA:	MOVE F,TT		;SAVE TT IN F
	MOVNI R,6
IDND1:	SETZ TT-1,		;WE WILL STRIP DIGITS AND NULLS FROM END
	ROTC TT-1,-6		; BY ROTATING THEM INTO THE PREVIOUS AC
	ROT TT-1,6
	JUMPE TT-1,IDND2
	CAIL TT-1,'0
	 CAILE TT-1,'9
	  JRST IDND3		;EXIT IF NEITHER DIGIT NOR NULL
IDND2:	AOJL R,IDND1
	POPJ P,			;SHIFTED OUT ALL CHARACTERS?
IDND3:	ROT TT-1,-6
	XCT IDNDLS+6(R)		;SHIFT BACK
	SETZB R,T
    REPEAT LOG2IDNTB,[
	CAML TT,IDNTB+<1←<LOG2IDNTB-.RPCNT-1>>(R)
	ADDI R,1←<LOG2IDNTB-.RPCNT-1>
	]			;END OF REPEAT LOG2IDNTB
	EXCH TT,F		;RESTORE TT
	CAMN F,IDNTB(R)		;FALL THRU IF RECOGNIZED DEVICE
]		;END OF IFN ITS
;;; FALL THRU TO HERE IF IT IS A DEVICE
IDNDS:	AOS -1(P)		;AND IF DEVICE, THEN SKIP ONE ON RETURN
IDNDX:				; BUT IF NOT, THEN NO SKIP
20%	JRST POPAJ		
20$	POP P,A
20$	UNLKPOPJ


;NAMELIST 6BTNML 6BTNL3 6BTNL4

SUBTTL	CONVERSION: SIXBIT => NAMELIST

;;; THIS ROUTINE TAKES "SIXBIT" FORMAT ON FXP AND,
;;; POPPING THEM, RETURNS THE EQUIVALENT CANONICAL NAMELIST.
;;; OMITTED COMPONENTS BECOME *'S.
;;; THE NAMELIST FUNCTION MERELY CONVERTS ARG TO SIXBIT,
;;; THEN BACK TO (CANONICAL) NAMELIST FORM.

NAMELIST:
	PUSHJ P,FIL6BT		;SUBR 1
6BTNML:	JSP T,QIOSAV		;MUST ALSO PRESERVE F
	PUSHN P,1
;FOR D20, POP THE VERSION (TENEX)/GENERATION (TOPS20) AND CONS IT UP
IFN D20,[
REPEAT L.6VRS,	POP FXP,PNBUF+L.6VRS-.RPCNT-1
	PUSHJ P,6BTNL3
]		;END OF IFN D20
;POP THE FILE NAME 2 (ITS)/EXTENSION (D10, TENEX)/TYPE (TOPS20) AND CONS UP
IFN ITS+D10,	POP FXP,TT
IFN D10,	TRZ TT,-1	;D10 EXTENSION IS AT MOST 3 CHARACTERS
IFN D20,[
	MOVEI T,PNBUF
	HRLI T,-L.6EXT+1(FXP)
	BLT T,PNBUF+L.6EXT-1
	POPI FXP,L.6EXT
]		;END OF IFN D20
	PUSHJ P,6BTNL3
;POP THE FILE NAME 1 (ITS)/FILE NAME (D10, D20) AND CONS UP
IFN ITS+D10,	POP FXP,TT
IFN D20,[
	MOVEI T,PNBUF
	HRLI T,-L.6FNM+1(FXP)
	BLT T,PNBUF+L.6FNM-1
	POPI FXP,L.6FNM
]		;END OF IFN D20
	PUSHJ P,6BTNL3
;NOW FOR THE DEVICE/DIRECTORY PORTION
	PUSHN P,1
;FIRST THE DIRECTORY (WHAT A MESS!)
IFN ITS,[
	POP FXP,TT
	PUSHJ P,6BTNL3
]		;END OF IFN ITS
IFN D10,[
	POP FXP,TT
	PUSHJ P,PPNATM
	PUSHJ P,6BTNL4
]		;END OF IFN D10
IFN D20,[
	MOVEI T,PNBUF
	HRLI T,-L.6DIR+1(FXP)
	BLT T,PNBUF+L.6DIR-1
	POPI FXP,L.6DIR
	PUSHJ P,6BTNL3
]		;END OF IFN D20
;FINALLY, THE DEVICE NAME
20%	POP FXP,TT
IFN D20,[
	MOVEI T,PNBUF
	HRLI T,-L.6DEV+1(FXP)
	BLT T,PNBUF+L.6DEV-1
	POPI FXP,L.6DEV
]		;END OF IFN D20
	PUSHJ P,6BTNL3
	POP P,A
	POP P,B
	JRST CONS

SA$ 6BTNL9:	SKIPA A,[Q.]
6BTNL3:
20%	PUSHJ P,SIXATM
20$	PUSHJ P,PNBFAT
6BTNL4:	MOVE B,-1(P)
	PUSHJ P,CONS
	MOVEM A,-1(P)
	POPJ P,
;SHORTNAMESTRING NAMESTRING 6BTNMS X6BTNSL 6BTNSL 6BTNS 6BNS0A 6BTNS0 6BTNS4 6BTNS5 6BTNS8 6BTNS1 6BTNS2 6BTNS3 6BTNS2 6BNS3A 6BTNS3 6BTNS6 6BNS6A 6BNS7A 6BTNS7 6BNS7B

SUBTTL	CONVERSION: SIXBIT => NAMESTRING

;;; THIS ROUTINE TAKES A "SIXBIT" FORMAT FILE SPEC ON FXP
;;; AND GENERATES AN UNINTERNED ATOMIC SYMBOL WHOSE
;;; PRINT NAME IS THE EXTERNAL FORM OF FILE SPECIFICATION.
;;; OMITTED NAMES ARE EITHER NOT INCLUDED IN THE NAMESTRING
;;; OR REPRESENTED AS "*".
;;; THE NAMESTRING AND SHORTNAMESTRING MERELY CONVERT THEIR
;;; ARGUMENTS TO SIXBIT AND THEN INTO NAMESTRING FORM.


SHORTNAMESTRING:		;SUBR 1
	TDZA TT,TT
NAMESTRING:			;SUBR 1
	 SETO TT,
	HRLM TT,(P)
	PUSHJ P,FIL6BT
6BTNMS:	MOVEI TT,PNGNK2
	HLL TT,(P)		;TO MAKE A NAMESTRING, GET IT INTO PNBUF
	PUSH P,TT
	JRST 6BTNS		; AND THEN PNGNK2 WILL MAKE A SYMBOL


IFN D20,[
X6BTNSL:	MOVEI T,L.F6BT		;MAKES STRING IN PNBUF, BUT NO POPPING
	PUSH FXP,-L.F6BT+1(FXP)		; THE FILE NAMES (WE COPY THEM FIRST)
	SOJG T,.-1
]		;END OF IFN D20

6BTNSL:	 SETO TT,		;IF RETURN ADDRESS SLOT ON THE PDL IS 
	HRLM TT,(P)		; POSITIVE, THEN DO "SHORTNAMESTRING"
6BTNS:	JSP T,QIOSAV		;CONVERT "SIXBIT" TO A STRING IN PNBUF
				; (BETTER BE BIG ENOUGH!)
	SETOM LPNF		;SET FLAG SAYING IT FITS IN PNBUF
20%	MOVEI R,↑Q		;R CONTAINS THE CHARACTER FOR QUOTING
20$	MOVEI R,↑V		; PECULIAR CHARACTERS IN COMPONENTS
	MOVE C,PNBP
	SKIPL -LQIOSV(P)	;SKIP UNLESS SHORTNAMESTRING
	 JRST 6BTNS0
;DEVICE NAME (NOT FOR SHORTNAMESTRING, THOUGH)
 	MOVEI TT,-L.D6BT-L.N6BT+1(FXP)
	SKIPE T,(TT)
	 CAMN T,DFNWD
	  JRST 6BNS0A		;JUMP IF DEVICE NAME OMITTED
	PUSHJ P,6BTNS1
	MOVEI T,":		;9 OUT OF 10 OPERATING SYSTEMS AGREE:
	IDPB T,C		; ":" MEANS A DEVICE NAME.
6BNS0A:
;FOR ITS AND D20, DIRECTORY NAME COMES NEXT
IFN ITS+D20,[
	MOVEI TT,-L.6DIR-L.6FNM-L.6EXT-L.6VRS+1(FXP)
	SKIPE T,-L.6DIR-L.N6BT+1(FXP)
	 CAMN T,DFNWD
	  JRST 6BTNS0		;DIRECTORY NAME OMITTED
20$	MOVEI T,"<		;D20 DIRECTORY NAME APPEARS IN <>
20$	IDPB T,C
	PUSHJ P,6BTNS1
20$	MOVEI T,">
20%	MOVEI T,";		;";" MEANS DIRECTORY NAME TO ITS
	IDPB T,C
]		;END OF IFN ITS+D20
6BTNS0:	MOVEI TT,-L.N6BT+1(FXP)	;NOW WE ATTACK THE FILE NAME
	PUSHJ P,6BTNS1
;NOW THE FILE NAME 2/EXTENSION/TYPE
IFN ITS,	MOVEI T,40
IFN D10+D20,	MOVEI T,".
10$	PUSH FXP,(FXP)				;EXTRA SLOT FOR D10, IN ORDER
10$	HLLZS (FXP)				; ZERO OUT HALF A WORD
	MOVEI TT,-L.N6BT+L.6FNM+1(FXP)
10$	SKIPE (TT)
	 IDPB T,C
IT%	SKIPE (TT)
	 PUSHJ P,6BTNS1
10$ 	POPI FXP,1				;FLUSH THE "EXTRA" SLOT
IFN D20,[
;FOR D20, THE VERSION/GENERATION COMES LAST
	MOVEI TT,-L.6VRS+1(FXP)
	SKIPE T,(TT)
	 CAMN T,DFNWD
	  JRST 6BTNS8
	MOVEI T,";
	SKIPN TENEXP
	 MOVEI T,".
	IDPB T,C
	PUSHJ P,6BTNS1
]		;END OF IFN D20
IFN D10,[
;FOR D10, THE DIRECTORY COMES LAST
	MOVEI TT,-L.F6BT+L.6DEV+1(FXP)
	MOVE T,(TT)
	CAME T,XC-1			;FORGET IT IF BOTH HALVES OMITTED
	 SKIPL -LQIOSV(P)		;NO DIRECTORY FOR SHORTNAMESTRING
	  JRST 6BTNS8
	MOVEI T,91.			;A LEFT BRACKET
	IDPB T,C
IFE SAIL,[
	SKIPN CMUP
	 JRST 6BTNS4
	HLRZ T,(TT)
	CAIG T,10		;ONLY PROJECTS ABOVE 10 ARE IN CMU FORMAT
	 JRST 6BTNS4
	PUSHN FXP,2		;THERE IS A BUG IN DECCMU, BUT PUSHING ZERO WORDS
	MOVEI T,-1(FXP)		; GETS US AROUND IT
	HRL T,TT
	DECCMU T,
	 JRST 6BTNS4		;ON FAILURE, JUST USE DEC FORMAT
	MOVEI TT,-1(FXP)
	TLOA TT,440700
	 IDPB T,C		;COPY CHARACTERS INTO PNBUF
	ILDB T,TT
	JUMPN T,.-2
	POPI FXP,2
	JRST 6BTNS5
]	;END OF IFE SAIL
6BTNS4:	HLLZ TT,-L.F6BT+L.6DEV+1(FXP)
	PUSHJ P,6BTNS6		;OUTPUT PROJECT
	MOVEI T,",		;COMMA SEPARATES HALVES
	IDPB T,C
	HRLZ TT,-L.F6BT+L.6DEV+1(FXP)
	PUSHJ P,6BTNS6		;OUTPUT PROGRAMMER
6BTNS5:	MOVEI T,93.		;A RIGHT BRACKET
	IDPB T,C
]		;END OF IFN D10
6BTNS8:	PUSHJ FXP,RDAEND	;FINISH OFF THE LAST WORD OF THE STRING
	SETZM 1(C)
	POPI FXP,L.F6BT		;POP CRUD OFF STACK
	MOVEM C,-LQIOSV+2(P)	;CROCK DUE TO SAVED AC C
	POPJ P,

;;; COME HERE TO ADD A COMPONENT TO THE GROWING NAMESTRING IN PNBUF.
;;; FOR ITS AND D10, THE SIXBIT IS IN TT, AND MUST BE CONVERTED.
;;; FOR DEC20, TT HAS A POINTER TO THE ASCIZ STRING TO ADD.

6BTNS1:
IFN ITS+D10,[
	SKIPN TT,(TT)		;A ZERO WORD GETS OUTPUT AS "*"
	 MOVE TT,DFNWD
6BTNS2:	SETZ T,
	LSHC T,6
	JUMPE T,6BTNS3
10$	CAIE T,133-40		;FOR DEC-10, BRACKETS MUST
10$	 CAIN T,135-40		; BE QUOTED
10$	  JRST 6BTNS3
	CAIE T,':
10%	 CAIN T,';
10$	 CAIN T,'.
6BTNS3:	  IDPB R,C		;↑Q TO QUOTE FUNNY CHARS
	ADDI T,40
	IDPB T,C
	JUMPN TT,6BTNS2
	POPJ P,
]		;END OF IFN ITS+D10
IFN D20,[
	SKIPN (TT)
	 MOVEI TT,DFNWD
	SETZ D,
	HRLI TT,440700
6BTNS2:	ILDB T,TT
	JUMPE T,CPOPJ
	TRZE D,1		;D IS THE PRECEDING-CHAR-WAS-↑V FLAG
	 JRST 6BTNS3
IRPC X,,[:;<>=←*@ ,]		;EVEN NUMBER OF GOODIES!
IFE .IRPCNT&1,	CAIE T,"X
.ELSE,[
	CAIN T,"X
	 IDPB R,C		;QUOTE FUNNY CHARACTER
]		;END OF .ELSE
TERMIN
	SKIPE TENEXP
	 JRST 6BNS3A
				;TOPS-20 Requires more characters to be quoted
IRPC X,,[(){}/!"#%&'\|`↑}]
IFE .IRPCNT&1,	CAIE T,"X
.ELSE,[
	CAIN T,"X
	 IDPB R,C		;QUOTE FUNNY CHARACTER
]		;END OF .ELSE
TERMIN
	CAIE T,91.		;LEFT-SQUARE-BRACKET
	 CAIN T,93.		;RIGHT-SQUARE-BRACKET
	  IDPB R,C
6BNS3A:	CAIN T,(R)		;REMEMBER A ↑V
	 TRO D,1
6BTNS3:	IDPB T,C
	JRST 6BTNS2
]		;END OF IFN D20

IFN D10,[
;;; CONVERT ONE HALF OF A PPN, PUTTING ASCII CHARS IN PNBUF

6BTNS6:	JUMPE TT,6BNS6A
	CAME TT,[-1,,]
	 AOJA TT,6BTNS7		;ADDING ONE PRODUCES A FLAG BIT
6BNS6A:	MOVEI TT,"*		;AN OMITTED HALF IS OUTPUT AS "*"
	IDPB TT,C
	POPJ P,

6BNS7A:	LSH TT,3+3*SAIL		;ZERO-SUPPRESS OCTAL (TOPS10/CMU), LEFT-JUSTIFY CHARS (SAIL)
6BTNS7:	TLNN TT,770000←<3*<1-SAIL>>
	 JRST 6BNS7A		;NOTE THAT THE FLAG BIT GETS SHIFTED TOO
6BNS7B:	SETZ T,
	LSHC T,3+3*SAIL
SA%	ADDI T,"0
SA$	ADDI T,40
	IDPB T,C
	TRNE TT,-1		;WE'RE DONE WHEN THE FLAG BIT LEAVES THE RIGHT HALF
	 JRST 6BNS7B
	POPJ P,

]		;END OF IFN D10
;NMS NMS.CQ NMS.CA NMS.DV NMS.FN NMS.DT NMS.XT NMS.LB NMS.CM NMS.RB NMS.ND NMS.ST NMS6BF NMS6B0 NMS6BT NMS6B1 NMS6B8 NMS6B6 NMS6B5 NMS6B7 NMS6B9 NMS6B4 NMS6BQ NMS6BL NMS6DV NMS6SN NMS6PD NMS6LB NMS6L1 NMS6CM NMS6RB NMS6R2 NMS6R1 NMS6ST NMS6PP

SUBTTL	CONVERSION: NAMESTRING => SIXBIT

;;; THIS ONE IS PRETTY HAIRY.  IT CONVERTS AN ATOMIC
;;; SYMBOL IN A, REPRESENTING A FILE SPECIFICATION,
;;; INTO "SIXBIT" FORMAT ON FXP.  THIS INVOLVES
;;; PARSING A FILE NAME IN STANDARD ASCII STRING FORMAT
;;; AS DEFINED BY THE HOST OPERATING SYSTEM.
;;; FOR D20, THE OPERATING SYSTEM GIVES US SOME HELP.
;;; FOR ITS AND D10, WE ARE ON OUR OWN.

IFN ITS+D10,[

;;; THE GENERAL STRATEGY HERE IS TO CALL PRINTA TO EXPLODEC THE NAMESTRING.
;;; A PARSING COROUTINE TAKES THE SUCCESSIVE CHARACTERS AND INTERPRETS THEM.
;;; EACH COMPONENT IS ASSEMBLED IN SIXBIT FORM, AND WHEN IT IS TERMINATED
;;; BY A BREAK CHARACTER, IT IS PUT INTO ONE OF FOUR SLOTS RESERVED ON FXP.
;;; FOR CMU, WE ALSO ASSEMBLE THE CHARACTERS INTO PNBUF IN ASCII FORM,
;;; SO THAT WE CAN USE THE CMUDEC UUO TO CONVERT A CMU-STYLE PPN.
;;; AR1 HOLDS THE BYTE POINTER FOR ACCUMULATING A NAME.
;;; AR2A HOLDS MANY FLAGS DESCRIBING THE STATE OF THE PARSE:
NMS==:1,,525252			;FOR BIT-TYPEOUT MODE
	NMS.CQ==:1	;CONTROL-Q SEEN
	NMS.CA==:2	;CONTROL-A SEEN
IFN D10,[
	NMS.DV==:10	;DEVICE SEEN (AND TERMINATING :)
	NMS.FN==:20	;FILE NAME SEEN
	NMS.DT==:40	;. SEEN
	NMS.XT==:100	;EXTENSION SEEN
	NMS.LB==:200	;LEFT BRACKET SEEN
	NMS.CM==:400	;COMMA SEEN
	NMS.RB==:1000	;RIGHT BRACKET SEEN
	NMS.ND==:10000	;NON-OCTAL-DIGIT SEEN
	NMS.ST==:20000	;* SEEN
]		;END OF IFN D10
;;; CONTROL-A IS THE SAIL CONVENTION FOR QUOTING MANY CHARACTERS, BUT WE
;;; ADOPT IT FOR ALL ITS AND D10 SYSTEMS.


NMS6BF:	POP P,A
	POPI FXP,L.F6BT+1+1
NMS6B0:	WTA [BAD NAMESTRING!]
NMS6BT:	MOVEI TT,(A)		;DON'T ALLOW FIXNUMS AS NAMESTRINGS
	LSH TT,-SEGLOG
	MOVSI R,FX
	TDNE R,ST(TT)		;A FIXNUM?
	 JRST NMS6B0		;YES, ILLEGAL AS A NAMESTRING
	PUSH P,A
	PUSHN FXP,L.F6BT+1	;FOUR WORDS FOR FINISHED NAMES, ONE FOR ACCUMULATION
	MOVEI AR1,(FXP)		;AR1 HOLDS THE BYTE POINTER FOR ACCUMULATING A NAME
	HRLI AR1,440600
	PUSH FXP,PNBP		;PARSE THE PPN INTO PNBUF
	SETZM PNBUF+LPNBUF-1
	SETZ AR2A,		;ALL FLAGS INITIALLY OFF
	HRROI R,NMS6B1		.SEE PR.PRC
	PUSHJ P,PRINTA		;PRINTA WILL CALL NMS6B1 WITH SUCCESSIVE CHARS IN A
	TLNE AR2A,NMS.CA+NMS.CQ
	 JRST NMS6BF		;ILLEGAL FOR A QUOTE TO BE HANGING
	MOVEI A,40
	PUSHJ P,(R)		;FORCE A SPACE THROUGH TO TERMINATE LAST COMPONENT
IFN D10,[
	TLNE AR2A,NMS.LB
	 TLNE AR2A,NMS.RB
	  CAIA
	   JRST NMS6BF		;LOSE IF LEFT BRACKET SEEN BUT NO RIGHT BRACKET
]		;END OF IFN D10
	JUMPE AR1,NMS6BF	;AR1 IS ZEROED IF THE PARSING CORUTINE DETECTS AN ERROR
	POP P,A
	POPI FXP,2
	MOVE T,DFNWD		;CHANGE ANY ZERO COMPONENTS TO "*"
	SKIPN -3(FXP)
	 MOVEM T,-3(FXP)	;DEVICE NAME
IT$	SKIPN -2(FXP)
IT$	 MOVEM T,-2(FXP)	;SNAME
IFN D10,[
	MOVE TT,-2(FXP)		;TREAT HALVES OF PPN SEPARATELY
	TLNN TT,-1		;A ZERO HALF BECOMES -1
	 TLO TT,-1
	TRNN TT,-1
	 TRO TT,-1
	MOVEM TT,-2(FXP)
]		;END OF IFN D10
	SKIPN -1(FXP)
	 MOVEM T,-1(FXP)	;FILE NAME 1
SA$	MOVSI T,(SIXBIT \←←←\)
	SKIPN (FXP)
	 MOVEM T,(FXP)		;FILE NAME 2/EXTENSION
	POPJ P,

;;; THIS IS THE NAMESTRING PARSING COROUTINE

NMS6B1:	JUMPE AR1,CPOPJ		;ERROR HAS BEEN DETECTED, FORGET THIS CHARACTER
	CAIN A,↑A
	 JRST NMS6BQ
	CAIN A,↑Q
	 TLCE AR2A,NMS.CQ	;FOR A CONTROL-Q, SET THE CONTROL-Q BIT
	  CAIA			;IF IT WAS ALREADY SET, IT'S A QUOTED ↑Q
	   POPJ P,		;OTHERWISE EXIT
	CAIN A,40		;SPACE?
	 TLZN AR2A,NMS.CQ	;YES, QUOTED?
	  SKIPA			;NO TO EITHER TEST
	   JRST NMS6B9		;YES TO BOTH, IS QUOTED SPACE
	CAILE A,40		;SKIP OF CONTROL CHARACTER OR SPACE
	 JRST NMS6B7
;WE HAVE ENCOUNTERED A BREAK CHARACTER - DECIDE WHAT TO DO WITH COMPONENT
NMS6B8:	SKIPN D,(AR1)
	 POPJ P,		;NO CHARACTERS ASSEMBLED YET
IT$	SKIPN -2(AR1)		;IF WE HAVE A FILE NAME 1, THIS MUST BE FN2
10$	TLNN AR2A,NMS.DT	;WE HAVE SEEN A DOT, THIS MUST BE THE EXTENSION
	 JRST NMS6B5		;OTHERWISE THIS IS FILE NAME 1
IT$	SKIPE -1(AR1)		;LOSE IF WE ALREADY HAVE A FILE NAME 2
10$	TLNE AR2A,NMS.XT+NMS.LB+NMS.CM+NMS.RB
	 JRST NMS6BL		;LOSE IF EXTENSION AFTER BRACKETS OR OTHER ONE
IT$	MOVEM D,-1(AR1)
10$	HLLZM D,-1(AR1)
10$	TLO AR2A,NMS.XT		;SET FLAG: WE'VE SEEN THE EXTENSION
;COME HERE TO RESTORE THE BYTE POINTER FOR THE NEXT COMPONENT
NMS6B6:	JUMPE AR1,CPOPJ		;IF AN ERROR HAS BEEN DETECTED, EXIT
	HRLI AR1,440600
	MOVE D,PNBP		;RESET THE PNBUF BYTE POINTER ALSO
	MOVEM D,1(AR1)
10$	TLZ AR2A,NMS.ND+NMS.ST	;RESET NON-OCTAL-DIGIT AND STAR SEEN FLAGS
	SETZM (AR1)		;CLEAR ACCUMULATION WORD
	POPJ P,

;COME HERE FOR FILE NAME 1
NMS6B5:
10$	TLNE AR2A,NMS.FN+NMS.DT+NMS.XT+NMS.LB+NMS.CM+NMS.RB
10$	 JRST NMS6BL		;LOSE IF TOO LATE FOR A FILE NAME
	MOVEM D,-2(AR1)		;SAVE FILE NAME 1
	JRST NMS6B6

;HERE WITH A NON-CONTROL NON-SPACE CHARACTER
NMS6B7:	TLZN AR2A,NMS.CQ
	 TLNE AR1,NMS.CA
	  JRST NMS6B9		;IF CHARACTER QUOTED (FOR ↑Q, FLAG IS RESET)
	CAIN A,":
	 JRST NMS6DV		;: SIGNALS A DEVICE NAME
IT$	CAIN A,";
IT$	 JRST NMS6SN		;; MEANS AN SNAME
IFN D10,[
	CAIN A,".
	 JRST NMS6PD		;PERIOD MEANS TERMINATION OF FILE NAME
	CAIN A,133
	 JRST NMS6LB		;LEFT BRACKET
	CAIN A,",
	 JRST NMS6CM		;COMMA
	CAIN A,135
	 JRST NMS6RB		;RIGHT BRACKET
	CAIN A,"*
	 JRST NMS6ST		;STAR
]		;END OF IFN D10
;HERE TO DUMP A CHARACTER INTO THE ACCUMULATING COMPONENT
NMS6B9:
IFN D10,[
IFE SAIL,[
	SKIPN CMUP
	 JRST .+4
	  SKIPE PNBUF+LPNBUF-1
	   TDZA AR1,AR1		;ASSUME A COMPONENT THAT FILLS PNBUF IS A LOSER
	    IDPB A,1(AR1)	;STICK ASCII CHARACTER IN PNBUF
]	;END OF IFE SAIIL
	CAIL A,"0
	 CAILE A,"7
	  TLO AR2A,NMS.ND	;SET FLAG IF NON-OCTAL-DIGIT
NMS6B4:
]		;END OF IFN D10
	CAIGE A,140		;CONVERT LOWER CASE TO UPPER,
	 SUBI A,40		; AND ASCII TO SIXBIT
	TLNE AR1,770000
	 IDPB A,AR1		;DUMP CHARACTER INTO ACCUMULATING NAME
	POPJ P,

NMS6BQ:	TLCA AR2A,NMS.CA	;COMPLEMENT CONTROL-A FLAG
NMS6BL:	 SETZ AR1,		;ZEROING AR1 INDICATES A PARSE ERROR
	POPJ P,

NMS6DV:	SKIPE D,(AR1)		;ERROR IF : SEEN WITH NO PRECEDING COMPONENT
10$				;ERROR AFTER OTHER CRUD
10$	 TLNE AR2A,NMS.DV+NMS.FN+NMS.DT+NMS.XT+NMS.LB+NMS.CM+NMS.RB
10%	 SKIPE -4(AR1)		;ERROR IF DEVICE NAME ALREADY SEEN
	  JRST NMS6BL
	MOVEM D,-4(AR1)
10$	TLO AR2A,NMS.DV
	JRST NMS6B6		;RESET BYTE POINTER

IFN ITS,[
NMS6SN:	SKIPE D,(AR1)		;ERROR IF ; SEEN WITHOUT PRECEDING COMPONENT
	 SKIPE -3(AR1)		;ERROR IF WE ALREADY HAVE AN SNAME
	  JRST NMS6BL
	MOVEM D,-3(AR1)
	JRST NMS6B6		;RESET BYTE POINTER
]		;END OF IFN ITS

IFN D10,[
NMS6PD:	TLNE AR2A,NMS.DT+NMS.XT+NMS.LB+NMS.CM+NMS.RB
	 JRST NMS6BL
	PUSHJ P,NMS6B8		;DOT SEEN - SEE IF IT TERMINATED THE FILE NAME
	TLO AR2A,NMS.DT		;SET PERIOD (DOT) FLAG
	POPJ P,

NMS6LB:	TLNE AR2A,NMS.LB+NMS.CM+NMS.RB
	 JRST NMS6BL		;LEFT BRACKET ERROR IF ALREADY  A BRACKET 
	PUSHJ P,NMS6B8		;DID WE TERMINATE THE FILE NAME OR EXTENSION?
	TLO AR2A,NMS.LB		;SET LEFT BRACKET FLAG
NMS6L1:
SA%	HRLI AR1,440300
SA$	HRLI AR1,440600
	POPJ P,

NMS6CM:	LDB D,[360600,,AR1]
	CAIE D,44		;ERROR IF NO CHARACTERS AFTER LEFT BRACKET
	 TLNN AR2A,NMS.LB	;ERROR IF NO LEFT BRACKET!
	  JRST NMS6BL
SA%	TLNE AR2A,NMS.ND+NMS.CM+NMS.RB
SA$	TLNE AR2A,NMS.CM+NMS.RB
	 JRST NMS6BL		;ERROR IF NON-OCTAL-DIG, COMMA, OR RGT BRACKET
	PUSHJ P,NMS6PP		;HACK HALF A PPN
	JUMPE AR1,CPOPJ
	HRLM D,-3(AR1)
	TLO AR2A,NMS.CM		;SET COMMA FLAG
	SETZM (AR1)		;CLEAR COLLECTING WORD
	JRST NMS6L1		;RESET BYTE POINTER

NMS6RB:
	LDB D,[360600,,AR1]
SA%	SKIPN CMUP
	 TLNE AR2A,NMS.CM	;MUST HAVE COMMA BEFORE RB IN NON-CMU
	  CAIN D,44		;ERROR IF NO CHARS SINCE COMMA/LEFT BRACKET
	   JRST NMS6BL
	TLNE AR2A,NMS.LB	;ERROR IF NO LEFT BRACKET
	 TLNE AR2A,NMS.RB	;ERROR IF RIGHT BRACKET ALREADY SEEN
	  JRST NMS6BL
IFE SAIL,[
	SKIPN CMUP
	 JRST .+3
	  TLNN AR2A,NMS.CM	;FOR CMU, NO COMMA MEANS A CMU-STYLE PPN
	   JRST NMS6R1
]	;END OF IFE SAIL
	PUSHJ P,NMS6PP		;FIGURE OUT HALF A PPN
	JUMPE AR1,CPOPJ
	HRRM D,-3(AR1)
NMS6R2:	TLO AR2A,NMS.RB		;SET RIGHT BRACKET FLAG
	JRST NMS6B6		;RESET THE WORLD
IFE SAIL,[
NMS6R1:	MOVEI D,PNBUF
	CMUDEC D,		;CONVERT CMU-STYLE PPN TO A WORD
	 JRST NMS6BL		;LOSE LOSE
	MOVEM D,-3(AR1)		;WIN - SAVE IT AWAY
	JRST NMS6R2
]	;END OF IFE SAIL

NMS6ST:	TLOE AR2A,NMS.ST	;SET STAR FLAG, SKIP IF NOT ALREADY SET
	 TLO AR2A,NMS.ND	;TWO STARS = A NON-DIGIT FOR PPN PURPOSES
	JRST NMS6B4

NMS6PP:
SA%	TLNE AR2A,NMS.ND
SA%	 SETZ AR1,		;NON-DIGIT IN PPN IS AN ERROR
	HRRZI D,-1
	TLNE AR2A,NMS.ST	;STAR => 777777
	 POPJ P,
	LDB TT,[360600,,AR1]
	CAIGE TT,22
	 SETZ AR1,		;MORE THAN SIX DIGITS LOSES
	MOVNS TT
	MOVE D,(AR1)
	LSH D,(TT)		;RIGHT-JUSTIFY THE DIGITS
	POPJ P,
]		;END OF IFN D10

]		;END OF IFN ITS+D10
;NMS6BB NMS6BA NMS6B0 NMS6BT JFN6BT JS%OUT JFN6BC JFN6BX JFN6BU RLJLUZ JFN6BY JFN6ER JFN6BA JFN6BB LFGB20 LFGB10

IFN D20,[

;;; THE STRATEGY HERE IS TO USE GTJFN TO PARSE THE STRING,
;;; THEN GET THE VARIOUS COMPONENTS BACK SINGLY WITH JFNS.

NMS6BB:	MOVE A,AR1
NMS6BA:	UNLOCKI

NMS6B0:	%WTA (T)
NMS6BT:	MOVEI T,[SIXBIT \FIXNUM ILLEGAL AS NAMESTRING\]
	LOCKI			;LOCK OUT INTERRUPTS (BECAUSE OF JSYS'S)
	MOVEI TT,(A)		;DON'T ALLOW FIXNUMS AS NAMESTRINGS
	LSH TT,-SEGLOG
	MOVSI R,FX
	TDNE R,ST(TT)		;A FIXNUM?
	 JRST NMS6BA		;YES, ILLEGAL AS A NAMESTRING
	PUSHJ P,PNBFMK		;STRING OUT CHARACTERS INTO PNBUF
	MOVEI T,[SIXBIT \NAMESTRING TOO LONG!\]
	JUMPE AR2A,NMS6BA	;LOSE IF DIDN'T FIT IN PNBUF
	SETZ B,
	IDPB B,AR1		;TERMINATE STRING WITH A NULL (ZERO) BYTE
	MOVE AR1,A		;SAVE ORIGINAL ARG IN CASE OF ERROR
	MOVEI T,[SIXBIT \LONG GTJFN FAILED IN NAMESTRING!\]
	MOVEI 1,LFGB20
	SKIPE TENEXP
	 MOVEI 1,LFGB10
	MOVE 2,PNBP
	GTJFN			;GET A JFN FOR PARSED NAMESTRING
	 IOJRST 0,NMS6BB	; PRESUMABLY, THE COMPONENTS CANT BE "TOO LONG"

				;R=0 => NMS6BT
	TDZA R,R		;CONVERT JFN IN 1 TO "SIXBIT" ON FXP
JFN6BT:	 MOVEI R,1		; SKIP ON FAILURE
	POP FXP,F		;POP LOCKI WORD (COME IN LOCKED, EXIT UNLOCKED)
	MOVE D,FXP		.SEE TRUENAME	
	MOVE 2,1		;"INDEXABLE FILE HANDLE" RETURNED BY GTJFN
	SETZM PNBUF
	MOVE T,[PNBUF,,PNBUF+1]
	BLT T,PNBUF+LPNBUF-1
	PUSHJ P,JFN6BB		;INITIALIZE PNBUF AN AC 1

	.SEE JS%DEV JS%DIR JS%NAM JS%TYP JS%GEN
JS%OUT==:<.JSAOF*111111111111>
	MOVSI 3,(JS%DEV&JS%OUT)
	JFNS
	 ERJMP JFN6BY		;IF ERROR THEN TRY DEVST
	MOVNI T,L.6DEV		;STACK UP DEVICE FIELD ON FXP, AND
	PUSHJ P,JFN6BA		;ZERO PNBUF, SETUP 1
IRP LEN,,[L.6DIR,L.6FNM,L.6EXT]FLD,,[DIR,NAM,TYP]
	MOVSI 3,(JS%!FLD&JS%OUT)
	JFNS				;GET ASCIZ STRING FOR NEXT COMPONENT 
	MOVNI T,LEN		;STACK UP ONE FIELD ON FXP, AND
	PUSHJ P,JFN6BA		;ZERO PNBUF, SETUP 1
TERMIN
	MOVSI 3,(JS%GEN&JS%OUT)
	JFNS				;GET ASCIZ STRING FOR VERSION NUMBER
	SKIPN T,PNBUF
	 JRST JFN6BC
	CAMN T,[ASCII \99999\]
	 CAME 1,[010700,,PNBUF]
	 JRST .+2
	   SETZ T,
JFN6BC:	SKIPN T
	 MOVE T,DFNWD
	PUSH FXP,T			;STACK UP THE FEW WORDS OF "VERSION"
	REPEAT L.6VRS-1, PUSH FXP,PNBUF+1+.RPCNT

JFN6BX:	PUSH FXP,F			;PUSH LOCKI WORD BACK
	JUMPN R,JFN6BU			;NON-ZERO ==> ENTRY FROM TRUENAME ETC
	 MOVEI 1,(2)
	 RLJFN				;RELEASE THE JFN FOR NMS6BT
	 JSP T,RLJLUZ
JFN6BU:	UNLKPOPJ

RLJLUZ:	LERR [SIXBIT \A "RLJFN" HAS LOST SOMEWHERE!\]

JFN6BY:	MOVEI T,[SIXBIT \DEVICE FAILURE IN NAMESTRING!\]
	CAIE 2,.PRIIN		;PRIMARY INPUT?
	 CAIN 2,.PRIOU		;OR PRIMARY OUTPUT
	  SKIPA			;YES
	   JRST JFN6ER		;NOPE, FAIL
	PUSH FXP,[ASCII/PRIMA/]
	PUSH FXP,[ASCIZ/RY/]
	PUSHN FXP,\<<L.6DEV-2>+L.6DIR+L.6FNM+L.6EXT+L.6VRS>
	JRST JFN6BX

JFN6ER:	MOVE FXP,D		;FLUSH ALL CRUD OFF FXPDL
	PUSH FXP,F		;PUSH LOCKI WORD BACK
	JUMPE R,NMS6BB		;FOR NMS6BT, GO GIVE WTA ERROR
	AOS (P)			;FOR JFN6BT, SKIP ON FAILURE
	UNLKPOPJ


;;; SUBROUTINE TO "ADD" ONE ITEM OF INFORMATION TO THE FORMING SIXBIT
JFN6BA:	HRLS T
	HRRI T,PNBUF
	PUSH FXP,(T)		;STACK UP PNBUF, TO LIMIT GIVEN IN T
	AOBJN T,.-1
JFN6BB:	MOVE 1,PNBP		;STRING PTR FOR NEXT CALL TO JNFS
	MOVNI T,LPNBUF
	SKIPN PNBUF+LPNBUF(T)
	 POPJ P,
	SETZM PNBUF+LPNBUF(T)	;CLEAR OUT PNBUF
	AOJL T,.-3
	POPJ P,

LFGB20:	GJ%ACC+GJ%OFG+GJ%FLG 	99999.	;BLOCK FOR LONG FORM OF GTJFN
		.NULIO,,	.NULIO
REPEAT,4	440700,,	R70	;DEFAULT STRINGS FOR  dev:<dir>fnm.ext
REPEAT 3,	0

LFGB10:	GJ%ACC+GJ%OFG+GJ%FLG 	99999.	;BLOCK FOR LONG FORM OF GTJFN
		.NULIO,,	.NULIO
		0 			;DEFAULT DEVICE?
REPEAT,4	0			;DEFAULT STRINGS FOR  <dir>fnm.ext
;REPEAT,4	440700,,	R70	;DEFAULT STRINGS FOR  <dir>fnm.ext
REPEAT 3,	0

]		;END OF IFN D20
;IFL6BT FILSFA FIL6BT FIL6B0 FIL6DF FIL6B1 FIL6B2 NMH6BT QIOSAV LQIOSV

SUBTTL	CONVERSION: ANY FILE SPEC => SIXBIT

;;; TAKE ARGUMENT IN A (MAY BE FILE ARRAY, NAMELIST,
;;; OR NAMESTRING), FIGURE IT OUT AND SOMEHOW RETURN
;;; "SIXBIT" FORMAT ON FXP.
;;; IFL6BT SAYS THAT T MEANS TTY INPUT, NOT TTY OUTPUT.

;;; SAVES C AR1 AR2A

IFL6BT:	CAIN A,TRUTH
	 HRRZ A,V%TYI
	JRST FIL6B0
IFN SFA,[
FILSFA:	MOVEI B,QNAME		;EXTRACT THE "FILENAME" FROM THE SFA
	SETZ C,			;NO ARGS
	PUSHJ P,ISTCSH		;SHORT CALL, THEN USE RESULT AS NEW NAME
]		;END IFN SFA

FIL6BT:	CAIN A,TRUTH
	 HRRZ A,V%TYO
FIL6B0:	SKIPN A			;NIL => USE "DEFAULTF"
FIL6DF:	 HRRZ A,VDEFAULTF	;USE "DEFAULTF"
FIL6B1:	MOVEI R,(A)
	LSH R,-SEGLOG
	SKIPGE R,ST(R)		;LIST => NAMELIST
	 JRST NMH6BT		; OR POSSIBLY "NAMESTRING" AS A USER HUNK
	TLNN R,SA
	 JRST FIL6B2		;NOT ARRAY => NAMESTRING
	MOVE R,ASAR(A)
SFA$	TLNE R,AS.SFA		;AN SFA?
SFA$	 JRST FILSFA		;YES, EXTRACT NAME FROM IT AND TRY AGAIN
	TLNN R,AS<JOB+FIL>
	 JRST NMS6B0		;INCOMPREHENSIBLE NAMESTRING
	LOCKI			;FOR FILE, GOBBLE NAMES OUT OF FILE OBJECT
	POP FXP,D		;POP LOCKI WORD
	MOVE TT,TTSAR(A)
	ADDI TT,F.DEV
	HRLI TT,-L.F6BT
	PUSH FXP,(TT)		;PUSH ALL WORDS OF FILE SPEC
	AOBJN TT,.-1
	PUSH FXP,D		;PUSH BACK LOCKI WORD
	UNLKPOPJ		;UNLOCK AND EXIT

FIL6B2:	JSP T,QIOSAV		;A SYMBOL IS A NAMESTRING.
	JRST NMS6BT

NMH6BT:	TLNN R,ST.HNK
	 JRST NML6BT
	JSP T,QIOSAV
	PUSHJ P,USRHNP		;find out if this is a user's hunk
	JUMPE T,NMS6B0		;LOSE IF HUNK, BUT NOT "EXTEND"
	PUSH P,[NMS6BT]
	PUSH P,A
	PUSH P,[QNAMESTRING]
	MOVNI T,2
	XCT SENDI

QIOSAV:	SAVE B C AR1 AR2A
	PUSHJ P,(T)
	RSTR AR2A AR1 C B
	POPJ P,
LQIOSV==5			; 5 THINGS - 4 AC'S AND ONE RET ADDR
.SEE 6BTNS8			;RELIES ON AC C BEING SAVED IN CERTAIN SPOT

;MERGEF MRGF1 DMRGF DMRGF7 ZZZ ZZZ DMRGF5 DMRGF6 TNXUDI TNXUD0 TNXUD3 TNXUD6 TNXUD5 TNXUD2 TNXU9P TNXU9D TNXST9 TNXDIE IMRGF MRGF2 MRGF3 C6BTNML TRUNM9 TRUENAME TRUNMZ TRU6BT TRUNM2 TRUNM8 TRUNM0 SUREAD SUWRITE

SUBTTL	MERGEF, TRUENAME, PROBEF AND MERGING ROUTINES

;;; MERGEF TAKES TWO FILE SPECS OF ANY KIND, MERGES THEM,
;;; AND RETURNS A NAMELIST OF THE RESULTING SPECS.
;;; AS A CROCK, (MERGEF X '*) SIMPLY MAKES THE SECOND FILE NAME BE *.
;;;   (FOR D20, THE VERSION BECOMES NULL)

MERGEF:	PUSH P,B
	PUSHJ P,FIL6BT
	POP P,A
	CAIE A,Q.
	 JRST MRGF1
20%	MOVE T,DFNWD
20%	MOVEM T,(FXP)
20$ REPEAT L.6VRS,	SETZM -.RPCNT(FXP)
	JRST 6BTNML

MRGF1:	PUSHJ P,FIL6BT
	PUSHJ P,IMRGF
	JRST 6BTNML

;;; IMRGF MERGES TWO SETS OF SPECS ON THE FIXNUM PDL.
;;; DMRGF MERGES A SET WITH THE DEFAULT FILE NAMES.
;;; DEC-10 PPN'S MERGE HALVES OF THE PPN SEPARATELY;
;;; AN UNSPECIFIED HALF IS -1 OR 0, *NOT* (SIXBIT \*\)!!
;;; SAVES F (SEE LOAD).

DMRGF:
;FIRST SEE WHETHER WE REALLY NEED TO CONVERT THE DEFAULTS TO "SIXBIT"
IFN ITS+D10,[
	MOVE TT,DFNWD
REPEAT L.F6BT,[
IFN ITS\<.RPCNT-1>,[
	CAME TT,.RPCNT-3(FXP)	;MUST MERGE IF FILE NAME IS ZERO OR *
	 SKIPN .RPCNT-3(FXP)
	  JRST DMRGF5
]		;END OF IFN ITS\<.RPCNT-1>
.ELSE,[
	MOVE T,.RPCNT-3(FXP)
	AOJE T,DMRGF7
	SOJE T,DMRGF7
	TRNE T,-1
	 TRNN T,-1
	  JRST DMRGF5
	 SKIPA
DMRGF7:	SETZM .RPCNT-3(FXP)	
]		;END OF .ELSE
]		;END OF REPEAT L.F6BT
]		;END OF IFN ITS+D10
IFN D20,[
	MOVE TT,DFNWD
ZZZ==0
IRP FOO,,[L.6VRS,L.6EXT,L.6FNM,L.6DIR,L.6DEV]
ZZZ==ZZZ+FOO
	CAME TT,-ZZZ+1(FXP)
	 SKIPN -ZZZ+1(FXP)
	   JRST DMRGF5
TERMIN
EXPUNGE ZZZ
]		;END OF IFN D20
	POPJ P,			;MERGE WOULDN'T DO ANYTHING - FORGET IT

DMRGF5:	PUSH FLP,F		;MERGE WITH DEFAULT FILE NAMES
	HRRZ A,VDEFAULTF
	PUSHJ P,FIL6BT
	POP FLP,F
20% 	;JRST IMRGF
IFN D20,[
	PUSHJ P,IMRGF
	SKIPE TT,-L.F6BT+L.6DEV+1(FXP)
	 CAMN TT,DFNWD
	  JRST .+2
	   POPJ P,
	PUSH P,A
	JSP T,TNXUDI
	MOVEI D,-L.F6BT+L.6DEV+1(FXP)
	HRLI D,-L.6DIR
	MOVNI T,1		;Initialize pointer into PNBUF
DMRGF6:	AOJ T,			;Loop copying default directory onto FXP
	MOVE R,PNBUF(T)
	MOVEM R,(D)
	JUMPE R,POPAJ		;Terminate loop when no end of string
	AOBJN D,DMRGF6		; or when no more room
	JRST POPAJ

;;; CODE TO GET THE CONNECTED DIRECTORY NAME INTO THE PNBUF
TNXUDI:	MOVE TT,[PNBUF,,PNBUF+1]
	SETZM PNBUF		;CLEAR PNBUF
	BLT TT,PNBUF+LPNBUF-1
	LOCKI
	GJINF			;GET JOB INFORMATION
	MOVE 1,PNBP		;POINTER INTO PNBUF
	DIRST			;GET EQUIVALENT ASCII STRING
	 JRST TNXU9D		;HMM...
	MOVE 1,PNBP
TNXUD0:	 ILDB D,1		;SCAN DEVICE-NAME PART
	 CAIN D,0
	  JRST TNXUD2		;WIN! NOT PUNCTUATION ANYWAY!
	 CAIE D,↑V
	 CAIE D,":
	  JRST TNXUD0
	ILDB D,1
	CAIE D,"<
	  JRST TNXU9P
	MOVE 2,PNBP
TNXUD3:	 ILDB D,1		;TRANSFER DIRECTORY-NAME PART
	 CAIN D,0
	  JRST TNXU9P
	 CAIE D,↑V
	  JRST TNXUD5
	 IDPB D,2
	 ILDB D,1
TNXUD6:	 IDPB D,2
	 JRST TNXUD3
TNXUD5:	 CAIE D,">
	  JRST TNXUD6
	MOVEI D,0
	MOVEI A,9
	IDPB D,2		;PAD LIKE ASCIZ WITH AN EXTRA WORD OF 0'S
	SOJG A,.-1
TNXUD2:	SETZB 1,2
	UNLOCKI
	JRST (T)


TNXU9P: MOVE 1,[440700,,[ASCIZ \Punctuated string in PNBUF loses in TNXUDI\]]
	JRST TNXDIE
TNXU9D: SKIPA 1,[440700,,[ASCIZ \DIRST loses in TNXUDI\]]
TNXST9:	MOVE 1,[440700,,[ASCIZ \GETTAB loses in TNXSET\]]
TNXDIE:	PSOUT
	HALTF

]	;END OF IFN D20


IMRGF:  MOVE TT,DFNWD		;MERGE TWO SETS OF NAMES ON FXP,
				;  "POPPING" THE TOP ONE OFF
IFN ITS+D10,[
	MOVEI T,L.F6BT
MRGF2:
10$	MOVE R,D
	POP FXP,D
10$	CAIE T,2		;PPN IS PENULTIMATE FROB - DON'T COMPARE TO *
	 CAME TT,-3(FXP)
	  SKIPN -3(FXP)
	   MOVEM D,-3(FXP)
	SOJG T,MRGF2
IFN D10,[
	MOVE D,-2(FXP)		;R HAS PPN 2 - GET PPN 1 IN D
	AOJE D,MRGF3
	SOJE D,MRGF3
	TLNN D,-1
	 HLLM R,-2(FXP)
	TRNN D,-1
	 HRRM R,-2(FXP)
	SKIPA
MRGF3:	MOVEM R, -2(FXP)	;USED TO SETZM, BUT SEEMS WRONG - RPG
]		;END OF IFN D10
]		;END OF IFN ITS+D10
IFN D20,[
IRP FOO,,[VRS,EXT,FNM,DIR,DEV]
	CAME TT,-L.6!FOO-L.F6BT+1(FXP)
	 SKIPN -L.6!FOO-L.F6BT+1(FXP)
	   JRST IM!FOO!1
	POPI FXP,L.6!FOO
	JRST IM!FOO!2
IM!FOO!1:
IFLE L.6!FOO-3,	REPEAT L.6!FOO,	POP FXP,-L.F6BT(FXP)
.ELSE,[
	MOVEI T,L.6!FOO
	POP FXP,-L.F6BT(FXP)
	SOJG T,.-1
]		;END OF .ELSE
IM!FOO!2:
TERMIN
]		;END OF IFN D20
C6BTNML:	POPJ P,6BTNML
 
;;; (TRUENAME <FILE>) RETURNS THE RESULT OF .RCHST ON ITS,
;;; I.E. THE REAL FILE NAMES AFTER TRANSLATIONS, LINKS, ETC.
;;; THE RESULT IS A NAMELIST.

TRUNM9:	EXCH A,AR1
	%WTA NFILE
				   ;SUBR 1
TRUENAME:			   ;MUST SAVE AR1 - SEE PRNF6-PRNJ2
IFN SFA,[
	CAIN A,TRUTH		   ;T?
	  HRRZ A,V%TYO		   ;  Use TYO
	EXCH AR1,A
	JSP TT,XFOSP		;FILE OR SFA OR NOT?
	 JRST TRUNM9		;NOT
	 JRST TRUNMZ		;FILE
	EXCH A,AR1
	JSP T,QIOSAV
	MOVEI B,QTRUENAME
	SETZ C,			;NO THIRD ARG
	JRST ISTCSH		;SHORTY INTERNAL STREAM CALL
TRUNMZ:	EXCH A,AR1
]		;END IFN SFA
	PUSH P,C6BTNML
TRU6BT:	CAIN A,TRUTH
	 HRRZ A,V%TYO
TRUNM2:	EXCH AR1,A
	LOCKI
	JSP TT,XFILEP
	 JRST TRUNM8
	EXCH A,AR1
	HRRZ TT,TTSAR(A)
IFN ITS+D10,[
	POP FXP,T		;POP THE LOCKI WORD
	HRLI TT,-L.F6BT
	PUSH FXP,F.RDEV(TT)
	AOBJN TT,.-1
	PUSH FXP,T		;PUSH LOCKI WORD BACK
	UNLKPOPJ

]		;END OF ITS+D10
IFN D20,[			
	PUSH P,A
	MOVE 1,F.JFN(TT)
	PUSHJ P,JFN6BT		;GET "SIXBIT" ON FXP, AND UNLOCKI
	 JRST POPAJ		;  ON SUCCESS, LEAVES "SIXBIT" FORMS ON FXPDL
	POP P,A
	JRST TRUNM0
]		;END OF IFN D20

TRUNM8:	UNLOCKI
	EXCH AR1,A
TRUNM0:	%WTA NFILE		;NOT FILE
SFA$	MOVE T,C6BTNML		;IF NOT CALLED AS A SUBR, ONLY ACCEPT A FILE
SFA$	CAME T,(P)
	 JRST TRUNM2
SFA$	POPI P,1
SFA$	JRST TRUENAME

;;; (STATUS UREAD)

SUREAD:	SKIPN A,VUREAD
	 POPJ P,
	PUSHJ P,TRUENAME
	HLRZ B,(A)
	HRRZ A,(A)
	HRRZ C,(A)
20$	HRRZ C,(C)
20$	HRRM C,(A)
	HRRM B,(C)
	POPJ P,

;;; (STATUS UWRITE)

SUWRITE:	SKIPE A,VUWRITE
	PUSHJ P,TRUENAME
	JRST $CAR		;(CAR NIL) => NIL
;2MERGE PROBEF PROBEZ PROBF0 D10RFN PROBF6 PROBF8 PROBF9

;;; ROUTINE TO SET UP ARGS FOR TWO-ARGUMENT FILE FUNCTION.
;;; PUT TWO SETS OF FILE NAMES ON FXP.  IF THE ARGS ARE
;;; X AND Y, THEN THE NAMES ON FXP ARE (MERGEF X NIL) AND
;;; (MERGEF Y (MERGEF X NIL)).  THE FIRST ARG IS LEFT IN AR1.

2MERGE:	PUSH P,A
	PUSH P,B
	PUSHJ P,FIL6BT
	PUSHJ P,DMRGF
	POP P,A
	PUSHJ P,FIL6BT
	MOVEI T,L.F6BT
	PUSH FXP,-2*L.F6BT+1(FXP)
	SOJG T,.-1
	PUSHJ P,IMRGF		;NOW WE HAVE THE MERGED FILE SPECS
	POP P,AR1			;FIRST ARG
	POPJ P,


;;; (PROBEF X) TRIES TO DECIDE WHETHER FILE X EXISTS.
;;; ON ITS AND D10 THIS IS DONE BY TRYING TO OPEN THE FILE.
;;; ON D20 WE USE THE GTJFN JSYS.
;;; RETURNS REAL FILE NAMES ON SUCCESS, NIL ON FAILURE.

PROBEF:				;SUBR 1
	JSP T,QIOSAV
IFN SFA,[
	JSP TT,AFOSP		;DO WE HAVE AN SFA?
	 JRST PROBEZ		;NOPE
	 JRST PROBEZ		;NOPE
	MOVEI B,QPROBEF		;PROBEF OPERATION
	SETZ C,			;NO ARGS
	JRST ISTCSH		;SHORT CALL, RETURN RESULTS
PROBEZ:	]	;END IFN SFA
	PUSHJ P,FIL6BT
PROBF0:	PUSHJ P,DMRGF
IFN ITS,[
	LOCKI
	SETZ TT,		;ASSUME NO CONTROL ARG
	MOVSI T,'USR		;CHECK FOR USR DEVICE
	CAMN T,-3-1(FXP)	;MATCH?
	 TRO TT,10		;SET BIT 1.4 (INSIST ON EXISTING JOB)
	.CALL PROBF8
	 JRST PROBF6
	.CALL PROBF9
	 .LOSE 1400
	.CLOSE TMPC,
	UNLOCKI
]		;END OF IFN ITS
IFN D10,[
	LOCKI
	MOVEI T,.IODMP		;I/O MODE (DUMP MODE)
	MOVE TT,-3-1(FXP)	;DEVICE NAME
	SETZ D,
	OPEN TMPC,T
	 JRST PROBF6		;NO SUCH FILE IF NO SUCH DEVICE!
IFE SAIL,[
	MOVEI T,3		;ONLY NEED 3 ARGS OF EXTENDED LOOKUP
	MOVE D,-1-1(FXP)	;FILE NAME
	HLLZ R,0-1(FXP)		;EXTENSION
	MOVE TT,-2-1(FXP)	;PPN
]		;END IFE SAIL
IFN SAIL,[
	MOVE T,-1-1(FXP)	;FILE NAME
	HLLZ TT,0-1(FXP)	;EXTENSION
	CAMN TT,[SIXBIT \←←←\]
	 SETZ TT,
	SETZ D,			;UNUSED
	MOVE R,-2-1(FXP)	;PPN
]		;END IFN SAIL
	LOOKUP TMPC,T
	 JRST PROBF5		;FILE DOESN'T EXIST
	PUSHJ P,D10RFN		;READ BACK FILE NAMES
	RELEASE TMPC,		;RELEASE TEMP CHANNEL
	UNLOCKI
	JRST 6BTNML		;FORM NAMELIST ON SUCCESS

D10RFN:	MOVEI F,TMPC		;WE WILL GET DEVICE NAME FROM MONITOR
SA%	DEVNAM F,
SA$	PNAME F,
	 SKIPA			;NONE SO RETAIN OLD NAME
	  MOVEM F,-3-1(FXP)	;ELSE STORE NEW DEVICE NAME
IFE SAIL,[
	MOVEM TT,-2-1(FXP)	;STORE DATA AS RETURNED FROM EXTENDED LOOKUP
	MOVEM D,-1-1(FXP)
	HLLZM R,0-1(FXP)
]		;END IFE SAIL
IFN SAIL,[
	MOVEM T,-1-1(FXP)	;SAIL HAS NO EXTENDED LOOKUP!!!!!
	HLLZM TT,0-1(FXP)	; SO, WE CAN'T STORE PPN; JUST ASSUME IT IS
				; WHAT WE GAVE IT
]		;END IFN SAIL
	POPJ P,
]		;END OF IFN D10
IFN D20,[
	PUSHJ P,6BTNSL		;GET NAMESTRING IN PNBUF
	LOCKI
	MOVSI 1,(GJ%OLD+GJ%ACC+GJ%SHT)	.SEE .GJDEF
	MOVE 2,PNBP
	GTJFN			;GET A JFN (INSIST ON EXISTING FILE)
	 JRST UNLKFALSE
	PUSH FLP,1		;SAVE JFN OVER JFN6BT
	PUSHJ P,JFN6BT		;CONVERT JFN TO "SIXBIT" FORMAT ON FXP
	 TDZA B,B
	  MOVEI B,TRUTH		;SKIPS ON FAILURE
	POP FLP,1
	RLJFN			;RELEASE THE JFN
	 JSP T,RLJLUZ
	JUMPN B,FALSE
]		;END OF IFN D20

10%	JRST 6BTNML
				
IFN ITS+D10,[
10$ PROBF5:	RELEASE TMPC,
PROBF6:	UNLOCKI
	POPI FXP,L.F6BT		;POP "SIXBIT" CRUD FROM FXP
	JRST FALSE		;RETURN FALSE ON FAILURE
]		;END OF IFN ITS+D10

IFN ITS,[
PROBF8:	SETZ
	SIXBIT \OPEN\		;OPEN FILE (ASCII UNIT INPUT)
	  4000,,TT		;CONTROL ARG (DON'T CREATE BIT SET FOR USR)
	  1000,,TMPC		;CHANNEL #
	      ,,-3-1(FXP)	;DEVICE NAME
	      ,,-1-1(FXP)	;FILE NAME 1
	      ,,0-1(FXP)	;FILE NAME 2
	400000,,-2-1(FXP)	;SNAME

PROBF9:	SETZ
	SIXBIT \RFNAME\		;READ REAL FILE NAMES
	  1000,,TMPC		;CHANNEL #
	  2000,,-3-1(FXP)	;DEVICE NAME
	  2000,,-1-1(FXP)	;FILE NAME 1
	  2000,,0-1(FXP)	;FILE NAME 2
	402000,,-2-1(FXP)	;SNAME
]		;END OF IFN ITS
;$RENAMEF RENAM2 RENM2A RENAM3 RENAM1 RENAM0 RENM0A RENM0B RENM1A RENAM7 RENAM8 RENAM4 RENAM5 RNAM5A RENAM4 RENAM5 RENAM6 RENAM9 XCIOL RFNAME CNAMEF CNAME3 CNAME2 CNAME1 CNAMER CNAER1 CNAER2

SUBTTL	RENAMEF FUNCTION, CNAMEF FUNCTION

;;; (RENAMEF X Y) RENAMES (MERGEF X (NAMELIST NIL)) TO BE
;;; (MERGEF Y (MERGEF X (NAMELIST NIL))).
;;; IF X IS AN OUTPUT FILE ARRAY, IT IS RENAMED AND CLOSED.

$RENAMEF:
	PUSHJ P,2MERGE		;2MERGE LEAVES ARG 1 IN AR1
	MOVEI A,(AR1)
	HLLOS NOQUIT
	JSP TT,XFILEP		;SKIP IF FILE ARRAY
	 JRST RENAM2
	MOVE TT,TTSAR(A)
	HLL AR1,TT
	TLNE TT,TTS.CL
	 JRST RENM2A
	JRST RENAM3

RENAM2:	MOVEI AR1,NIL		;FILE TO BE RENAMED IS SPECIFIED BY NAMELIST 
RENM2A:				; OR NAMESTRING, OR BY A CLOSED FILE ARRAY
IFN ITS,[
	.CALL RENAM8		;ORDINARY RENAME
	 IOJRST 0,RENAM6
	JRST RENM1A
]		;END OF IFN ITS
IFN D10,[
	MOVEI T,.IODMP		;TO RENAME A FILE, WE OPEN A DUMP MODE CHANNEL
	MOVE TT,-7(FXP)		;GET DEVICE NAME
	SETZ D,
	OPEN TMPC,T		;OPEN CHANNEL
	 JRST RENAM4
	MOVE T,-5(FXP)		;FILE NAME
	HLLZ TT,-4(FXP)		;EXTENSION
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	MOVE R,-6(FXP)		;PPN
	LOOKUP TMPC,T		;LOOK UP FILE
	 IOJRST 0,RENAM5
	MOVE T,-1(FXP)		;NEW FILE NAME
	HLLZ TT,(FXP)		;NEW EXTENSION
	SETZ D,
	MOVE R,-2(FXP)		;NEW PPN
	RENAME TMPC,T		;RENAME FILE
	 IOJRST 0,RENAM5
	RELEASE TMPC,
	JUMPE AR1,RENM1A
	JRST RENAM1
]		;END OF IFN D10
IFN D20,[
	MOVEI T,L.F6BT
	PUSH FXP,-2*L.F6BT+1(FXP)	;COPY OLD FILE NAMES TO TOP OF FXP
	SOJG T,.-1
	PUSHJ P,6BTNSL			;STRING OUT INTO PNBUF
	PUSH P,A
	MOVSI 1,(GJ%OLD+GJ%ACC+GJ%SHT)
	MOVE 2,PNBP
	GTJFN				;GET A JFN FOR OLD FILE NAMES
	 IOJRST 0,RENAM6
	EXCH 1,(P)			;PUSH JFN, AND RESTORE ACC A
	JRST RENAM0			; AND JOIN GENERAL RENAME
]		;END OF IFN D20


RENAM3: 			;First, de-allocate the channel number, and
IFN D10+ITS,[			; close out bits in the file array
	PUSHJ P,JCLOSE
IFN ITS,[
	.CALL RENAM7		;ITS RENAME!  -  MUST RENAME WHILE OPEN
	 IOJRST 0,RENAM6
]	;END OF IFN ITS
IFN D10,[
	MOVE F,F.CHAN(TT)	;ttsar left in TT by JCLOSE
	MOVE T,-1(FXP)		;D10 RENAME!  - will construct instruction
	HLLZ TT,(FXP)
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	MOVE R,-2(FXP)
	LSH F,27
	IOR F,[RENAME 0,T]
	XCT F
	 IOJRST 0,RENAM6
]	;END OF IFN D10
RENAM1:	MOVE TT,TTSAR(A)
	MOVE D,-1(FXP)		;UPDATE THE FILE NAMES OF ARRAY
	MOVEM D,F.FN1(TT)
10%	MOVE R,(FXP)
10$	HLLZ R,(FXP)
	MOVEM R,F.FN2(TT)
IFN D10,[
	MOVEM D,F.RFN1(TT)	;TRUENAMES for D10, and CLOSE/RELEASE
	MOVEM F,F.RFN2(TT)
	MOVE R,-2(FXP)
	MOVEM R,F.PPN(TT)
	MOVEM R,F.RPPN(TT)
SA$	XOR F,[<CLOSE 0,0>#<RENAME 0,T>]
SA$	XCT F
SA$	XOR F,[<RELEASE 0,0>#<CLOSE 0,0>]
SA%	XOR F,[<RELEASE 0,0>#<RENAME 0,T>]
	XCT F
]		;END OF IFN D10
IFN ITS,[
	.CALL RFNAME		;TRUENAMES for ITS and CLOSE file
	 .LOSE 1400
	.CALL CLOSE9
	 .LOSE 1400
]	;END OF IFN ITS
]	;END OF IFN D10+ITS
IFN D20,[
	PUSH P,F.JFN(TT)
	PUSHJ P,JCLOSE
RENAM0:	PUSHJ P,X6BTNSL
	POP P,T
	MOVSI 1,(GJ%FOU+GJ%NEW+GJ%ACC+GJ%SHT)
	MOVE 2,PNBP
	GTJFN
	 IOJRST 0,RENAM5
	MOVEI 2,(1)
	JUMPE AR1,RENM0A
	TLNE AR1,TTS.CL		;THE "CLOSED" BIT WAS TRANSFERRED
	 JRST RENM0A
	MOVEI 1,(T)
	HRLI 1,(CO%NRJ)
	CLOSF
	 IOJRST 0,RENAM4
RENM0A:	MOVEI 1,(T)
	RNAMF
	 IOJRST 0,RENAM4
	MOVE 1,2
	RLJFN			;? SHOULD GC DO THE RELEASE?
	 JSP T,RLJLUZ
	JUMPE AR1,RENM0B
	MOVE TT,TTSAR(AR1)
	MOVEI T,F.DEV(TT)
	HRLI T,-L.F6BT+1(FXP)
	BLT T,F.DEV+L.F6BT-1(TT)
RENM0B:	JUMPE AR1,RENM1A
]		;END OF IFN D20
	POPI FXP,L.F6BT		;WHEN 1ST ARG IS FILE ARRAY, THEN RETURN THAT
	SKIPA A,AR1
RENM1A:	PUSHJ P,6BTNML		;OTHERWISE, RET VAL IS THE (NEW) NAMELIST
	POPI FXP,L.F6BT
	JRST CZECHI


IFN ITS,[
RENAM7:	SETZ
	SIXBIT \RENMWO\		;RENAME WHILE OPEN
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,-1(FXP)		;NEW FILE NAME 1
	400000,,(FXP)		;NEW FILE NAME 2

RENAM8:	SETZ
	SIXBIT \RENAME\		;RENAME
	      ,,-7(FXP)		;DEVICE NAME
	      ,,-5(FXP)		;OLD FILE NAME 1
	      ,,-4(FXP)		;OLD FILE NAME 2
	      ,,-6(FXP)		;SNAME
	      ,,-1(FXP)		;NEW FILE NAME 1
	400000,,(FXP)		;NEW FILE NAME 2
]		;END OF IFN ITS

IFN D20,[
RENAM4:	MOVE 1,2
	RLJFN
	 JSP T,RLJLUZ
RENAM5:	JUMPE AR1,RNAM5A
	TLNE AR1,TTS.CL		;THE "CLOSED" BIT WAS TRANSFERRED
	 JRST RNAM5A
	MOVEI 1,(T)
	HRLI 1,(CO%NRJ)
	CLOSF
	 IOJRST 0,RNAM5A
RNAM5A:	MOVE 1,T
	RLJFN
	 JSP T,RLJLUZ
]		;END OF IFN D20
IFN D10,[
RENAM4:	SKIPA C,[NSDERR]
RENAM5:	 RELEASE TMPC,
]		;END OF IFN D10
RENAM6:	PUSHJ P,CZECHI
RENAM9:	PUSHJ P,6BTNML		;ERROR MESSAGE IS IN C
	PUSHJ P,NCONS
	PUSH P,A
	PUSHJ P,6BTNML
	POP P,B
	PUSHJ P,CONS
	MOVEI B,Q$RENAMEF
XCIOL:	PUSHJ P,XCONS		;XCONS, THEN IOL
	%IOL (C)

10$ NSDERR:	SIXBIT \NO SUCH DEVICE!\

IFN ITS,[
RFNAME:	SETZ
	SIXBIT \RFNAME\		;READ FILE NAMES
	      ,,F.CHAN(TT)		;CHANNEL #
	  2000,,F.RDEV(TT)		;DEVICE NAME
	  2000,,F.RFN1(TT)		;FILE NAME 1
	  2000,,F.RFN2(TT)		;FILE NAME 2
	402000,,F.RSNM(TT)		;SNAME
]		;END OF IFN ITS

CNAMEF:	PUSHJ P,2MERGE		;LEAVES FIRST ARG IN AR1
	JSP TT,XFILEP
	 JRST CNAME1
	MOVE TT,TTSAR(AR1)
	TLNN TT,TTS.CL		;FILE-ARRAY MUST BE CLOSED
	 JRST CNAME2
	ADDI TT,L.F6BT
	MOVEI F,L.F6BT		;COUNTER TO TRANSFER WORDS
CNAME3:	MOVE T,(FXP)
	MOVEM T,F.DEV-1(TT)
20$	POPI FXP,1
20%	POP FXP,F.RDEV-1(TT)
	SUBI TT,1
	SOJG F,CNAME3
	POPI FXP,L.F6BT
	MOVEI A,(AR1)
	POPJ P,

CNAME2:	SKIPA C,[CNAER2]
CNAME1:	 MOVEI C,CNAER1
CNAMER:	PUSHJ P,6BTNML		;ERROR MESSAGE IS IN C
	PUSHJ P,NCONS
	PUSH P,A
	PUSHJ P,6BTNML
	POP P,B
	PUSHJ P,CONS
	MOVEI B,QCNAMEF
	PUSHJ P,XCONS		;XCONS, THEN IOL
	%IOL (C)

CNAER1:	SIXBIT/NOT FILE ARRAY!/
CNAER2:	SIXBIT/FILE ARRAY NOT CLOSED!/
;$DELETEF $DELNS $DEL6 $DEL3 $DEL7 $DEL5 $DEL4 $DEL5 $DEL9 $DEL9A

SUBTTL	DELETEF FUNCTION

;;; (DELETEF X) DELETES THE FILE X. (THAT SOUNDS LOGICAL...)

$DELETEF:			;SUBR 1
	JSP TT,AFOSP		;SKIP IF FILE OR SFA
	 JRST $DEL3
IFN SFA,[
	 JRST $DELNS		;A FILE, NOT AN SFA
	MOVEI B,Q$DELETE	;DELETE OPERATION
	SETZ C,			;NO OP SPECIFIC ARG
	JRST ISTCSH		;FAST INTERNAL SFA CALL
$DELNS:	]	;END IFN SFA
	MOVE TT,TTSAR(A)
	TLNE TT,TTS.CL		;SKIP IF OPEN
	 JRST $DEL3
	HLLOS NOQUIT
IFN ITS,[
	.CALL $DEL6		;USE DELEWO FOR AN OPEN FILE
	 IOJRST 0,$DEL9A
	PUSHJ P,JCLOSE
	MOVE T,F.CHAN(TT)	;CHANNEL INTO T FOR CLOSE9
	.CALL CLOSE9		;ACTUALLY PERFORM THE CLOSE
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	MOVE F,F.CHAN(TT)
	MOVE R,F.RPPN(TT)
	LSH F,27
	IOR F,[RENAME 0,T]
	SETZB T,TT
	XCT F
	 IOJRST 0,$DEL9A
	PUSHJ P,JCLOSE
	XOR F,[<CLOSE 0,40>#<RENAME 0,T>]
	XCT F			;40 BIT MEANS AVOID SUPERSEDING A FILE
	XOR F,[<RELEASE 0,0>#<CLOSE 0,40>]
	XCT F
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)
	HRLI 1,(CO%NRJ)		;DON'T RELEASE JFN
	PUSHJ P,JCLOSE
	CLOSF
	 IOJRST 0,$DEL9A
	TLZ 1,-1
	DELF
	 IOJRST 0,$DEL9A
]		;END OF IFN D20
	JRST CZECHI

IFN ITS,[
$DEL6:	SETZ
	SIXBIT \DELEWO\		;DELETE WHILE OPEN
	400000,,F.CHAN(TT)	;CHANNEL #
]		;END OF IFN ITS

$DEL3:	PUSHJ P,FIL6BT
	PUSHJ P,DMRGF		;MERGE ARG WITH DEFAULTS
IFN ITS,[
	.CALL $DEL7
	 IOJRST 0,$DEL9
]		;END OF IFN ITS
IFN D10,[
	MOVEI T,.IODMP
	MOVE TT,-3(FXP)		;GET DEVICE NAME
	SETZ D,
	OPEN TMPC,T		;OPEN TEMP DUMP MODE CHANNEL
	 JRST $DEL4
	MOVE T,-1(FXP)		;FILE NAME
	HLLZ TT,(FXP)		;EXTENSION
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	MOVE R,-2(FXP)		;PPN
	LOOKUP TMPC,T
	 IOJRST 0,$DEL5
	SETZB T,TT		;ZERO FILE NAMES MEANS DELETE
	MOVE R,-2(FXP)		;MUST SPECIFY CORRECT PPN
	RENAME TMPC,T		;DELETE THE FILE
	 IOJRST 0,$DEL5
	RELEASE TMPC,		;RELEASE TEMP CHANNEL
]		;END OF IFN D10
IFN D20,[
	PUSHJ P,X6BTNSL		;GET NAMESTRING FOR FILE IN PNBUF
	MOVE 1,[GJ%OLD+GJ%ACC+GJ%SHT+.GJLEG]
	MOVE 2,PNBP
	GTJFN			;GET A JFN FOR THE FILE
	 IOJRST 0,$DEL9
	TLZ 1,-1
	DELF			;DELETE IT
	 IOJRST 0,$DEL5
]		;END OF IFN D20
	JRST 6BTNML

IFN ITS,[
$DEL7:	SETZ
	SIXBIT \DELETE\		;DELETE FILE
	      ,,-3(FXP)		;DEVICE NAME
	      ,,-1(FXP)		;FILE NAME 1
	      ,,0(FXP)		;FILE NAME 2
	400000,,-2(FXP)		;SNAME
]		;END OF IFN ITS

IFN D20,[
$DEL5:	RLJFN			;RELEASE THE TEMP JFN
	 JSP T,RLJLUZ
]		;END OF IFN D20
IFN D10,[
$DEL4:	SKIPA C,[NSDERR]
$DEL5:	 RELEASE TMPC,		;RELEASE THE TEMP CHANNEL
]		;END OF IFN D10
$DEL9:	PUSHJ P,6BTNML
$DEL9A:	PUSHJ P,CZECHI
	PUSHJ P,ACONS
	MOVEI B,Q$DELETEF
	JRST XCIOL
;CLOSE0 $CLOSE ICLOSE ICLOS6 CLOSE9 JCLOSE CLOSE4

SUBTTL	CLOSE FUNCTION

;;; (CLOSE X) CLOSES THE FILE ARRAY X.  THE ARRAY ITSELF
;;; IS *NOT* FLUSHED - MAY WANT TO RE-OPEN IT.

CLOSE0:
SFA%	WTA [NOT FILE - CLOSE!]
SFA$	WTA [NOT FILE OR SFA - CLOSE!]
$CLOSE:	JSP TT,AFOSP		;LEAVES OBJECT IN A
	 JRST CLOSE0		;NOT A FILE
IFN SFA,[
	 JRST ICLOSE		;A FILE-ARRAY, DO INTERNAL STUFF
	MOVEI B,Q$CLOSE		;CLOSE OPERATION
	SETZ C,			;NO THIRD ARG
	JRST ISTCSH		;SHORT INTERNAL SFA CALL
]		;END IFN SFA
ICLOSE:	HLLOS NOQUIT
	MOVE TT,TTSAR(A)
	TLNE TT,TTS.CL
	 JRST ICLOS6
	PUSHJ P,JCLOSE
IFN ITS,[
	.CALL CLOSE9		;CLOSE FILE
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	LSH T,27
SA$	IOR T,[CLOSE 0,0]
SA$	XCT T
SA$	XOR T,[<RELEASE 0,0>#<CLOSE 0,0>]
SA%	IOR T,[RELEASE 0,0]
	XCT T
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)
	CLOSF			;DOES AN IMPLICIT RLJFN
	 JFCL
]		;END OF IFN D20

	SKIPA A,[TRUTH]		;RETURN T IF DID SOMETHING, ELSE NIL
ICLOS6:	 MOVEI A,NIL
	JRST CZECHI

CLOSE9:	SETZ
	SIXBIT \CLOSE\		;CLOSE CHANNEL
	400000,,F.CHAN(TT)	;CHANNEL #

;;; FILE PRE-CLOSE CLEANUP - de-allocates channel and returns it in T, 
;;; 			     also returns TTSAR in TT

JCLOSE:	MOVE TT,TTSAR(A)
	TLNE TT,TTS.CL		;SKIP UNLESS ALREADY CLOSED
	 .LOSE
	TLNE TT,TTS.IO		;SKIP UNLESS OUTPUT FILE ARRAY
	 PUSHJ P,IFORCE		;FORCE OUTPUT BUFFER
	MOVE TT,TTSAR(A)
	TLNE TT,TTS.TY
	 SKIPN T,FT.CNS(TT)
	  JRST CLOSE4
	SETZM FT.CNS(TT)	;UNLINK TWO TTY'S WHICH
	MOVE T,TTSAR(T)		; WERE TTYCONS'D TOGETHER
	SETZM FT.CNS(T)		; IF ONE IS CLOSED
CLOSE4:	HRRZ T,F.CHAN(TT)
	MOVSI D,TTS.CL		;TURN ON "FILE CLOSED"
	IORM D,TTSAR(A)		; BIT IN ARRAY SAR
	SETZM CHNTB(T)		;CLEAR CHANNEL TABLE ENTRY
	POPJ P,
;FORCE FORSF1 FORCE1 FORCE9 IFORCE IFORC1 FORCE6 IOTTTT SIOT

SUBTTL	FORCE-OUTPUT

;;; (FORCE-OUTPUT X) FORCES THE OUTPUT BUFFER OF OUTPUT FILE ARRAY X.

FORCE:
IFN SFA,[
	EXCH AR1,A
	JSP TT,XFOSP		;AN SFA?
	 JRST FORSF1
	 JRST FORSF1
	EXCH AR1,A
	JSP T,QIOSAV
	MOVEI B,QFORCE
	SETZ C,
	JRST ISTCSH
FORSF1:	EXCH AR1,A
]		;END IFN SFA
	PUSH P,AR1
	MOVEI AR1,(A)
	PUSHJ P,FORCE1
	POP P,AR1
	POPJ P,

FORCE1:	PUSHJ P,OFILOK		;DOES A LOCKI
	PUSHJ P,IFORCE
IFN ITS,[
	.CALL FORCE9
	 CAIN D,%EBDDV		;"WRONG TYPE DEVICE" ERROR IS OKAY
	  CAIA
	   .VALUE		;ANY OTHER ERROR LOSES
]		;END OF IFN ITS
	JRST UNLKTRUE

IFN ITS,[
FORCE9:	SETZ
	SIXBIT \FORCE\		;FORCE OUTPUT BUFFER TO DEVICE
	      ,,F.CHAN(TT)	;CHANNEL #
	403000,,D		;ERROR #
]		;END OF IFN ITS

;;; INTERNAL OUTPUT BUFFER FORCE ROUTINE. EXPECTS USER
;;; INTERRUPTS OFF, AND FILE ARRAY TTSAR IN TT.
;;; CLOBBERS T, TT, D, AND F.

IFORCE:	TLNE TT,TTS.CL
	 LERR [SIXBIT \CAN'T FORCE OUTPUT ON CLOSED FILE!\]
	SKIPGE F,F.MODE(TT)	.SEE FBT.CM	;CAN'T FORCE A CHARMODE FILE
	 POPJ P,
	MOVE F,FB.BFL(TT)
IFN ITS,[
	SUB F,FB.CNT(TT)
	JUMPE F,IFORC1
	MOVE D,F		;NUMBER OF BYTES TO TRANSFER
	MOVE T,FB.IBP(TT)	;INITIAL BYTE POINTER
	.CALL SIOT		;OUTPUT THE (PARTIAL) BUFFER
	 .LOSE 1400
IFORC1:
]		;END OF IFN ITS
IFN D10,[
	MOVE T,F.CHAN(TT)
	LSH T,27
	IOR T,[OUT 0,0]
	XCT T			;OUTPUT THE CURRENT BUFFER
	 CAIA
	  HALT			;? OUTPUT ERROR
]		;END OF IFN D10
IFN D20,[
	SUB F,FB.CNT(TT)
	JUMPE F,FORCE5
	PUSHJ FXP,SAV3		;PRESERVE ACS 1-3
	MOVE 1,F.JFN(TT)
	MOVE 2,FB.IBP(TT)	;INITIAL BYTE POINTER
	MOVN 3,F		;NEGATIVE OF BYTE COUNT
	SOUT			;OUTPUT (PARTIAL) BUFFER
	 ERJMP OIOERR
	PUSHJ FXP,RST3
]		;END OF IFN D20
	ADDM F,F.FPOS(TT)		;UPDATE FILE POSITION
IFN ITS+D20, FORCE5: 	JSP D,FORCE6	;INITIALIZE POINTER AND COUNT
	POPJ P,

IFN ITS+D20,[
FORCE6:	MOVE T,FB.BFL(TT)	;ROUTINE TO INITIALIZE BYTE POINTER AND COUNT
	MOVEM T,FB.CNT(TT)
	MOVE T,FB.IBP(TT)
	MOVEM T,FB.BP(TT)
	JRST (D)
];END IFN ITS+D20

IFN ITS,[
IOTTTT:	SETZ
	SIXBIT \IOT\		;I/O TRANSFER
	      ,,F.CHAN(TT)	;CHANNEL #
	400000,,T		;DATA POINTER (DATA?)

SIOT:	SETZ
	SIXBIT \SIOT\		;STRING I/O TRANSFER
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,T		;BYTE POINTER
	400000,,D		;BYTE COUNT
]		;END OF IFN ITS
;SFMD0 SFILEMODE SFMD0A SFMD1

SUBTTL	STATUS FILEMODE

;;; (STATUS FILEMODE <FILE> ) RETURNS A LIST DESCRIBING
;;; THE FILE:  NIL ==> FILE HAS BEEN CLOSED; OTHERWISE
;;; THE CAR OF THIS LIST IS A VALID OPTIONS
;;; LIST FOR THE OPEN FUNCTION.  THE CDR OF THIS LIST
;;; CONTAINS INFORMATIVE ITEMS WHICH ARE NOT NECESSARILY
;;; USER-SETTABLE FEATURES ABOUT THE FILE.
;;; PRESENTLY SUCH GOODIES INCLUDE:
;;;	RUBOUT		AN OUTPUT TTY THAT CAN SELECTIVELY ERASE
;;;	CURSORPOS	AN OUTPUT TTY THAT CAN CURSORPOS WELL
;;;	SAIL		FOR AN OUTPUT TTY, HAS SAIL CHARACTER SET
;;;	FILEPOS		CAN FILEPOS CORRECTLY (RANDOM ACCESS)
;;; NON-FILE ARGUMENT CAUSES AN ERROR.

SFMD0:	%WTA NFILE
SFILEMODE:
	JSP TT,AFOSP		;MUST BE A FILE OR SFA
	 JRST SFMD0
IFN SFA,[
	 JRST SFMD0A		;IF FILE THEN HANDLE NORMALLY
	SETZ C,			;IF WE GO TO THE SFA, NO THIRD ARG
	MOVEI T,SO.MOD		;CAN THE SFA DO (STATUS FILEMODE)?
	MOVEI TT,SR.WOM
	TDNE T,@TTSAR(A)	;CAN IT DO THE OPERATION?
	 JRST ISTCAL		;YES, CALL THE SFA AND RETURN
	MOVEI B,QWOP		;OTHERWISE, DO A WHICH-OPERATIONS
	PUSHJ P,ISTCSH
	PUSH P,A		;SAVE THE RESULTS
	MOVEI A,QSFA
	JSP T,%NCONS		;MAKE A LIST
	POP P,B
	JRST CONS		;RETURN ((SFA) {WHICH-OPERATIONS})
SFMD0A:	]	;END IFN SFA
	LOCKI
	MOVE TT,TTSAR(A)	;GET TTSAR BITS
	TLNE TT,TTS.CL		;RETURN NIL IF THE FILE IS CLOSED
	 JRST UNLKFALSE
	MOVE R,F.FLEN(TT)	;IF LENGTH > 0 THEN BLOCK MODE, ELSE SINGLE
	MOVEI A,QBLOCK
	SKIPGE F,F.MODE(TT)	.SEE FBT.CM
	 MOVEI A,QSINGLE
	UNLOCKI
	PUSHJ P,NCONS
	MOVEI B,QDSK		;TWO MAJOR TYPES - TTY OR DSK
	TLNE TT,TTS.TY
	 MOVEI B,QTTY
	PUSHJ P,XCONS
	MOVEI B,Q$ASCII		;ASCII, IMAGE, OR FIXNUM
	TLNE TT,TTS.IM
	 MOVEI B,QIMAGE
	TLNN TT,TTS.IO
	 TLNN TT,TTS.TY
	  JRST SFMD1
	TLNN F,FBT.FU		;INPUT TTY: FULL CHAR SET MEANS FIXNUM FILE
SFMD1:	 TLNE TT,TTS<BN>
	  MOVEI B,QFIXNUM
	PUSHJ P,XCONS
	MOVEI B,Q$IN		;INPUT, OUTPUT, OR APPEND MODE
	TLNE TT,TTS<IO>
	 MOVEI B,Q$OUT
	TLNE F,FBT<AP>
	 MOVEI B,QAPPEND
	PUSHJ P,XCONS
	MOVEI B,QECHO		;OTHER RANDOM MODE BITS - ECHO
	TLNE F,FBT.EC
	 PUSHJ P,XCONS
	MOVEI B,QSCROLL		;SCROLL
	TLNE F,FBT.SC
	 PUSHJ P,XCONS
	MOVEI C,(A)
	SETZ A,
	MOVEI B,QSAIL
	TLNE F,FBT.SA		;SAIL MODE
	 PUSHJ P,XCONS
	MOVEI B,QRUBOUT
	TLNE F,FBT.SE		;RUBOUT-ABLE
	 PUSHJ P,XCONS
IFN USELESS*<ITS\D20>,[
	MOVEI B,QCURSORPOS	;CURSORPOS-ABLE
	TLNE F,FBT.CP
	 PUSHJ P,XCONS
]	;END OF IFN USELESS*<ITS\D20>
	MOVEI B,QFILEPOS	;FILEPOS-ABLE
	SKIPL R			.SEE F.FLEN	;NEGATIVE => CAN'T FILEPOS
	 PUSHJ P,XCONS
	MOVEI B,(C)
	JRST XCONS
;LOAD LOAD5 LOAD6 LOAD7 LOAD7A LOAD8 LOAD1 ZZ LOAD3 LOAD2 LOAD4 $FASLP FASLP1 FASLP8 FASLP9 FASLP2 FASLP2 INCLUDE .INCLUD INCLU1 INCEOF

SUBTTL	LOAD FUNCTION
;;; (LOAD FOO) LOADS THE FILE FOO.  IT FIRST PROBEF'S TO
;;; ASCERTAIN THE EXISTENCE OF THE FILE, AND CHECKS THE FIRST
;;; WORD TO SEE WHETHER IT IS AN ASCII OR FASL FILE.
;;; IF NO SECOND FILE NAME IS GIVEN, "FASL" IS TRIED FIRST,
;;; AND THEN ">" IF NO FASL FILE EXISTS.
;;; IF A FASL FILE, IT GIVES THE FILE NAMES TO FASLOAD.
;;; IF AN ASCII FILE, IT IS OPENED, (INFILE ↑Q, *, +, -, INSTACK)
;;; BOUND TO (<THE FILE>, T, *, +, -, NIL), AND A READ-EVAL
;;; LOOP PERFORMED UNTIL END OF FILE OCCURS LEAVING INSTACK=NIL
;;; AND INFILE=T.

LOAD:	JUMPE A,CPOPJ		;IF GIVEN NIL AS ARG, RETURN NIL
	PUSHJ P,FIL6BT		;SUBR 1
	MOVE F,-L.6EXT-L.6VRS+1(FXP)
	PUSHJ P,DMRGF		;DMRGF SAVES F
	LOCKI
	CAME F,DFNWD
	 JUMPN F,LOAD3
	MOVE TT,DFFNWD
	MOVEM TT,<-L.6EXT-L.6VRS+1>-1(FXP)	;-1 for LOCKI word
IFN D20,[
	MOVE TT,[ASCII \0\]
	SKIPE <-L.6VRS+1>-1(FXP) 	    ;VERSION NUMBER NULL?
	 CAMN T,<-L.6VRS+1>-1(FXP) 	    ;  OR EQUAL TO *?  IF EITHER CASE,
	  MOVEM TT,<-L.6VRS+1>-1(FXP)	    ;  THEN USE  "0"
]		;END OF IFN D20
	JSP T,FASLP1
	 JRST LOAD1		;FILE NOT FOUND
	 JRST LOAD2		;FASL FILE
LOAD5:	UNLOCKI			;EXPR FILE FOUND
	PUSHJ P,6BTNML
	PUSH P,[LOAD6]
	PUSH P,A
	MOVNI T,1
	JRST $EOPEN		;OPEN AS A FILE OBJECT
LOAD6:	HRRZ B,VIPLUS		;WE WANT +, -, * TO WORK AS FOR TOP LEVEL,
	HRRZ C,V.		; BUT NOT SCREW THE OUTSIDE WORLD
	HRRZ AR1,VIDIFFERENCE
	MOVEI AR2A,TRUTH
	JSP T,SPECBIND
	   0 A,VINFILE
	   0 B,VIPLUS
	   0 C,V.
	   0 AR1,VIDIFFERENCE
	   0 AR2A,TAPRED
	   VINSTACK
	JRST LOAD7A

LOAD7:	PUSHJ P,TLEVAL		;USE THE EVAL PART OF THE TOP LEVEL
	HRRZM A,V.
LOAD7A:	PUSHJ P,TLREAD		;USE THE READ PART OF THE TOP LEVEL
	 JRST LOAD7
LOAD8:	HRRZ B,VINFILE		;EOF TESTING
	SKIPN VINSTACK
	 CAIE B,TRUTH
	  JRST LOAD7A
	PUSHJ P,UNBIND
	JRST TRUE


LOAD1:
IFN ITS+D10,[
IT$	MOVSI TT,(SIXBIT \>\)		;OTHERWISE TRY ">"
SA$	MOVSI TT,(SIXBIT \←←←\)
SA% 10$	MOVSI TT,(SIXBIT \LSP\)		;FOR D10, "LSP"
	MOVEM TT,-1(FXP) 		;REMEMBER ADJUSTMENT FOR LOCKI WORD
]	;END OF IFN ITS+D10
IFN D20,[
	MOVE TT,[ASCIZ \LSP\]
ZZ==<-L.6EXT-L.6VRS+1>-1		;REMEMBER: ADJUSTMENT FOR LOCKI WORD
	MOVEM TT,ZZ(FXP)
	SETZM ZZ+1(FXP)
	MOVEI T,ZZ+2(FXP)
	HRLI T,-1(T)
	BLT T,ZZ+L.6EXT-1(FXP)		;ZERO OUT REMAINING WORDS
]	;END OF IFN D20
LOAD3:	MOVEI A,QLOAD
	JSP T,FASLP1
	 JRST LOAD4		;LOSE COMPLETELY
	 JRST LOAD2		;FASL FILE
	JRST LOAD5		;EXPR CODE

LOAD2:	UNLOCKI			;FASL FILE - GO FASLOAD IT
	PUSHJ P,6BTNML
	HRRZ B,VDEFAULTF
	JSP T,SPECBIND
	   0 B,VDEFAULTF	;DON'T LET FASLOAD CLOBBER DEFAULTF
	PUSHJ P,FASLOAD
	JRST UNBIND

LOAD4:	IOJRST 0,.+1
	PUSH P,A
	UNLOCKI
	PUSHJ P,6BTNML		;LOSEY LOSEY
	PUSHJ P,NCONS
	POP P,B
	JRST XCIOL


;;; (FASLP <FILE>) TELLS WHETHER THE FILE IS A FASL FILE.
;;; ERROR IF FILE DOES NOT EXIST.

$FASLP:	PUSHJ P,FIL6BT
	PUSHJ P,DMRGF
	MOVEI A,Q$FASLP
	LOCKI
	JSP T,FASLP1
	 JRST LOAD4
	 SKIPA A,[TRUTH]
	  MOVEI A,NIL
	UNLOCKI
	POPI FXP,L.F6BT		;POP CRUD OFF STACK
	POPJ P,

;;; ROUTINE TO TEST A FILE FOR FASL-NESS.
;;;   WARNING! MUST SAVE "A"  -  SEE "LOAD:", "LOAD3:" AND "$FASLP:"
;;;	JSP T,FASLP1
;;;	 JRST NOTFOUND	;FILE NOT FOUND, OR OTHER ERROR
;;;	 JRST FASL	;FILE IS A FASL FILE
;;;	 ...		;FILE IS NOT A FASL FILE
;;; FXP MUST HOLD THE "SIXBIT" FILE NAMES, WITH A LOCKI WORD ABOVE THEM.
;;; USER INTERRUPTS MUST BE LOCKED OUT.

FASLP1:
IFN ITS,[
	.CALL FASLP9		;OPEN FILE ON TEMP CHANNEL
	 JRST (T)
	.CALL FASLP8		;RESTORE REFERENCE DATE
	 JFCL			; (ONLY WORKS FOR DISK CHANNELS - IGNORE FAILURE)
	HRROI D,TT
	.IOT TMPC,D		;READ FIRST WORD
	.CLOSE TMPC,
	JUMPL D,2(T)		;NOT A FASL FILE IF ZERO-LENGTH
	TRZ TT,1
	CAMN TT,[SIXBIT \*FASL*\]
	 JRST 1(T)		;FASL FILE IF FIRST WORD CHECKS
	JRST 2(T)

FASLP8:	SETZ
	SIXBIT \RESRDT\		;RESTORE REFERENCE DATE
	401000,,TMPC		;CHANNEL #

FASLP9:	SETZ
	SIXBIT \OPEN\		;OPEN FILE
	  5000,,6		;IMAGE BLOCK INPUT
	  1000,,TMPC		;CHANNEL NUMBER
	      ,,-4(FXP)		;DEVICE NAME
	      ,,-2(FXP)		;FILE NAME 1
	      ,,-1(FXP)		;FILE NAME 2
	400000,,-3(FXP)		;SNAME
]		;END OF IFN ITS

IFN D10,[
	PUSH P,T
	MOVEI T,.IODMP
	MOVE TT,-4(FXP)
	SETZ D,
	OPEN TMPC,T		;OPEN TEMP CHANNEL TO FILE
	 POPJ P,
	MOVE T,-2(FXP)		;FILE NAME
	HLLZ TT,-1(FXP)		;EXTENSION
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	MOVE R,-3(FXP)		;PPN
	LOOKUP TMPC,T		;LOOK UP FILE NAMES
	 JRST FASLP2
	SETZB TT,R
	PUSH FXP,NIL		;USE A WORD ON FXP AS D10 CAN'T DO I/O TO AC'S
	HRROI D,-1(FXP)		;D AND R ARE THE DUMP MODE COMMAND LIST
	INPUT TMPC,D		;GET FIRST WORD OF FILE
SA%	CLOSE TMPC,CL.ACS	;DON'T UPDATE ACCESS DATE
	RELEASE TMPC,
	POP FXP,TT		;GET THE WORD READ FROM THE FILE
	POP P,R
SA$	WARN [RESTORE REF DATE FOR SAIL PROBEF?]
;FALLS THROUGH
]		;END OF IFN D10
IFN D20,[
	PUSH FLP,(FXP)		;SAVE THE LOCKI WORD, BUT OFF FXP
	POPI FXP,1
	PUSH P,T
	PUSHJ P,X6BTNS		;GET NAMESTRING IN PNBUF
	PUSH FXP,(FLP)		;PUT LOCKI WORD BACK IN ITS PLACE
	POPI FLP,1
	POP P,R
	PUSH P,A
	PUSH P,B
	MOVSI 1,(GJ%OLD+GJ%ACC+GJ%SHT)	.SEE .GJDEF
	MOVE 2,PNBP
	GTJFN			;GET A JFN FOR THE FILE NAME
	 JRST RSTR2		;JUST EXITS THRU R, RESTORING A AND B
	MOVE 2,[440000,,OF%RD+OF%PDT]	.SEE OF%BSZ OF%MOD
	SETZ TT,
	OPENF			;OPEN FILE, PRESERVING ACCESS DATE
	 JRST FASLP2
	BIN			;GET ONE 36.-BIT BYTE
	MOVE TT,2
	CLOSF			;CLOSE THE FILE
	 JFCL			;IGNORE ERROR RETURN
	SKIPA			;JFN HAS BEEN RELEASED BY THE CLOSE
FASLP2:	 RLJFN			;RELEASE THE JFN
	  JFCL
	POP P,B
	POP P,A
]		;END OF IFN D20
IFN D10+D20,[
	TRZ TT,1
	CAMN TT,[SIXBIT \*FASL*\]
	 JRST 1(R)		;FASL FILE IF FIRST WORD CHECKS
	JRST 2(R)
]		;END OF IFN D10+D20
IFN D10,[
FASLP2:	RELEASE TMPC,
	POPJ P,
]

;;; (DEFUN INCLUDE FEXPR (X)
;;;	   ((LAMBDA (F)
;;;		    (EOFFN F '+INTERNAL-INCLUDE-EOFFN)
;;;		    (INPUSH F))
;;;	    (OPEN (CAR X))))

INCLUDE:
	HLRZ A,(A)	;FSUBR
.INCLUD:		;SUBR
	PUSH P,[INCLU1]
	PUSH P,A
	MOVNI T,1
	JRST $EOPEN
INCLU1:	MOVEI TT,FI.EOF
	MOVEI B,QINCEOF
	MOVEM B,@TTSAR(A)
	JRST INPUSH

INCEOF==:FALSE		;INCLUDE'S EOF FUNCTION - SUBR 2
;

SUBTTL	OPEN FUNCTION (INCLUDING SAIL EOPEN)

;;; (OPEN <FILE> <MODELIST>) OPENS A FILE AND RETURNS A
;;; CORRESPONDING FILE OBJECT.  IT IS ACTUALLY AN LSUBR
;;; OF ZERO TO TWO ARGUMENTS.  THE <FILE> DEFAULTS TO THE
;;; CURRENT DEFAULT FILE NAMES.  THE <MODELIST> DEFAULTS
;;; TO NIL.
;;; IF <FILE> IS A NAMELIST OR NAMESTRING, A NEW FILE ARRAY
;;; IS CREATED.  IF <FILE> IS A FILE ARRAY ALREADY, IT IS
;;; CLOSED AND RE-OPENED IN THE SPECIFIED MODE; ITS FORMER
;;; MODES SERVE AS THE DEFAULTS FOR THE <MODELIST>.
;;; THE <MODELIST> DETERMINES A LARGE NUMBER OF ATTRIBUTES
;;; FOR OPENING THE FILE.  FOR EACH ATTRIBUTE THERE ARE
;;; TWO OR MORE MUTUALLY EXCLUSIVE VALUES WHICH MAY BE
;;; SPECIFIED AS FOLLOWS.  VALUES MARKED BY A * ARE THOSE
;;; USED AS DEFAULTS WHEN THE <FILE> IS A NAMELIST OR
;;; NAMESTRING.  IF THE <MODELIST> IS AN ATOM, IT IS THE
;;; SAME AS SPECIFYING THE LIST OF THAT ONE ATOM.
;;;	DIRECTION:
;;;	*  IN		INPUT FILE
;;;	*  READ		SAME AS "IN"
;;;	   OUT		OUTPUT FILE
;;;	   PRINT	SAME AS "OUT"
;;;	   APPEND	OUTPUT, APPENDED TO EXISTING FILE
;;;	DATA MODE:
;;;	*  ASCII	FILE IS A STREAM OF ASCII CHARACTERS.
;;;			SYSTEM-DEPENDENT TRANSFORMATIONS MAY
;;;			OCCUR, SUCH AS SUPPLYING LF AFTER CR,
;;;			OR BEING CAREFUL WITH OUTPUT OF ↑P,
;;;			OR MULTICS ESCAPE CONVENTIONS.
;;;	   FIXNUM	FILE IS A STREAM OF FIXNUMS.  THIS
;;;			IS FOR DEALING WITH FILES THOUGHT OF
;;;			AS "BINARY" RATHER THAN "CHARACTER".
;;;			FOR TTY'S, THIS IS INTERPRETED AS
;;;			"MORE-THAN-ASCII" OR "FULL CHARACTER
;;;			SET" MODE, WHICH READS 9 BITS AT SAIL
;;;			AND 12. ON ITS.
;;;	   IMAGE	FILE IS A STREAM OF ASCII CHARACTERS.
;;;			ABSOLUTELY NO TRANSFORMATIONS ARE MADE.
;;;	DEVICE TYPE:
;;;	*  DSK		STANDARD KIND OF FILE.
;;;	   CLA		(ITS ONLY) LIKE DSK, BUT REQUIRES BLOCK MODE,
;;;			AND GOBBLES THE FIRST TWO WORDS, INSTALLING
;;;			THEM IN THE TRUENAME.  USEFUL PRIMARILY FOR
;;;			A CLI-MESSAGE INTERRUPT FUNCTION.
;;;	   TTY		CONSOLE.  IN PARTICULAR, ONLY TTY INPUT
;;;			FILES HAVE INTERRUPT CHARACTER FUNCTIONS
;;;			ASSOCIATED WITH THEM.
;;;	BUFFERING MODE:
;;;	*  BLOCK	DATA IS BUFFERED.
;;;	   SINGLE	DATA IS UNBUFFERED.
;;;	PRINTING AREA:
;;;	   ECHO		(ITS ONLY) OPEN TTY IN ECHO AREA
;;; SOME OF THESE VALUES ARE OF COURSE SYSTEM-DEPENDENT.
;;; YOUR LOCAL LISP SYSTEM WILL ATTEMPT TO DO THE RIGHT THING,
;;; HOWEVER, IN ANY CASE.
;;; IF THE OPTIONS LIST IS INVALID IN ANY WAY, OPEN MAY EITHER
;;; GIVE A WRNG-TYPE-ARGS ERROR, OR BLITHELY ASSUME A CORRECTED
;;; VALUE FOR AN ATTRIBUTE.  IN GENERAL, ERRORS SHOULD OCCUR
;;; ONLY FOR TRULY CONFLICTING SPECIFICATIONS.  ON THE OTHER
;;; HAND, SPECIFYING BLOCK MODE FOR A DEVICE THAT THE SYSTEM
;;; WANTS TO HANDLE ONLY IN CHARACTER MODE WILL JUST GO AHEAD
;;; AND USE CHARACTER MODE.  IN GENERAL, ONE SHOULD USE
;;; (STATUS FILEMODE) TO SEE HOW THE FILE WAS ACTUALLY OPENED.
;$OPEN $OPNNS OPEN0J OPEN1A OPEN1C OPN1F1 OPEN1F OPEN1G OPEN1K OPEN1H OPEN1Z

SA% $EOPEN:
$OPEN:	MOVEI D,Q$OPEN		;LSUBR (0 . 2)
	CAMGE T,XC-2
	 JRST WNALOSE
	SETZB A,B		;BOTH ARGUMENTS DEFAULT TO NIL
	CAMN T,XC-2
	 POP P,B
	SKIPE T
	 POP P,A
IFN SFA,[
	JSP TT,AFOSP		;WERE WE HANDED AN SFA AS FIRST ARG?
	 JFCL
	 JRST $OPNNS		;NOPE, CONTINUE AS USUAL
	MOVEI C,(B)		;ARG TO SFA IS THE LIST GIVEN TO OPEN
	MOVEI B,Q$OPEN		;OPERATION
	JRST ISTCSH		;SHORT INTERNAL CALL
$OPNNS:	]	;END IFN SFA
;THE TWO ARGUMENTS ARE NOW IN A AND B.
;WE NOW PARSE THE OPTIONS LIST.  F WILL HOLD OPTION VALUES,
; AND D WILL INDICATE WHICH WERE SPECIFIED EXPLICITLY BY THE USER.
OPEN0J:	PUSH P,T		;SAVE NUMBER OF ARGS ON P (NOT FXP!)
	SETZB D,F
	JSP TT,AFILEP		;IS THE FIRST ARGUMENT A FILE OBJECT?
	 JRST OPEN1A
	MOVEI TT,F.MODE
	MOVE F,@TTSAR(A)	;IF SO, USE ITS MODE AS THE DEFAULTS
IFN ITS\D20,[
	SKIPE B			;MAKE CHUCK RICH HAPPY - DON'T LET "ECHO" CARRY
	 TLZ F,FBT.EC+FBT.CP+FBT.SC ; OVER IF A NON-NULL OPTIONS LIST WAS GIVEN
]	;END OF ITS\D20
OPEN1A:	JUMPE B,OPEN1Y		;JUMP OUT IF NO OPTIONS SUPPLIED
	MOVEI C,(B)
	SKOTTN B,LS
	 JRST OPEN1C
	MOVSI AR2A,(B)		;IF A SINGLE, ATOMIC OPTION WAS GIVEN, AR2A
	MOVEI C,AR2A		; IS A FAKE CONS CELL SO IT LOOKS LIKE A LIST
OPEN1C:	JUMPE C,OPEN1L		;JUMP OUT IF LAST OPTION PROCESSED
	HLRZ AR1,(C)
OPN1F1:	JUMPE AR1,OPEN1G	;IGNORE NIL AS A KEYWORD
	MOVSI TT,-LOPMDS
OPEN1F:	HRRZ R,OPMDS(TT)	;COMPARE GIVEN OPTION AGAINST VALID ONES
	CAIN AR1,(R)
	 JRST OPEN1K		;JUMP ON MATCH
	AOBJN TT,OPEN1F
	EXCH A,AR1		;ERRONEOUS KEYWORD INTO AR1
	WTA [IS ILLEGAL KEYWORD - OPEN!]
	EXCH A,AR1
OPEN1G:	HRRZ C,(C)		;CDR DOWN LIST UNTIL ALL DONE
	JRST OPEN1C

OPEN1K:	TDNN D,OPMDS(TT)	;SEE IF THERE IS A CONFLICT
	 JRST OPEN1Z
OPEN1H:	EXCH A,B
	WTA [ILLEGAL OPTIONS LIST - OPEN!]
	EXCH A,B
	JRST OPEN0J

OPEN1Z:	HLRZ R,OPMDS(TT)
	TLO D,(R)
	TLZ F,(R)
	TRZ F,(R)
	IOR F,OPBITS(TT)
	JRST OPEN1G
;OPMDS LOPMDS OPBITS

;;; LEFT HALF IS SET OF MODE BITS WHICH THE OPTION IN THE RIGHT
;;; HALF WILL CONFLICT WITH IF ANY ONE ELSE SELECTS THEM.

OPMDS:	FBT.AP+1,,Q$IN
	FBT.AP+1,,QOREAD
	FBT.AP+1,,Q$OUT
	FBT.AP+1,,Q%PRINT
	FBT.AP+1,,QAPPEND
	000014,,Q$ASCII
	000014,,QFIXNUM
	000014,,QIMAGE
	000002,,QDSK
IT$	FBT.CA+2,,QCLA
	000002,,QTTY
	FBT.CM,,QBLOCK
	FBT.CM,,QSINGLE
	0,,QNODEFAULT
IT$	FBT.EC,,QECHO
IT$	FBT.SC,,QSCROLL
LOPMDS==.-OPMDS

;;; MODE BITS ACTUALLY TO BE SET FOR AN OPTION IN THE OPMDS TABLE.

OPBITS:	0			;IN
	0			;READ
	1			;OUT
	1			;PRINT
	FBT.AP,,1		;APPEND
	0			;ASCII
	4			;FIXNUM
	10			;IMAGE
	0			;DSK
IT$	FBT.CA,,0		;CLA
	2			;TTY
	0			;BLOCK
	FBT.CM,,		;SINGLE
	FBT.ND,,		;NODEFAULT
IT$	FBT.EC,,		;ECHO
IT$	FBT.SC,,		;SCROLL
TBLCHK OPBITS,LOPMDS
;OPEN1L OPEN1Y OPEN1S OPEN1M OPEN1N OPEN1P OPEN1R OPEN1Q

;STATE OF THE WORLD:
;	FIRST ARG TO OPEN IN A
;	SECOND ARG IN B
;	D CONTAINS BITS FOR ACTUALLY SPECIFIED OPTIONS IN LEFT HALF
;	F CONTAINS BITS FOR OPTIONS
		.SEE FBT.CM	;AND FRIENDS
;		1.4-1.3	0 => ASCII, 1 => FIXNUM, 2 => IMAGE
;		1.2	0 => DSK, 1 => TTY
;		1.1	0 => IN, 1 => OUT
;		BITS 1.4-1.1 ARE USED TO INDEX VARIOUS TABLES LATER
;	ACTUAL NUMBER OF ARGS ON P
;WE NOW EMBARK ON DEFAULTING AND MAKING CONSISTENT THE VARIOUS MODES
OPEN1L:	TLNE D,FBT.CM		;SKIP IF SINGLE VS. BLOCK WAS UNSPECIFIED
	 JRST OPEN1Y
	TRNE F,2		;SKIP UNLESS TTY
	 TLO F,FBT.CM		;FOR TTY, DEFAULT TO SINGLE, NOT BLOCK, MODE
OPEN1Y:
IFN ITS\D20,[
	TRC F,3
	TRCE F,3
	 TLZ F,FBT.EC+FBT.SC	;ECHO AND SCROLL MEANINGFUL ONLY FOR TTY OUTPUT
]	;END OF ITS\D20
	TRNN F,2		;SKIP IF TTY
	 JRST OPEN1S
	TLZ F,FBT.AP		;CAN'T APPEND TO A TTY
	TRNN F,1
	 TLO F,FBT.CM		;CAN'T DO BLOCK TTY INPUT
	TRNE F,4		;FIXNUM TTY I/O USES FULL CHAR SET
	 TLO F,FBT.FU
;NOW WORRY ABOUT FILE NAMES AND ALLOCATING A FILE OBJECT
OPEN1S:	PUSH P,A
	PUSH P,B
	PUSH FXP,F
	CAIE A,TRUTH		;T MEANS TTY FILE ARRAY...
	 JRST OPEN1M
	TRNN F,1
	 SKIPA A,V%TYI		;TTY INPUT IF MODE BITS SAY INPUT
	  HRRZ A,V%TYO		; AND OUTPUT OTHERWISE
OPEN1M:	PUSH P,A
	PUSHJ P,FIL6BT		;GET FILE NAME SPECS
	MOVE F,-L.F6BT(FXP)	;GET MODE BITS
	TLZN F,FBT.ND		;MERGE WITH DEFAULT NAMES?
	 PUSHJ P,DMRGF		;MERGE IN DEFAULT NAMES (SAVES F)
	HRLZI F,FBT.ND
	ANDCAM F,-L.F6BT(FXP)	;TURN OFF FBT.ND BIT IN SAVED FLAGS
	MOVE A,(P)		;GET (POSSIBLY MUNGED FOR T) FIRST ARG
	JSP TT,AFILEP		;SKIP IF WE GOT A REAL LIVE SAR
	 JRST OPEN1N
	PUSHJ P,ICLOSE		;CLOSE IT IF NECESSARY
;;; WARN [SHOULD WE RELEASE THE JFN AT THIS POINT?]
	MOVE A,(P)
	MOVE D,-3(P)		;IF ONLY ONE ARG TO OPEN, AND
	AOJE D,OPEN1Q		; THAT A SAR, RE-USE THE ARRAY
	MOVE F,-L.F6BT(FXP)
	MOVEI TT,F.MODE
	XOR F,@TTSAR(A)
	TDNE F,[FBT.CM,,17]
	 JRST OPEN1P
	PUSHJ P,OPNCLR		;IF TWO ARGS, BUT SAME MODE,
	JRST OPEN1Q		; CLEAR ARRAY, THAN RE-USE
;WE MUST ALLOCATE A FRESH ARRAY
OPEN1N:	MOVSI A,-1		;ARRANGE TO GET A FRESH SAR
;WE HAVE A SAR, BUT MUST ALLOCATE A NEW ARRAY BODY
OPEN1P:	MOVE F,-L.F6BT(FXP)	;GET MODE BITS AGAIN
;DETERMINE SIZE OF NEW ARRAY
IFN ITS+D20,[
	HLRZ TT,OPEN9A(F)	;FOR ITS AND D20, DESIRABLE SIZES ARE IN A TABLE
	SKIPGE F		.SEE FBT.CM
	 HRRZ TT,OPEN9A(F)
]		;END OF IFN ITS+D20
IFN D10,[
;FOR D10, WE MUST ASK THE OPERATING SYSTEM FOR THE PROPER BUFFER SIZE
	MOVE TT,-3(FXP)		;GET DEVICE NAME
	CAMN TT,[SIXBIT \PTY\]
	 JRST .+3
	  CAME TT,[SIXBIT \TTY\]
	   TRZ F,2		;? NOT A TTY UNLESS IT IS *THE* TTY
	TRNN F,2
	 TLZA F,FBT.CM		;ONLY THE TTY CAN BE SINGLE MODE,
	  TLO F,FBT.CM		; AND THE TTY MUST BE SINGLE MODE!
SA$	TRNE F,2		;FOR SAIL, *THE* TTY SHOULD DEFAULT TO LINEMODE
SA$	 TLO F,FBT.LN
	MOVEM F,-4(FXP)		;SAVE BACK MODE BITS
	PUSHN FXP,1		;PUSH A SLOT FOR BUFFER SIZE DATA
	JUMPL F,OPEN1R		.SEE FBT.CM
IFE SAIL,[
	HLRZ T,OPEN9C(F)	;GET DESIRED I/O MODE
	MOVEI D,T
	DEVSIZ D,		;ON SUCCESS, GET <NUMBER OF BUFFERS,,BUFFER SIZE>
	 SETO D,
	SKIPG D
	 MOVE D,[2,,3+LIOBUF]	;ON FAILURE, USE 2 BUFFERS AT LIOBFS WORDS APIECE
	HLRZ TT,D
	CAIGE TT,NIOBFS
]	;END IFE SAIL
IFN SAIL,[
	MOVE D,TT		;DEVICE NAME IN D
	BUFLEN D,		;GET BUFFER SIZE
	SKIPN D			;NO WAY!! (BUT BETTER CHECK ANYWAY)
	 MOVEI D,LIOBUF+1	;DEFAULT
	ADDI D,2		;WE NEED ACTUAL SIZE OF BUFFER, NOT SIZE-2
]	;END IFN SAIL
	 HRLI D,NIOBFS		;HOWEVER, WE MUST USE AT LEAST NIOBFS BUFFERS
	MOVEM D,(FXP)		;SAVE THIS DATA
	HLRZ TT,D
	IMULI D,(TT)		;GET TOTAL SPACE OCCUPIED BY BUFFERS
	HLRZ TT,OPEN9A(F)
	ADDI TT,(D)		;ADD TO SIZE OF REST OF FILE ARRAY
	CAIA
OPEN1R:	 HRRZ TT,OPEN9A(F)	;FOR CHARACTER MODE, TABLE HAS TOTAL ARRAY SIZE
]		;END OF IFN D10
	PUSHJ P,MKLSAR		;MAKE AN ARRAY - SIZE IN TT, SAR (IF ANY) IN A
10$	POP FXP,D
OPEN1Q:	LOCKI			;LOCK OUT USER INTERRUPTS

;FALLS THROUGH
;OPEN1T

;FALLS IN

;STATE OF THE WORLD:
;	USER INTERRUPTS LOCKED OUT
;	SAR FOR FILE ARRAY IN A
;	FOR D10, BUFFER SIZE INFORMATION IN D
;	P:	FIRST ARGUMENT, OR TTY SAR IF ARGUMENT WAS T
;		SECOND ARGUMENT
;		FIRST ARGUMENT
;		(NEGATIVE OF) ACTUAL NUMBER OF ARGS
;	FXP:	LOCKI WORD
;		FILE NAMES IN "SIXBIT" FORMAT (L.F6BT WORDS)
;		MODE BITS
	MOVSI TT,TTS.IM+TTS.BN+TTS.TY+TTS.IO
	ANDCAM TT,TTSAR(A)
	MOVE F,-1-L.F6BT(FXP)	;GET MODE BITS
	HLLZ TT,OPEN9B(F)
	IORB TT,TTSAR(A)	;SET CLOSED BIT AND FILE TYPE BITS
IFN D10,[
	JUMPL F,OPEN1T		.SEE FBT.CM
	HLRZM D,FB.NBF(TT)	;STORE NUMBER OF BUFFERS
	SUBI D,3
	HRRZM D,FB.BWS(TT)	;STORE BUFFER DATA SIZE IN WORDS
OPEN1T:
]		;END OF IFN D10
	MOVSI TT,AS.FIL
	IORB TT,ASAR(A)		;NOW CAN TURN ON FILE ARRAY BIT
	MOVEI T,-F.GC
	HRLM T,-1(TT)		;SET UP GC AOBJN POINTER
	MOVEM A,(P)		;SAVE THE FILE ARRAY SAR
	PUSHJ P,ALCHAN		;ALLOCATE A CHANNEL
	 JRST OPNALZ		;LOSE IF NO FREE CHANNELS
	MOVE TT,TTSAR(A)
	HRRZM F,F.CHAN(TT)	;SAVE THE CHANNEL NUMBER IN THE FILE OBJECT
	POP FXP,T		;BEWARE THE LOCKI WORD!
	MOVEI D,F.DEV(TT)
	HRLI D,-L.F6BT+1(FXP)
	BLT D,F.DEV+L.F6BT-1(TT)	;COPY FILE NAMES INTO FILE OBJECT
	POPI FXP,L.F6BT		;FLUSH THEM FROM THE STACK
	EXCH T,(FXP)		;PUT LOCKI WORD ON STACK,
	PUSH FXP,T		;WITH MODE BITS ABOVE IT

;FALLS THROUGH
;OPEN3 OPEN3C SOPEN3C OPEN3D OPN3D1 OPEN3E OPEN3F OPEN3M OPEN3N OPEN3D OPEN3E

;FALLS IN

;STATE OF THE WORLD:
;	USER INTERRUPTS LOCKED OUT
;	TTSAR OF FILE ARRAY IN TT
;	P:	SAR FOR FILE ARRAY
;		SECOND ARGUMENT TO OPEN
;		FIRST ARGUMENT
;		-<# OF ACTUAL ARGS>
;	FXP:	MODE BITS	(THEY OFFICIALLY LIVE HERE, NOT IN T)
;		LOCKI WORD
;PDLS MUST STAY THIS WAY FROM NOW ON FOR THE SAKE OF IOJRST'S.
.SEE OPENLZ
OPEN3:	MOVE T,(FXP)		;GET MODE BITS
;NOW WE ACTUALLY TRY TO OPEN THE FILE
IFN ITS,[
	MOVE D,OPEN9C(T)
	TLNE T,FBT.AP		;APPEND MODE =>
	 TRO D,100000		; ITS WRITE-OVER MODE
	TLNE T,FBT.EC		;MAYBE OPEN AN OUTPUT TTY
	 TRO D,%TJPP2		; IN THE ECHO AREA (PIECE OF PAPER #2)
	.CALL OPENUP
	 IOJRST 4,OPNLZ0
	.CALL RCHST		;READ BACK THE REAL AND TRUE NAMES
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	JUMPL T,OPEN3M	.SEE FBT.CM	;NEED NOT ALLOCATE A CHANNEL FOR *THE* TTY
	MOVE F,F.CHAN(TT)
SA$	MOVEI R,(F)
	MOVEI D,(F)
	IMULI D,3
	ADDI D,BFHD0		;COMPUTE ADDRESS OF BUFFER HEADER
	MOVEM D,FB.HED(TT)	;REMEMBER BUFFER HEADER ADR
	SETZM (D)		;CLEAR BUFFER POINTER (TO FORCE NEW BUFFERS)
	SETZM 1(D)		;CLEAR OLD BYTE POINTER
	SETZM 2(D)		;CLEAR BYTE COUNT
	TRNE T,1
	 MOVSS D		;IF OUTPUT BUFFER, PUT ADDRESS IN LEFT HALF
	PUSH FXP,TT		;SAVE THE TTSAR
	MOVE T,OPEN9C(T)	;GET THE I/O MODE FROM THE TABLE
	MOVE TT,F.DEV(TT)
	LSH F,27
	IOR F,[OPEN 0,T]
;HERE
	XCT F			;OPEN THE FILE
	 JRST OPNAND
SA$	SHOWIT R,
	MOVE R,-1(FXP)		;GET MODE BITS
	XOR F,[<INBUF>#<OPEN>]
	TRNE R,1
	 XOR F,[<OUTBUF>#<INBUF>]
	MOVE TT,(FXP)		;GET BACK TTSAR
	HRR F,FB.NBF(TT)	;GET NUMBER OF BUFFERS IN RH OF UUO
	MOVEI TT,FB.BUF(TT)
	EXCH TT,.JBFF		;.JBFF IS THE ORIGIN FOR ALLOCATING BUFFERS
	XCT F			;TELL THE MONITOR TO ALLOCATE BUFFERS
	MOVEM TT,.JBFF		;RESTORE OLD VALUE OF .JBFF
	AND F,[0 17,]		;ISOLATE CHANNEL NUMBER AGAIN
	IOR F,[LOOKUP 0,T]
	MOVE TT,(FXP)		;GET TTSAR BACK IN TT
	TRNE R,1		;WE NEED TO PERFORM A LOOKUP FOR
SA$	 TLNE R,FBT.AP		; EITHER "IN" OR "APPEND" MODE
SA$	  CAIA
	   JRST OPEN3C
	MOVE T,F.FN1(TT)
	MOVE R,F.PPN(TT)
	HLLZ TT,F.FN2(TT)
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	XCT F			;PERFORM THE LOOKUP
	 IOJRST 4,OPNLZ1	;LOSEY LOSEY
OPEN3C:	MOVE D,-1(FXP)		;GET MODE BITS
	TRNN D,1		;NEED TO PERFORM AN ENTER FOR
	 JRST OPEN3D		; EITHER "OUT" OR "APPEND" MODE
SA$	TLNN D,FBT.AP		;APPEND MODE MEANS READ-ALTER, DO LOOKUP FIRST
	 XOR F,[<ENTER 0,T>#<LOOKUP 0,T>]
	MOVE TT,(FXP)		;GET TTSAR
	MOVE T,F.FN1(TT)
	MOVE R,F.PPN(TT)
	HLLZ TT,F.FN2(TT)
SA$	CAMN TT,[SIXBIT \←←←\]
SA$	 SETZ TT,
	SETZ D,
	XCT F			;DO THE ENTER (OR POSSIBLY LOOKUP FOR SAIL)
	 IOJRST 4,OPNLZ1	;LOSEY LOSEY
IFN SAIL,[
	MOVE D,-1(FXP)		;GET THOSE MODE BITS ONCE MORE
	TLNN D,FBT.AP		;APPEND MODE MEANS READ-ALTER
	 JRST SOPEN3C		;NORMAL CASE SO JUMP AHEAD
	XOR F,[<ENTER 0,T>#<LOOKUP 0,T>]	;MUMBLE
	MOVE TT,(FXP)		;GET TTSAR
	MOVE T,F.FN1(TT)
	PUSH FXP,R		;SAVE SIZE INFO
	MOVE R,F.PPN(TT)
	HLLZ TT,F.FN2(TT)
	CAMN TT,[SIXBIT \←←←\]
	 SETZ TT,
	SETZ D,
	XCT F			;PERFORM THE ENTER
	 IOJRST 4,OPNLZS	;LOSEY LOSEY
	XOR F,[<OUTPUT 0,>#<ENTER 0,T>]
	XCT F			;SET UP BUFFER HEADER BYTE POINTER AND COUNT
	XOR F,[<UGETF 0,T>#<OUTPUT 0,>]	;NOW THE UGETF, HEH, HEH
	XCT F
	POP FXP,R		;RESTORE SIZE INFO
	JRST OPEN3D		;GO, GO, GO
SOPEN3C:
]	;END IFN SAIL
	XOR F,[<OUT 0,>#<ENTER 0,T>]
	XCT F			;SET UP BUFFER HEADER BYTE POINTER AND COUNT
;AS A RESULT OF THE LOOKUP OR ENTER, THE SIZE INFORMATION IS IN R
OPEN3D:	MOVE D,TT
;HERE
	POP FXP,TT
	HLLZM D,F.RFN2(TT)	;SAVE AWAY THE REAL, TRUE FILE NAMES
	MOVEM T,F.RFN1(TT)
	MOVE D,F.CHAN(TT)	;GET CHANNEL FOR DEVCHR
	DEVCHR D,		;DEVICE CHRACTERISTICS
	TLNE D,(DV.DIR)		;IF NON-DIRECTORY ZERO TRUENAMES
	 JRST OPN3D1
	SETZM F.RFN2(TT)
	SETZM F.RFN1(TT)
OPN3D1:	MOVE D,F.CHAN(TT)
SA%	DEVNAM D,		;GET REAL NAME OF DEVICE
SA$	PNAME D,
	 MOVE D,F.DEV(TT)	;USE GIVEN DEVICE NAME ON FAILURE
	MOVEM D,F.RDEV(TT)
	MOVE F,F.CHAN(TT)	;TRY TO DETERMINE REAL PPN
SA%	DEVPPN F,
SA%	 CAIA
SA%	  JRST OPEN3F
SA%	TRZ D,770000
	CAMN D,[SIXBIT \SYS\]
	 JRST OPEN3E
SA%	GETPPN F,		;IF ALL ELSE FAILS, ASSUME YOUR OWN PPN
SA%	 JFCL			;CAN'T REALLY FAIL - THIS JFCL IS FOR ULTRA SAFETY
SA$	SKIPE F,F.PPN(TT)	;IF PPN WAS SPECIFIED
SA$	 JRST OPEN3F		;USE IT AS TRUE PPN
SA$	SETZ F,
SA$	DSKPPN F,		;FOR SAIL, USE THE DSKPPN (ALIAS)
	JRST OPEN3F

OPEN3E:
SA%	MOVE F,[%LDSYS]
SA%	GETTAB R,
SA%	 MOVE F,R70+1		;ASSUME SYS: IS 1,,1 IF GETTAB FAILS
SA$	MOVE F,[SIXBIT \  1  3\]	;IT'S [1,3] ON SAIL
OPEN3F:	MOVEM F,F.RPPN(TT)
	JRST OPEN3N

OPEN3M:	MOVE D,F.DEV(TT)	;FOR THE TTY, JUST COPY THE DEVICE NAME
	MOVEM D,F.RDEV(TT)
OPEN3N:
]		;END OF IFN D10
IFN D20,[
 	TLNE T,FBT.EC+FBT.SC
	 LERR [SIXBIT \ECHO AREAS AND SCROLL MODE NOT YET IMPLEMENTED FOR TWENEX!\]
;; HERE WITH MODE BITS IN T
	HRRZS T			;GET ONLY OPEN9C TABLE INDEX (OPEN MODE)
	CAILE T,3		;ONLY CHECK FOR TTY IF STANDARD MODE
	 JRST OPEN3D
	MOVE T,F.DEV(TT)
	CAME T,[ASCII \TTY\]	;SKIP IF OPENING *THE* TTY
	 JRST OPEN3D
	MOVEI 1,.PRIIN		;CONSIDER USING THE PRIMARY JFN
	TLNE TT,TTS.IO		; OF THE APPROPRIATE DIRECTION
	 MOVEI 1,.PRIOU
	MOVEI 3,0		;NO JFN FOR TTY
;	GTSTS			;MAKE SURE IT IS OPEN
;	JUMPGE 2,OPEN3D		.SEE GS%OPN
;	MOVSI D,(GS%RDF+GS%NAM)	;MAKE SURE IT CAN DO THE KIND OF I/O WE WANT
;	TLNE TT,TTS.IO
;	 MOVSI D,(GS%WRF+GS%NAM)
;	TDC 2,D
;	TDCN 2,D
	MOVE T,(FXP)		;RESTORE FLAG BITS
	 JRST OPEN3E
;HERE TO ALLOCATE A FRESH JFN AND OPEN THE FILE
OPEN3D:	PUSH FXP,TT		;SAVE THE TTSAR
	MOVEI T,F.DEV(TT)
	HRLI T,-L.F6BT
	PUSH FXP,(T)		;COPY THE GIVEN DEVICE NAMES ONTO THE STACK
	AOBJN T,.-1
	PUSHJ P,6BTNSL		;CONVERT TO A NAMESTRING IN PNBUF
	POP FXP,TT		;GET TTSAR
	MOVE T,(FXP)		;RESTORE MODE BITS IN T
	MOVSI 1,(GJ%ACC+GJ%SHT)	.SEE .GJDEF
	TRNE T,1
	 TLNE T,FBT.AP
	  TLOA 1,(GJ%OLD)	;FOR INPUT OR APPEND, WE WANT AN EXISTING FILE
	   TLO 1,(GJ%FOU+GJ%NEW) ;FOR OUTPUT, A NON-EXISTENT FILE
	MOVE 2,PNBP
	GTJFN			;GET A JFN
	 IOJRST 4,OPNLZ0
	MOVE 3,1		;SAVE JFN
OPEN3E:	MOVE 2,OPEN9C(T)	;GET OPEN MODE
	TLNE T,FBT.AP		;APPEND MODE, SET APPEND, READ BITS, CLR WRITE
	 TRC 2,OF%APP+OF%WR+OF%RD
	OPENF			;OPEN THE FILE
	 JRST OPNLZR
	HRRZM 1,F.JFN(TT)	;SAVE THE JFN IN THE FILE OBJECT
]		;END OF IFN D20

;FALLS THROUGH
;OPEN3G OPEN3P OPEN3K OPEN3L OPN3LA OPN3LB OPN3LC OPEN3J OPN3JA OPEN3Q OPEN3H OPEN3V OPEN3Z

;FALLS IN

10$	MOVE T,(FXP)		;FOR D10, FLAGS IN T MIGHT HAVE BEEN DESTROYED
	JUMPL T,OPEN3G		.SEE FBT.CM
	MOVE D,OPEN9D(T)	;SOME INITIALIZATION FOR BLOCK MODE FILES
	HRRZM D,FB.BYT(TT)	;SET UP BYTE SIZE
IFN ITS+D20,[
	HRRI D,FB.BUF-1(TT)
	MOVEM D,FB.IBP(TT)	;SET UP INITIAL BUFFER POINTER
	HRRZ D,OPEN9B(T)
]		;END OF IFN ITS+D20
10$	MOVE D,FB.BWS(TT)
	IMUL D,FB.BYT(TT)	;SET UP BUFFER LENGTH (IN BYTES)
	MOVEM D,FB.BFL(TT)
OPEN3G:	SETZM F.FPOS(TT)	;FILEPOS=0 (UNTIL FURTHER NOTICE)

;NOW DETERMINE THE SIZE OF THE FILE, AND SET THE ACCESS POINTER (IF APPLICABLE)
;MODE BITS ARE IN T, TTSAR IS IN TT; FOR D10, FILE SIZE INFO IN R;
;FOR D20, JFN IS IN 1

IFN ITS,[
	SKIPL F.FLEN(TT)	;THIS WAS SET BY RCHST BEFORE; -1 = NOT RANDOM
	 JRST OPEN3P		; ACCESS
	TLZ T,FBT.AP		;CAN'T APPEND IF NOT RANDOMLY ACCESSIBLE
	JRST OPEN3Q

OPEN3P:	HRLZI D,1		;ASSUME 1000000 FOR FAILING FILLEN (USR DEVICE)
	.CALL FILLEN		;DETERMINE LENGTH OF FILE
	 MOVEM D,F.FLEN(TT)
	TLNN T,FBT.AP
	 JRST OPEN3Q
	MOVE D,F.FLEN(TT)	;FOR APPEND MODE, SET THE ACCESS
	MOVEM D,F.FPOS(TT)	; POINTER TO THE END OF THE FILE
	.CALL ACCESS
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	JUMPL T,OPEN3Q		;DON'T DO ANY OF THIS FOR TTY
	MOVE D,F.CHAN(TT)
	DEVCHR D,
	TLNE D,(DV.DIR)
	 JRST OPEN3K
SA$	TLZ T,FBT.AP		;ASSUME A NON-DIRECTORY DEVICE CAN'T APPEND
	SETOM F.FLEN(TT)	; OR PERFORM RANDOM ACCESS
	JRST OPEN3Q

;FILE SIZE INFORMATION IS IN R
OPEN3K:
SA%	HLRE R,R		;FOR TOPS-10/CMU, THE LEFT HALF OF R
SA%	SKIPL R			; IS A WORD COUNT IF NEGATIVE AND A BLOCK COUNT
SA%	 IMULI R,200		; IF POSITIVE
SA$	MOVSS R			;SAIL JUST HAS SWAPPED NEGATIVE WORD COUNT
	MOVMS R
	IMUL R,FB.BYT(TT)
	MOVEM R,F.FLEN(TT)	;STORE FILE LENGTH
SA%	;SHOULD FALL THRU TO OPEN3Q
IFN SAIL,[
	TLNN T,FBT.AP
	 JRST OPEN3Q
	MOVEM R,F.FPOS(TT)	;FOR APPEND MODE, SET POINTER TO EOF
	MOVE F,F.CHAN(TT)
	LSH F,27
	IOR F,[UGETF 0,R]	;THIS UUO WILL CLOBBER R
;SA%	IOR F,[USETI 0,-1]
	XCT F			;SET MONITOR'S POINTER TO EOF
;HACK UP ON SAIL'S RECORD OFFSET FEATURE
	SETZM FB.ROF(TT)	;ASSUME NO RECORD OFFSET
	TLNN D,200000		;SKIP IF DSK/UDP (DEVCHR RESULT IS STILL IN D)
	 JRST OPEN3Q
	MOVEM T,(FXP)
	PUSH FXP,TT
	XOR F,[<MTAPE 0,T>#<UGETF 0,R>]
	MOVE T,[SIXBIT \GODMOD\]
	MOVEI TT,20		;SIXBIT \GODMOD\ ? 20 => GET RECORD OFFSET IN D
	XCT F
	POP FXP,TT
	MOVE T,(FXP)		;CONVERT RECORD OFFSET TO A BYTE OFFSET
	SUBI D,1		; FROM THE LOGICAL ORIGIN OF THE FILE
	IMUL D,FB.BFL(TT)
	MOVNM D,FB.ROF(TT)	;STORE AS A NEGATIVE OFFSET IN BYTES
]		;END OF IFN SAIL
]		;END OF IFN D10
IFN D20,[
	SIZEF			;GET SIZE OF FILE
	 JRST OPN3JA		;  NOT A SIZEABLE FILE?
	MOVE 2,[2,,.FBBYV]
	MOVEI 3,D
	GTFDB			;R GETS LENGTH IN "FILE-BYTES"
	LDB C,[300600,,D]	; C GETS "FILE-BYTE" SIZE (IN BITS)
	MOVEI 2,36.
	IDIVI 2,(C)
	MOVE D,2		;D HAS # OF "FILE-BYTES" PER WORD
	TLNN T,FBT.AP
	 JRST OPEN3L
	SETO 2,
	SFPTR			;SET FILE POSITION TO END FOR APPENDING
	 JRST OPEN3J
	RFPTR			;READ BACK THE ACTUAL POSITION
	 IOJRST 4,OPENLZ
	MOVE R,2
;R HAS FILEN IN "FILE-BYTES", D HAS # OF "FILE-BYTES" PER WORD
OPEN3L:	TRNE T,4
	 JRST OPN3LB		;FIXNUM MODE -  7-BIT-BYTE FILEN TO WORD COUNT
OPN3LA:	CAIN D,5		;ASCII MODE FILE ARRAY  -  CHECK IF
	 JRST OPN3LC		; "FILE-BYTE" SIZE IS ALREAD 7 BITS
	IMULI R,5		; IF NOT, CONVERT COUNT TO 7-BIT-BYTE COUNT
OPN3LB:	CAIN D,1
	 JRST OPN3LC
	ADDI R,-1(D)
	IDIVI R,(D)
OPN3LC:	MOVEM R,F.FLEN(TT)	;STORE THE CALCULATED LENGTH-OF-FILE
	TLNE T,FBT.AP
	 MOVEM R,F.FPOS(TT)	;SET FILE POSITION TO END (FOR APPEND MODE)
	JRST OPEN3Q

OPEN3J:	CAIE 1,SFPTX2		;ILLEGAL TO RESET POINTER FOR THIS FILE?
	 IOJRST 4,OPENLZ
OPN3JA:	TLZ T,FBT.AP		;IF SO, JUST SAY WE CAN'T APPEND
	SETOM F.FLEN(TT)
]		;END OF IFN D20

OPEN3Q:	MOVEM T,(FXP)		;SAVE BACK POSSIBLY ALTERED MODE BITS
IFN ITS,[
	TLNN T,FBT.CA		;FOR THE CLA DEVICE,
	 JRST OPEN3H		; GOBBLE DOWN THE FIRST TWO WORDS,
	MOVEI T,F.RFN1(TT)	; WHICH ARE THE SIXBIT FOR THE
	HRLI T,444400		; UNAME-JNAME OF THE SENDER, AND
	MOVEI D,2		; USE THEM FOR THE TRUENAMES
	.CALL SIOT		; OF THE FILE ARRAY
	 IOJRST 4,OPENLZ
	MOVE T,(FXP)		;RESTORE MODE BITS
OPEN3H:
]		;END OF IFN ITS
	TRNE T,1
	 JRST OPEN3V
	HRRZ D,DEOFFN		;FOR INPUT, GET THE DEFAULT EOFFN
	MOVEM D,FI.EOF(TT)
	SETZM FI.BBC(TT)
;	SETZM FI.BBF(TT)	;NOT IMPLEMENTED YET
	JRST @OPEN3Z(T)		;DISPATCH TO APPROPRIATE PLACE

OPEN3V: HRRZ D,DENDPAGEFN	;FOR OUTPUT, GET THE DEFAULT ENDPAGEFN
	MOVEM D,FO.EOP(TT)
	MOVE D,DPAGEL		;DEFAULT PAGEL
	MOVEM D,FO.PGL(TT)
	MOVE D,DLINEL		;DEFAULT LINEL
	MOVEM D,FO.LNL(TT)
	SETZM FB.BVC(TT)
	JRST @OPEN3Z(T)		;DISPATCH TO APPROPRIATE PLACE

OPEN3Z:	OPNAI1	;ASCII DSK INPUT
	OPNAO1	;ASCII DSK OUTPUT
	OPNTI1	;ASCII TTY INPUT
	OPNTO1	;ASCII TTY OUTPUT
	OPNBI1	;FIXNUM DSK INPUT
	OPNBO1	;FIXNUM DSK OUTPUT
	OPNTI1	;FIXNUM TTY INPUT
	OPNTO1	;FIXNUM TTY OUTPUT
	OPNAI1	;IMAGE DSK INPUT
	OPNAO1	;IMAGE DSK OUTPUT
	OPNTI1	;IMAGE TTY INPUT
	OPNTO1	;IMAGE TTY OUTPUT
;OPNBO1 OPNAO1 OPNBI1 OPNAI1 OPNA6 OPNTI1

OPNBO1:
OPNAO1:	JUMPL T,OPNAT3		.SEE FBT.CM
	MOVE D,FB.BFL(TT)
	MOVEM D,FB.BVC(TT)
	JRST OPNA6
OPNBI1:
OPNAI1:	SETZM FB.BVC(TT)
OPNA6:
IFN ITS+D20,[
	JUMPL T,OPNAT3		.SEE FBT.CM
	MOVE D,FB.IBP(TT)	;INITIALIZE BUFFER BYTE POINTER
	HRRZ R,OPEN9B(T)
	TRNN T,1
	 ADDI D,(R)		;FOR AN INPUT BUFFER, FB.BP MUST BE ADJUSTED;
	MOVEM D,FB.BP(TT)	; THE FIRST "EMPTY" BUFFER ISN'T A REAL ONE
	MOVE D,FB.BFL(TT)
	TRNN T,1
	 SETZ D,
	MOVEM D,FB.CNT(TT)
]		;END OF IFN ITS+D20
	JRST OPNAT3

OPNTI1:
10$	JUMPGE T,OPNAI1		.SEE FBT.CM	;ONLY *THE* TTY HAS THESE HACKS
	SETZM TI.BFN(TT)
	SETZM FT.CNS(TT)
IFN ITS,[
	MOVE D,[STTYW1]
	MOVEM D,TI.ST1(TT)
	MOVE D,[STTYW2]
	MOVEM D,TI.ST2(TT)
	.CALL TTYGET
	 IOJRST 4,OPENLZ
;TURN OFF AUTO-INT, SUPER-IMAGE
	TLZ F,%TSINT+%TSSII
	TRNE T,10		;TTY IMAGE INPUT =>
	 TLO F,%TSSII		; ITS SUPER-IMAGE INPUT
	.CALL TTYSET
	 IOJRST 4,OPENLZ
]		;END OF IFN ITS
IFN SAIL,[
	MOVEI D,[SACTW1 ? SACTW2 ? SACTW3 ? SACTW4]
	HRLI D,TI.ST1(T)
	SETACT D
	MOVSS D
	BLT D,TI.ST4(T)
	SETO D,
	GETLIN D
	AOSN D			;IF NOT -1 THEN OK TO USE CHARACTERISTICS
	 SETZ D,		; ELSE CAN MAKE NO ASSUMPTIONS ABOUT TTY
	TLNE D,460000		;CHECK DISLIN, DMLIN, DDDLIN
	 TLOA T,FBT.FU
	  TLZ T,FBT.FU
	MOVEM T,(FXP)
]		;END OF IFN SAIL
IFN D20,[
	MOVE 2,CCOCW1
	MOVEM 2,TI.ST1(TT)
	MOVE 3,CCOCW1
	MOVEM 3,TI.ST2(TT)
	MOVE 1,F.JFN(TT)
	SFCOC			;SET CCOC WORDS
	MOVEI 2,TT%WKF+TT%WKN+TT%WKP+TT%ECO+<.TTASC←6>	.SEE TT%DAM
	TRNE T,10
	 XORI 2,<.TTBIN#.TTASC>←6	.SEE TT%DAM
	SFMOD
]		;END OF IFN D20
	JRST OPNAT3
;OPNTO1 OPNTO5 OPNTO6

OPNTO1:
10$	JUMPGE T,OPNAO1		.SEE FBT.CM	;ONLT *THE* TTY HAS THESE HACKS!
	SETZM FT.CNS(TT)
IFN ITS,[
	.CALL CNSGET		;SET FO.RPL, FO.LNL, AND GET TTYOPT IN D
	 IOJRST 4,OPENLZ
	MOVSI R,200000		;INFINITE PAGEL INITIALLY
	MOVEM R,FO.PGL(TT)
	SOS FO.LNL(TT)
	TLZ T,FBT.SA+FBT.CP+FBT.SE
	TLNE D,%TOSA1		;SKIP UNLESS WE HAVE SAIL CHARS
	 TLO T,FBT.SA		;SET SAIL BIT
	TLNE D,%TOMVU		;IF WE CAN MOVE BACK, ASSUME WE
	 TLO T,FBT.CP		; ARE A DISPLAY TERMINAL (THIS IS OK ACCORDING
				; TO ITSTTY)
	TLNE D,%TOERS		;REMEMBER THE SELECTIVE ERASE BIT
	 TLO T,FBT.SE		.SEE RUB1CH
	MOVEM T,(FXP)
	TLNN T,FBT.EC
	 JRST OPNTO5
	.CALL SCML		;FOR ECHO AREA, SET NUMBER OF ECHO LINES TO 5
	 .LOSE 1400
OPNTO5:	.CALL TTYGET
	 .LOSE 1400
	TLNE F,%TSROL		;TURN ON SCROLL MODE IF TTY DEFAULTLY SCROLLS
	 TLO T,FBT.SC
	MOVEM T,(FXP)
	TLZ F,%TSFCO
	TLNE T,FBT.FU
	 TLO F,%TSFCO
	TLNE T,FBT.SC		;IF SCROLL MODE SET SCROLLING
	 TLO F,%TSROL
	.CALL TTYSAC
	 .LOSE 1400
	PUSHJ FXP,CLRO4		;INITIALIZE LINENUM AND CHARPOS
	JRST OPNA6
]		;END OF IFN ITS
IFN D10,[
	MOVSI D,200000		;INFINITY (???)
	EXCH D,FO.PGL(TT)
	MOVEM D,FO.RPL(TT)
	SETZM AT.CHS(TT)	;SIGH
	SETZM AT.LNN(TT)
IFE SAIL,[
	SETO R,
	TRMNO. R,		;GET UNIVERSAL I/O INDEX FOR TERMINAL
	 JRST OPNTO6
	MOVEI D,.TOWID
	MOVE F,[2,,D]		;2-WD BLOCK: <.TOWID> ? <TERMINAL INDEX>
	TRMOP. F,		;TRY DETERMINING WIDTH OF TERMINAL	
OPNTO6:	 MOVEI F,111		;DEFAULT WIDTH IS 73.
	SUBI F,1		;REDUCE BY 1 SO NO WRAP-AROUND HAPPENS	
	MOVEM F,FO.LNL(TT)
	JRST OPNA6
]		;END OF IFE SAIL
;IFN SAIL, FALLS THROUGH TO OPNAT3
]		;END OF IFN D10
IFN D20,[
	MOVE 1,F.JFN(TT)
	RFMOD			;READ JFN MODE WORD FOR TERMINAL
	LDB D,[.BP TT%WID,2]
	SUBI D,1
	MOVEM D,FO.LNL(TT)	;SET LINEL
	LDB D,[.BP TT%LEN,2]
	MOVEM D,FO.RPL(TT)
	TRNN 1,TT%PGM
	 MOVSI D,200000		;FOR NON-PAGED MODE, USE INFINITY
	MOVEM D,FO.PGL(TT)
	PUSHJ FXP,CLRO4		;INITIALIZE LINENUM AND CHARPOS
	JRST OPNA6
]		;END OF IFN D20
;TTYGET TTYSET SCML CNSGET OPNAT3 OPNAT5 OPEN4

IFN ITS,[
TTYGET:	SETZ
	SIXBIT \TTYGET\		;GET TTYST1, TTYST2, TTYSTS
	      ,,F.CHAN(TT)	;TTY CHANNEL #
	  2000,,D		;TTYST1
	  2000,,R		;TTYST2
	402000,,F		;TTYSTS

TTYSET:	SETZ
	SIXBIT \TTYSET\		;SET TTYST1, TTYST2, TTYSTS
	      ,,F.CHAN(TT)	;TTY CHANNEL #
	      ,,TI.ST1(TT)	;TTYST1
	      ,,TI.ST2(TT)	;TTYST2
	400000,,F		;TTYSTS

SCML:	SETZ
	SIXBIT \SCML\		;SET NUMBER OF COMMAND LINES
	      ,,F.CHAN(TT)	;TTY CHANNEL #
	401000,,5		;NUMBER OF LINES

CNSGET:	SETZ
	SIXBIT \CNSGET\		;GET CONSOLE PARAMETERS
	      ,,F.CHAN(TT)	;TTY CHANNEL #
	  2000,,FO.RPL(TT)	;VERTICAL SCREEN SIZE
	  2000,,FO.LNL(TT)	;HORIZONTAL SCREEN SIZE
	  2000,,D		;TCTYP (THROW AWAY)
	  2000,,D		;TTYCOM (THROW AWAY)
	402000,,D		;TTYOPT
				;TTYTYP NOT GOTTEN
]		;END OF IFN ITS

OPNAT3:	TRNE T,2
	 JRST OPNAT5
	SETZM AT.CHS(TT)
	SETZM AT.LNN(TT)
OPNAT5:	MOVEI D,1
	MOVEM D,AT.PGN(TT)
OPEN4:	POP FXP,F.MODE(TT)
	POP P,A			;SAR FOR FILE ARRAY - RETURNED
	MOVEI TT,-1
	SETZM @TTSAR(A)		;ILLEGAL FOR LOSER TO ACCESS AS ARRAY
	MOVSI TT,TTS<CL>
	ANDCAM TT,TTSAR(A)	;UNCLOSE IT
	POPI P,3		;FLUSH 2 ARGS AND # OF ARGS
20$	SETZB 2,3		;MAKE SURE AC'S CONTAIN NO JUNK
	UNLKPOPJ		;WE HAVE WON!
;OPNLZS OPNLZR OPNAND OPNLZ1 OPNALZ OPENLZ OPNLZ0 OPNLZ1 OPNLZ3 OPNLZ2

;;; VARIOUS ERROR HANDLERS - ARRIVE WITH A MESSAGE IN C.

;; BASIC LOSER IS AT   "OPNLZ0:"

IFN SAIL,[
OPNLZS:	POPI FXP,2
	JRST OPNLZ0
]	;END IFN SAIL
IFN D20,[
OPNLZR:	MOVE 1,3
	RLJFN
	 JFCL
	IOJRST 4,OPNLZ0
]		;END OF IFN D20
IFN D10,[
OPNAND:	MOVEI C,NSDERR		;NO SUCH DEVICE
OPNLZ1:	POPI FXP,1
	JRST OPNLZ0
]		;END OF IFN D10


OPNALZ:	MOVEI C,[SIXBIT \ALL I/O CHANNELS ALREADY IN USE!\]
	POP FXP,-L.F6BT-1(FXP)		;FAKE OUT CORRECT PDL CONDITIONS
	POPI FXP,L.F6BT-1
	JRST OPNLZ1

OPENLZ:				;CLOSE THE LOSING CHANNEL FIRST
IFN ITS,[
	.CALL CLOSE9		;REMEMBER, TT HAS TTSAR
	 .LOSE 1400
]		;END OF IFN ITS
IFN D10,[
	MOVE F,F.CHAN(TT)	
	LSH F,27
	IOR F,[RELEASE 0,0]
	XCT F
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)
	CLOSF
	 HALT
]		;END OF IFN D20
OPNLZ0:	MOVE F,F.CHAN(TT)	;THEN DEALLOCATE CHANNEL
	SETZM CHNTB(F)
;HERE
OPNLZ1:	POP P,AR1		;FILE OBJECT SAR
	POP P,A			;SECOND ARG
	POP P,B			;FIRST ARG
	POP P,T			;ARG COUNT
	JUMPN T,OPNLZ3
	MOVEI A,(AR1)
	PUSHJ P,NAMELIST
	JRST OPNLZ2
OPNLZ3:	PUSHJ P,ACONS
	EXCH A,B
	PUSHJ P,ACONS
	CAMN T,XC-2
	HRRM B,(A)
OPNLZ2:	MOVEI B,Q$OPEN
	POPI FXP,1
	UNLOCKI
	JRST XCIOL



;OPENUP FILLEN ACCESS RCHST

IFN ITS,[

OPENUP:	SETZ
	SIXBIT \OPEN\		;OPEN FILE
	  5000,,(D)		;I/O MODE BITS
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,F.DEV(TT)	;DEVICE NAME
	      ,,F.FN1(TT)	;FILE NAME 1
	      ,,F.FN2(TT)	;FILE NAME 2
	400000,,F.SNM(TT)	;SNAME

FILLEN:	SETZ
	SIXBIT \FILLEN\		;GET FILE LENGTH (IN WORDS)
	      ,,F.CHAN(TT)	;CHANNEL #
	402000,,F.FLEN(TT)	;PUT RESULT IN F.FLEN OF THE FILE OBJECT

ACCESS:	SETZ
	SIXBIT \ACCESS\		;SET FILE ACCESS POINTER
	      ,,F.CHAN(TT)	;CHANNEL #
	400000,,F.FPOS(TT)	;POSITION

RCHST:	SETZ
	SIXBIT \RCHST\		;READ CHANNEL STATUS
	      ,,F.CHAN(TT)	;CHANNEL #
	  2000,,F.RDEV(TT)	;DEVICE NAME
	  2000,,F.RFN1(TT)	;FILE NAME 1
	  2000,,F.RFN2(TT)	;FILE NAME 2
	  2000,,F.RSNM(TT)	;SNAME
	402000,,F.FLEN(TT)	;ACCESS POINTER
]		;END OF IFN ITS
;OPEN9A OPEN9B OPEN9D

;;; TABLES FOR OPEN FUNCTION

;;; ALL TABLES ARE INDEXED BY THE RIGHT HALF OF THE MODE WORD.

IT$	RBFSIZ==:200		;RANDOM BUFFER SIZE
20$	RBFSIZ==:200
10$	RBFSIZ==:0

;;; SIZES FOR FILE ARRAYS: <BLOCKMODE SIZE>,,<CHARMODE SIZE>
;;; FOR D10, THIS IS THE SIZE EXCLUSIVE OF THE BUFFER; FOR ITS AND D20, INCLUSIVE.
;;; SIZES ARE IN WORDS.

OPEN9A:	FB.BUF+RBFSIZ,,FB.BUF		;ASCII DSK INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;ASCII DSK OUTPUT
		    ,,FB.BUF+NASCII/2	;ASCII TTY INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;ASCII TTY OUTPUT
	FB.BUF+RBFSIZ,,FB.BUF		;FIXNUM DSK INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;FIXNUM DSK OUTPUT
		    ,,FB.BUF+NASCII/2	;FIXNUM TTY INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;FIXNUM TTY OUTPUT
	FB.BUF+RBFSIZ,,FB.BUF		;IMAGE DSK INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;IMAGE DSK OUTPUT
		    ,,FB.BUF+NASCII/2	;IMAGE TTY INPUT
	FB.BUF+RBFSIZ,,FB.BUF		;IMAGE TTY OUTPUT

;;; <BITS FOR LEFT HALF OF TTSAR>,,<BLOCK MODE BUFFER SIZE>
;;; THE RIGHT HALF IS NOT REALLY USED FOR D10.

OPEN9B:
IRP X,,[A,X,I]J,,[,+BN,+IM]		;ASCII/FIXNUM/IMAGE
IRP Y,,[D,T]K,,[,+TY]			;DSK/TTY
IRP Z,,[I,O]L,,[,+IO]			;IN/OUT
IFSE X!!Y!!Z,IDI, LDGTW5:	.SEE LDGTWD	;CROCK
	TTS<CL!J!!K!!L>,,RBFSIZ
TERMIN
TERMIN
TERMIN

;;; <LEFT HALF FOR FB.IBP>,,<BYTES PER WORD>
;;; RELEVANT ONLY FOR BLOCK MODE FILES.  ONLY THE RIGHT HALF IS USED FOR D10.

OPEN9D:	010700,,5		;ASCII DSK INPUT
	010700,,5		;ASCII DSK OUTPUT
	0			;ASCII TTY INPUT (IRRELEVANT)
	010700,,5		;ASCII TTY OUTPUT
	004400,,1		;FIXNUM DSK INPUT
	004400,,1		;FIXNUM DSK OUTPUT
	0			;FIXNUM TTY INPUT (IRRELEVANT)
IT$	001400,,3		;FIXNUM TTY OUTPUT
10$ SA%	010700,,5
10$ SA$	001100,,4
20$	010700,,5
	010700,,5		;IMAGE DSK INPUT
	010700,,5		;IMAGE DSK OUTPUT
	0			;IMAGE TTY INPUT (IRRELEVANT)
10%	041000,,4		;IMAGE TTY OUTPUT
10$ SA%	010700,,5
10$ SA$	001100,,4	? WARN [IMAGE TTY OUTPUT?]
;OPEN9C $EOPEN $EOPN1 $EOPN2 $EOPN3 $EOPN6 $EOPN5 $EOPN7 $EOPN8 $EOPN9 $EOPN4

;;; OPEN9C CONTAINS THE OPEN MODE WORD.  FOR D10, THE MODE IS ALWAYS
;;; BLOCK MODE IF THIS TABLE IS USED.  FOR D20, THERE IS NO DIFFERENCE
;;; IN THIS TABLE FOR BLOCK VERSUS SINGLE MODE.

OPEN9C:
IFN ITS,[
;;; RECALL THE MEANINGS OF THE FOLLOWING BITS IN ITS:
;;;	1.3	0 => ASCII, 1 => IMAGE
;;;	1.2	0 => UNIT (CHARACTER) MODE, 1 => BLOCK MODE
;;;	1.1	0 => INPUT, 1 => OUTPUT
;;; ITS BLOCK MODE IS NOT USED FOR BUFFERED FILES; RATHER, SIOT IS USED.
	0		;ASCII DSK INPUT
	1		;ASCII DSK OUTPUT
	0		;ASCII TTY INPUT
	%TJDIS+1	;ASCII TTY OUTPUT (DISPLAY IF POSSIBLE)
	4		;FIXNUM DSK INPUT
	5		;FIXNUM DSK OUTPUT
	%TIFUL+0	;FIXNUM TTY INPUT (>7 BITS ON IMLACS AND TVS)
	%TJDIS+1	;FIXNUM TTY OUTPUT
	0		;IMAGE DSK INPUT
	1		;IMAGE DSK OUTPUT
	0		;IMAGE TTY INPUT (SUPER-IMAGE INPUT)
	%TJSIO+1	;IMAGE TTY OUTPUT (SUPER-IMAGE OUTPUT)
]		;END OF IFN ITS
IFN D10,[
	.IOASC		;ASCII DSK INPUT
	.IOASC		;ASCII DSK OUTPUT
	.IOASC		;ASCII TTY INPUT
	.IOASC		;ASCII TTY OUTPUT
	.IOBIN		;FIXNUM DSK INPUT
	.IOBIN		;FIXNUM DSK OUTPUT
	.IOASC		;FIXNUM TTY INPUT
	.IOASC		;FIXNUM TTY OUTPUT
	.IOASC		;IMAGE DSK INPUT
	.IOASC		;IMAGE DSK OUTPUT
	.IOIMG		;IMAGE TTY INPUT
	.IOIMG		;IMAGE TTY OUTPUT
]		;END OF IFN D10
IFN D20,[
.SEE OF%BSZ OF%MOD
	070000,,OF%RD		;ASCII DSK INPUT
	070000,,OF%WR		;ASCII DSK OUTPUT
	070000,,OF%RD		;ASCII TTY INPUT
	070000,,OF%WR		;ASCII TTY OUTPUT
	440000,,OF%RD		;FIXNUM DSK INPUT
	440000,,OF%WR		;FIXNUM DSK OUTPUT
	440000,,OF%RD		;FIXNUM TTY INPUT
	440000,,OF%WR		;FIXNUM TTY OUTPUT
	074000,,OF%RD		;IMAGE DSK INPUT
	074000,,OF%WR		;IMAGE DSK OUTPUT
	104000,,OF%RD		;IMAGE TTY INPUT
	104000,,OF%WR		;IMAGE TTY OUTPUT
]		;END OF IFN D20

IFN SAIL,[
;EOPEN FOR SAIL -- HANDLE 'E' FILES

;;; DO AN OPEN, THEN, IF THE FILE IS OPEN IN NON-IMAGE NON-TTY ASCII MODE SKIP
;;; OVER E'S COMMENT BY DOING SUCCESIVE IN'S
$EOPEN:	MOVEI TT,(P)		;MUST CALCULATE WHERE RETURN ADR IS
	ADD TT,T		;SUBTRACT NUMBER OF ARGS GIVEN
	PUSH FXP,(TT)		;REMEMBER USER'S RETURN ADR
	MOVEI R,$EOPN1		;NEW RETURN ADR
	MOVEM R,(TT)
	JRST $OPEN		;NOW OPEN THE FILE
$EOPN1:	MOVEI TT,F.MODE		;GET MODE OF FILE
	HRRZ TT,@TTSAR(A)
	SKIPE TT		;ASCII, DSK, INPUT?
	 POPJ FXP,		;NOPE, JUST RETURN
	PUSH P,A		;REMEMBER FILE ARRAY
	PUSH FXP,[440700,,[ASCIZ \COMMENT ⊗\]]
$EOPN2:	ILDB T,(FXP)		;GET NEXT CHARACTER TO LOOK FOR
	JUMPE T,$EOPN5		;LOOKS LIKE WE FOUND AN 'E' FILE, SKIP INDEX
	PUSH P,[$EOPN3]		;RETURN ADR
	PUSH P,-1(P)		;THE FILE ARRAY TO READ FROM
	MOVNI T,1		;ONE ARG
	JRST %TYI+1		;TYI ONE CHARACTER FROM THE FILE (NCALL)
$EOPN3:	JUMPL TT,$EOPN4		;EOF -- ERROR!
	LDB T,(FXP)		;GET THE CURRENT CHARACTER
	CAIN T,(TT)		;MATCH?
	 JRST $EOPN2		;YES, KEEP SCANNING THE FILE
	PUSH P,[$EOPN6]		;NOPE, FILEPOS TO BOF
	PUSH P,-1(P)		;FILE ARRAY
	PUSH P,CIN0		;ZERO - LOGICAL BOF
	MOVNI T,2		;TWO ARGS -- SET FILEPOS
	JRST FILEPOS
$EOPN6:	POPI FXP,1		;BYTE POINTER
	POP P,A			;FILE ARRAY RETURNED IN A
	POPJ FXP,		;RETURN TO USER

;HERE WHEN FOUND AN 'E' FILE, SKIP TO AFTER ↑L AFTER NEXT ↑V
$EOPN5:	PUSH P,[$EOPN7]		;RETURN ADR
	PUSH P,-1(P)		;THE FILE ARRAY TO READ FROM
	MOVNI T,1		;ONE ARG
	JRST %TYI+1		;TYI ONE CHARACTER FROM THE FILE (NCALL)
$EOPN7:	JUMPL TT,$EOPN4		;EOF -- ERROR!
	CAIE TT,↑V		;FOUND ↑V?
	 JRST $EOPN5		;NOPE, KEEP ON LOOPING
$EOPN8:	PUSH P,[$EOPN9]		;RETURN ADR
	PUSH P,-1(P)		;THE FILE ARRAY TO READ FROM
	MOVNI T,1		;ONE ARG
	JRST %TYI+1		;TYI ONE CHARACTER FROM THE FILE (NCALL)
$EOPN9:	JUMPL TT,$EOPN4		;EOF -- ERROR!
	CAIE TT,↑L		;FOUND ↑L?
	 JRST $EOPN8		;NOPE, KEEP ON LOOPING
	POPI FXP,1		;GET RID OF BYTE POINTER
	POP P,A			;RETURN FILE ARRAY
	POPJ FXP,		;TO USER

$EOPN4:	POP P,A			;FILE ARRAY -- EOF, WE LOST
	FAC [EOF READING A FILE WHICH LOOKED LIKE AN 'E' FILE - EOPEN!]
]		;END IFN SAIL
;DEFAULTF SSCRFILE ENDPAGEFN EOFFN EOFFN0 EOFFNZ EOFFN2 EOFFN5 EOFFNY EOFFN7

SUBTTL	DEFAULTF, ENDPAGEFN, EOFFN

;;; (DEFAULTF X) SETS THE DEFAULT NAMELIST TO X.
;;; X IS MERGEF'D WITH THE OLD NAMELIST FIRST.
;;; IT FOLLOWS THAT (DEFAULTF NIL) = (NAMELIST NIL).

DEFAULTF:
	PUSHJ P,FIL6BT
	PUSHJ P,DMRGF
	PUSHJ P,6BTNML
	MOVEM A,VDEFAULTF
	POPJ P,

SSCRFILE==DEFAULTF

;;; (EOFFN F) GETS INPUT FILE F'S END-OF-FILE FUNCTION.
;;; (EOFFN F X) SETS THE FUNCTION TO BE X.
;;; (ENDPAGEFN F) GETS OUTPUT FILE F'S END-OF-PAGE FUNCTION.
;;; (ENDPAGEFN F X) SETS IT TO BE X.

ENDPAGEFN:
	JSP TT,LWNACK	;LSUBR (1 . 2)
	LA12,,QENDPAGEFN
	MOVEI TT,ATOFOK
	MOVEI B,DENDPAGEFN
	MOVEI C,QENDPAGEFN
	JRST EOFFN0

EOFFN:	JSP TT,LWNACK		;LSUBR (1 . 2)
	LA12,,QEOFFN
	MOVEI TT,IFILOK
	MOVEI B,DEOFFN
	MOVEI C,QEOFFN
EOFFN0:	AOJN T,EOFFN5
	POP P,AR1
	JUMPE AR1,EOFFN2
IFN SFA,[
	PUSH FXP,TT
	JSP TT,XFOSP		;SFA?
	 JRST EOFFNZ
	 JRST EOFFNZ		;NOPE
	POPI FXP,1
	MOVEI A,(AR1)		;CALL THE SFA, AND RETURN ITS ANSWER
	HRRZI B,(C)		;THE OPERATION -- EOFFN OR ENDPAGEFUN
	SETZ C,			;WE WANT THE SFA TO RETURN A VALUE
	JRST ISTCSH		;SHORT INTERNAL CALL
EOFFNZ:	POP FXP,TT
]		;END IFN SFA
	PUSHJ P,(TT)
	MOVEI TT,FI.EOF		.SEE FO.EOP
	HRRZ A,@TTSAR(AR1)
	UNLKPOPJ

EOFFN2:	HRRZ A,(B)
	POPJ P,

EOFFN5:	POP P,A
	POP P,AR1
	JUMPE AR1,EOFFN7
IFN SFA,[
	PUSH FXP,TT
	JSP TT,XFOSP		;CHECK IF WE HAVE AN SFA
	 JRST EOFFNY
	 JRST EOFFNY		;NOPE
	POPI FXP,1
	JSP T,%NCONS		;LISTIFY IT SO IT IS IDENTIFIABLE AS AN ARG
	MOVEI B,(C)		;THE OPERATION
	MOVEI C,(A)		;AS THE ARG TO THE SFA
	MOVEI A,(AR1)		;THE SFA ITSELF
	JRST ISTCSH		;DO THE SHORT INTERNAL CALL
EOFFNY:	POP FXP,TT		;UNDO PUSHES
]		;END IFN SFA
	PUSHJ P,(TT)
	MOVE TT,TTSAR(AR1)
	HRRZM A,FI.EOF(TT)		.SEE FO.EOP
	UNLKPOPJ

EOFFN7:	HRRZM A,(B)
	POPJ P,
;$LISTEN $LSTN3 $LSTNS $LSTN4 $LSTN6 $LSTN5 LISTEN

SUBTTL	LISTEN FUNCTION

;;; (LISTEN X) LISTENS TO THE SPECIFIED TTY X.

$LISTEN:
	SKIPA F,CFIX1	;LSUBR (0 . 1) NCALLABLE
	 MOVEI F,CPOPJ
	HRRZ AR1,V%TYI
	JUMPE T,$LSTN3
	MOVEI D,Q$LISTEN
	AOJN T,S1WNAL
	POP P,AR1		;FILE ARRAY SPECIFIED
$LSTN3:
IFN SFA,[
	JSP TT,XFOSP		;FILE OR SFA?
	 JRST $LSTNS
	 JRST $LSTNS		;NOT AN SFA
	JSP T,QIOSAV
	MOVEI A,(AR1)		;SFA IN A
	MOVEI B,Q$LISTEN	;OPERATION
	SETZ C,			;NO THIRD ARG
	PUSHJ P,ISTCSH		;SHORT INTERNAL SFA INVOCATION
	MOVE TT,(A)		;BE PREPARED IF NCALL'ED
	POPJ P,
$LSTNS:	]	;END IFN SFA
	PUSHJ P,TIFLOK		;IT BETTER BE TTY INPUT
IFN ITS,[
	.CALL LISTEN		;SO LISTEN ALREADY
	 SETZ R,		;ON FAILURE, JUST ASSUME 0
]		;END OF IFN ITS
IFN D10,[
	SKIPL T,F.MODE(TT)	.SEE FBT.CM
SA$	 JRST $LSTN4		? WARN [REALLY OUGHT TO BE SMARTER]
SA%	 JRST $LSTN5
IFE SAIL,[
	TLNE T,FBT.LN
	 SKIPA D,[SKPINL]
	  MOVSI D,(SKPINC)
]		;END OF IFE SAIL
IFN SAIL,[
	MOVE D,[SNEAKS R,]
	JRST $LSTN6

$LSTN4:	MOVE D,F.CHAN(TT)
	LSH D,27
	IOR D,[TTYSKP 0,]
]		;END OF IFN SAIL
$LSTN6:	XCT D
$LSTN5:	 TDZA R,R
	  MOVEI R,1
]		;END OF IFN D10
IFN D20,[
	HRRZ 1,F.JFN(TT)
	SIBE			;SKIP IF INPUT BUFFER EMPTY
	 SKIPA R,2		;NUMBER OF WAITING CHARS IN 2
	  SETZ R,
]		;END OF IFN D20
	MOVEI TT,FI.BBC
	MOVE A,@TTSAR(AR1)	;ALSO COUNT IN ANY BUFFERED
	TLZE A,-1		; UP CHARACTERS PENDING
	 AOS R
	JSP T,LNG1A
	ADD TT,R
	UNLOCKI
	JRST (F)

IFN ITS,[
LISTEN:	SETZ
	SIXBIT \LISTEN\		;LISTEN AT A TTY, ALREADY
	      ,,F.CHAN(TT)	;TTY CHANNEL #
	402000,,R		;NUMBER OF TYPED-AHEAD CHARS
]		;END OF IFN ITS
;LINEL PAGEL CHARPOS LINENUM PAGENUM FLFWNA FLNSFL FLFROB FLFRFL FLFRF1 FLFRB1 FLFB1A FLFRB3 FLFRB5 FLFRB6 FLFRB8 FLFRB7

SUBTTL	LINEL, PAGEL, CHARPOS, LINENUM, PAGENUM

;;; VARIOUS FUNCTIONS TO GET AND SET A FILE'S LINEL, PAGEL,
;;; CHARPOS, LINENUM, AND PAGENUM.

LINEL:	SKIPA D,CFIX1
	 MOVEI D,CPOPJ
	JSP F,FLFROB		;LSUBR (1 . 2)
	FO.LNL,,QLINEL
	DLINEL,,ATOFOK

PAGEL:	SKIPA D,CFIX1
	 MOVEI D,CPOPJ
	JSP F,FLFROB		;LSUBR (1 . 2)
	FO.PGL,,QPAGEL
	DPAGEL,,ATOFOK

CHARPOS:
	SKIPA D,CFIX1
	 MOVEI D,CPOPJ
	JSP F,FLFROB		;LSUBR (1 . 2)
	AT.CHS,,QCHARPOS
	0,,ATOFOK

LINENUM:
	SKIPA D,CFIX1
	 MOVEI D,CPOPJ
	JSP F,FLFROB		;LSUBR (1 . 2)
	AT.LNN,,QLINEN
	0,,ATFLOK

PAGENUM:
	SKIPA D,CFIX1
	 MOVEI D,CPOPJ
	JSP F,FLFROB		;LSUBR (1 . 2)
	AT.PGN,,QPAGENUM
	0,,ATFLOK

IFN SFA,[
FLFWNA:	HRRZ D,(F)		;FUNCTION NAME
	JRST WNALOSE		;WNA ERROR

FLNSFL: EXCH AR1,A
	WTA [NOT SFA OR FILE!]
]		;END IFN SFA
FLFROB:
IFN SFA,[
	CAME T,XC-1		;WRONG NUMBER OF ARGS?
	 CAMN T,XC-2
	  SKIPA
	   JRST FLFWNA
	MOVEI TT,(P)		;TOP OF STACK CONTAINS FILE ARG?
	CAMN T,XC-2		;UNLESS TWO ARGS
	 MOVEI TT,-1(P)
	MOVE A,(TT)		;GET THE ARG
	CAIN A,TRUTH
	 MOVE A,V%TYO
	MOVEM A,(TT)		;RE-STORE IT INCASE IT HAS BEEN ALTERED
	JUMPE A,FLFRF1		;IF NIL THEN HANDLE SPECIALLY
	EXCH A,AR1
	JSP TT,XFOSP
	 JRST FLNSFL		;NOT AN SFA OR FILE
	 JRST FLFRFL
	AOSE T			;HAVE TWO ARGS?
	 POP P,AR1		;YES, IT WILL BECOME SECOND ARG TO SFA
	EXCH AR2A,(P)		;SAVE AR2A ON STACK, GET SFA
	PUSH P,A		;SAVE OLD AR1
	PUSH P,C
	PUSH P,B
	MOVEI A,(AR2A)		;SFA INTO A
	HRRZ B,(F)		;OPERATION NAME INTO B
	MOVEI C,(AR1)		;THIRD ARG
	PUSHJ P,ISTCSH
	POP P,B
	POP P,C
	POP P,AR1
	POP P,AR2A
	JSP T,FXNV1		;MAKE SURE RESULT IS A FIXNUM
	POPJ P,
FLFRFL:	EXCH A,AR1
FLFRF1:	]	;END IFN SFA
	AOJN T,FLFRB5
	PUSH P,AR1
	MOVE AR1,-1(P)
	MOVEM D,-1(P)
	JUMPE AR1,FLFRB3
FLFRB1:	HRRZ TT,1(F)
	PUSHJ P,(TT)
	HLRZ TT,(F)
	MOVM TT,@TTSAR(AR1)	.SEE STERPRI	;LINEL MAY BE NEGATIVE
	UNLOCKI
FLFB1A:	POP P,AR1
	POPJ P,

FLFRB3:	HLRZ TT,1(F)
	JUMPE TT,FLFRB1
	MOVE TT,(TT)
	JRST FLFB1A

FLFRB5:	POP P,A
	JSP T,FXNV1
	PUSH P,AR1
	MOVE AR1,-1(P)
	MOVEM D,-1(P)
	MOVE D,TT
	JUMPE AR1,FLFRB7
FLFRB6:	HRRZ TT,1(F)
	PUSHJ P,(TT)
	HLRZ TT,(F)
	MOVMS D
	EXCH D,@TTSAR(AR1)
	SKIPGE D
	 MOVNS @TTSAR(AR1)
	UNLOCKI
FLFRB8:	MOVE TT,D
	JRST FLFB1A

FLFRB7:	HLRZ TT,1(F)
	JUMPE TT,FLFRB6
	MOVMM D,(TT)
	JRST FLFRB8
;$IN $INNOS $INTST $IN2 $IN1 $IN3 INB6 $IN4 $IN5M $IN7 INB4 $IN8 INSIOT IB4

SUBTTL	IN

;;; (IN X) INPUTS ONE FIXNUM FROM THE BINARY FILE X AND
;;; RETURNS IT.

$IN:	PUSH P,CFIX1		;SUBR 1 - NCALLABLE - ACS 1
	PUSH P,AR1
IFN SFA,[
	JSP TT,AFOSP		;FILE OR SFA OR NOT?
	 JFCL			;NOT, LET OTHER CODE GIVE ERROR
	 JRST $INNOS		;NOT SFA, PROCEED
	POP P,AR1
	PUSHJ FXP,SAV5M1	;SAVE ALL BUT A
	MOVEI B,Q$IN		;IN OPERATION
	SETZ C,			;NO THIRD ARG
	PUSHJ P,ISTCSH		;SHORT +INTERNAL-SFA-CALL
	PUSHJ FXP,RST5M1
	MOVE T,CFIX1
	CAMN T,(P)		;NCALL'ED?
	 POPI P,1		;YUP, WILL RETURN ARGS IN BOTH A AND TT
	JSP T,FXNV1		;INSURE A FIXNUM
	POPJ P,			;RETURN
$INNOS: ]	;END IFN SFA
	MOVEI AR1,(A)
	PUSHJ P,XIFLOK		;LOCKI, and put TTSAR in TT
IFN ITS+D20,[
	MOVEI R,(TT)		;SAVE A COPY OF TTSAR
	SKIPL F.MODE(TT)	.SEE FBT.CM
	 JRST $IN2
;FOR ITS AND D20, HANDLE SINGLE MODE FILES
IFN ITS,[
	PUSH FXP,[%TIACT]	;ASSUME A TTY
	TLNN TT,TTS.TY		;A TTY?
	 SETZM (FXP)		;NO, SO NO FLAG BITS
	MOVE T,[444400,,TT]	;READ ONE 36.-BIT BYTE INTO TT
	MOVEI D,1
	.CALL INSIOT
	 .LOSE 1400
	POPI FXP,1
	JUMPN D,$IN7		;IF WE GOT NO WORD, ASSUME EOF
]		;END OF IFN ITS
IFN D20,[
	PUSH P,2		;PRESERVE AC'S
	HRRZ 1,F.JFN(TT)
	BIN			 ;READ ONE 36.-BIT BYTE INTO TT
	 ERJMP $INTST
	MOVE TT,2
	POP P,2
]		;END OF IFN D20
	AOS F.FPOS(R)
	JRST $IN1
IFN D20,[
$INTST:	PUSH FXP,2
	GTSTS
	TLNN 2,(GS%EOF)
	 JRST IIOERR
	POP FXP,TT
	POP P,2
	JRST $IN7
]	;END OF IFN D20
]		;END OF IFN ITS+D20
IFN D10,[
	SKIPGE F.MODE(TT)	.SEE FBT.CM
	 LERR [SIXBIT \SINGLE MODE BINARY NOT AVAILABLE - IN!\]
]		;END OF IFN D10
$IN2:
10$	HRRZ D,FB.HED(TT)
10%	SOSGE FB.CNT(TT)	;ARE THERE ANY BYTES LEFT?
10$	SOSGE 2(D)
	 JRST $IN3		;NO, GO GET ANOTHER BUFFER FULL
10%	ILDB TT,FB.BP(TT)	;YES, GOBBLE DOWN THE NEXT BYTE
10$	ILDB TT,1(D)
$IN1:	POP P,AR1
	UNLKPOPJ

;GET THE NEXT INPUT BUFFER
$IN3:
	MOVE F,FB.BVC(TT)
	ADDM F,F.FPOS(TT)	;UPDATE FILE POSITION
IFN D20\ITS,[
	MOVE T,FB.IBP(TT)
	MOVEM T,FB.BP(TT)	;REINITIALIZE BYTE POINTER
	MOVE D,FB.BFL(TT)	;GET BUFFER LENGTH INTO D
]	;END OF IFN D10\ITS
IFN ITS,[
	MOVE R,D		;GET NEXT BUFFER-LOAD
	.CALL SIOT
	 .LOSE 1400
	SUBB R,D		;GET COUNT OF BYTES OBTAINED
]		;END OF IFN ITS
IFN D20,[
	PUSH P,B
	PUSH P,C
	HRRZ 1,F.JFN(TT)
	MOVE 2,T
	MOVN 3,D
	SIN			;GET NEXT BUFFER-LOAD
	ADD D,3			;GET COUNT OF BYTES OBTAINED
	POP P,C
	POP P,B
]
IFN D10,[
	HRRZ F,F.CHAN(TT)
	LSH F,27
IFE SAIL,[
	TLNN TT,TTS.BM
	 JRST INB6		;$DEV5R
	HRRZ D,FB.HED(TT)	;MAYBE BUFFER HAS BEEN RELOCATED? THEN FOR
	MOVSI R,(BF.IOU) 
	ANDCAB R,@(D)		;TURNS OFF BUFFER-IN-USE BIT AND ADVANCES BUFFER
	SKIPGE (R)		;BF.IOU MUST BE BIT 4.9 FOR THIS TO WORK
	 JRST INB4 		;$DEV5S 
	MOVSI F,TTS.BM
	ANDCAM F,TTSAR(AR1)	;TURN OFF "BUFFER-MOVED" BIT, BUT LEAVE BUF ADDR IN F
	MOVE F,F.CHAN(TT)	;$DEV5Q:
	LSH F,27
	HRR F,R
]	;END OF IFE SAIL
INB6:	TLO F,(IN 0,)		;$DEV5R:
	XCT F			;GET NEXT INPUT BUFFER
	 JRST $IN4		;SUCCESS
	XOR F,[<STATO 0,IO.EOF>#<IN 0,>]
	XCT F			;SKIP IF EOF
	 JRST IIOERR 		;HALT FOR OTHER LOSS
$IN4:	MOVE D,FB.HED(TT)
	MOVE D,2(D)		;GET, FROM HEADER, NUMBER OF BYTES READ
]		;END OF IFN D10
$IN5M:	MOVEM D,FB.BVC(TT)	;STORE "VALID COUNT" - # OF OF BYTES OBTAINED
IFN D20\ITS,	MOVEM D,FB.CNT(TT)
	JUMPN D,$IN2		;EXIT IF WE GOT ANY (ELSE EOF?)
IFN D20,[
	PUSH P,B
	GTSTS			;GET FILE STATUS
	TLNN 2,(GS%EOF)		;SKIP ON EOF
	 JRST IIOERR 		;HALT FOR OTHER LOSS
	POP P,B
]		;END OF IFN D20
$IN7:	MOVEI A,(AR1)		;NO DATA WORDS - EOF
	HRRZ T,FI.EOF(TT)
	UNLOCKI
	POP P,AR1
	JUMPE T,$IN8
	JCALLF 1,(T)		;CALL USER EOF FUNCTION

IFN D10*<1-SAIL>,[
INB4:	HRRZ F,FB.HED(TT)
	HRRZM R,(F)		;STORE CURRENT BUFFER ADDR IN CONTROL BLOCK
	TLZ R,-1
	ADD R,[4400,,1]
	MOVEM R,1(F)		;CONSTRUCT NEW BP FOR BUFFER
	MOVE D,(R)
	MOVEM D,2(F)		;STORE NEW BYTE COUNT INITO BUFFERCONTROL-BLOCK
	JRST $IN5M
]	;END OF D10*<1-SAIL>

$IN8:	PUSH P,B		;NO USER EOF FUNCTION
	PUSHJ P,NCONS
	MOVEI B,Q$IN
	PUSHJ P,XCONS
	POP P,B
	IOL [EOF - IN!]		;SIGNAL ERROR

IFN ITS,[
INSIOT:	SETZ
	SIXBIT \SIOT\		;STRING I/O TRANSFER
	      ,,F.CHAN(TT)	;CHANNEL #
	      ,,T		;BYTE POINTER
	      ,,D		;BYTE COUNT
	404000,,(FXP)
]		;END IFN ITS

IFN D10*<1-SAIL>,[
IB4:	HRRZ D,FB.HED(TT)
	HRRZM R,(D)		;STORE CURRENT BUFFER ADDR IN CONTROL BLOCK
	TLZ R,-1
	ADD R,[4400,,1]
	MOVEM R,1(D)		;CONSTRUCT NEW BP FOR BUFFER
	MOVE R,(R)
	MOVEM R,2(D)		;STORE NEW BYTE COUNT INITO BUFFERCONTROL-BLOCK
	MOVEM R,FB.BVC(F)	;STORE "VALID COUNT" - # OF OF BYTES OBTAINED
	JRST $IN2
]	;END OF IFE D10*<1-SAIL>


;$OUT $OUTNS $OUT3 $OUT2 $OUT1

SUBTTL	OUT

;;; (OUT X N) OUTPUTS THE FIXNUM N TO THE FILE X. RETURNS T.

$OUT:	PUSH P,AR1		;SUBR 2 - ACS 1
IFN SFA,[
	JSP TT,AFOSP		;FILE OR SFA OR NOT?
	 JFCL			;NOT, LET OTHER CODE GIVE ERROR
	 JRST $OUTNS		;NOT SFA, PROCEED
	POP P,AR1
	JSP T,QIOSAV
	MOVEI C,(B)		;ARG IS FIXNUM TO OUTPUT
	MOVEI B,Q$OUT		;OUT OPERATION
	JRST ISTCSH		;SHORT +INTERNAL-SFA-CALL
$OUTNS: ]	;END IFN SFA
	JSP T,FXNV2
	MOVEI AR1,(A)
	PUSHJ P,XOFLOK
	SKIPL F.MODE(TT)	.SEE FBT.CM
	 JRST $OUT2
;OUTPUT ONE BYTE TO A SINGLE MODE BINARY FILE
10$	LERR [SIXBIT \SINGLE MODE BINARY NOT AVAILABLE - OUT!\]
IFN ITS,[
	MOVE R,D
	MOVEI D,1
	MOVE T,[444400,,R]
	.CALL SIOT
	 .LOSE 1400
]		;END OF IFN ITS
IFN D20,[
	PUSH P,B
	HRRZ 1,F.JFN(TT)
	MOVE 2,D
	BOUT
	 ERJMP OIOERR
	POP P,B
]		;END OF IFN D20
IFN ITS+D20,[
	AOS F.FPOS(TT)
	JRST $OUT1
]		;END OF IFN ITS+D20

$OUT3:	PUSH FXP,D
10%	SETZM FB.CNT(TT)	;DOING OWN BUFFERED I/O, -1 IN FB.CNT IS N.G.
	PUSHJ P,IFORCE		;FORCE OUT CURRENT OUTPUT BUFFER
	POP FXP,D
$OUT2:
10$	HRRZ R,FB.HED(TT)
10%	SOSGE FB.CNT(TT)	;SEE IF THERE IS ROOM FOR ANOTHER BYTE
10$	SOSGE 2(R)
	 JRST $OUT3		;NO, GO OUTPUT THIS BUFFER FIRST
10%	IDPB D,FB.BP(TT)	;STICK BYTE IN BUFFER
10$	IDPB D,1(R)
$OUT1:	POP P,AR1
	JRST UNLKTRUE

;FILEPOS FPOS0E FPOS0B FPOS0C FPOS0D FPOS0 FPOS0A FPOS1 FP1SF1 FPOS1A FPOS1C FPOS2

SUBTTL	FILEPOS, LENGTHF

;;; FILEPOS FUNCTION
;;;	(FILEPOS F) RETURNS CURRENT FILE POSITION
;;;	(FILEPOS F N) SETQ FILEPOS TO X
;;; FOR ASCII FILES, THE POSITION IS MEASURED IN CHARACTERS;
;;; FOR FIXNUM FILES, IN FIXNUMS (WORDS).  ZERO IS THE
;;; BEGINNING OF THE FILE.  ERROR IF FILE IS NOT RANDOMLY
;;; ACCESSIBLE.

FILEPOS:
	AOJE T,FPOS1		;ONE ARG => GET
	AOJE T,FPOS5		;TWO ARGS => SET
	MOVEI D,QFILEPOS	;ARGH! ARGH! ARGH! ...
	JRST S2WNALOSE

IFN D20,[
FPOS0E:	POP P,B
	JRST FPOS0D
]		;END OF IFN D20

FPOS0B:	SKIPA C,FPOS0
FPOS0C:	 MOVEI C,[SIXBIT \ILLEGAL ACCESS POINTER!\]
FPOS0D:	MOVEI A,(B)		;COME HERE FOR TWO-ARG CASE,
	PUSHJ P,NCONS		; MESSAGE IN C
	JRST FPOS0A

FPOS0:	MOVEI C,[SIXBIT \FILE NOT RANDOMLY ACCESSIBLE!\]
	SETZ A,			;HERE FOR ONE-ARG ERROR, MESSAGE IN C
FPOS0A:	MOVEI B,(AR1)
	PUSHJ P,XCONS
	MOVEI B,QFILEPOS
	UNLOCKI
	JRST XCIOL

;ONE-ARGUMENT CASE: GET FILE POSITION
FPOS1:	POP P,AR1		;ARG IS FILE
IFN SFA,[
	JSP TT,XFOSP		;DO WE HAVE AN SFA?
	 JRST FP1SF1		;NOPE
	 JRST FP1SF1		;NOPE
	MOVEI A,(AR1)		;YES, CALL THE STREAM
	MOVEI B,QFILEPOS
	SETZ C,			;NO ARGS
	JRST ISTCSH
FP1SF1:	]	;END IFN SFA
	PUSHJ P,FILOK		;DOES LOCKI
	SKIPGE F.FLEN(TT)
	 JRST FPOS0		;ERROR IF NOT RANDOMLY ACCESSIBLE
	SKIPGE D,F.FPOS(TT)
	 JRST FPOS1A
10$	MOVE R,FB.HED(TT)
	ADD D,FB.BVC(TT)
10%	SUB D,FB.CNT(TT)	;FOR BUFFERED FILES, ADJUST FOR COUNT
10$	SUB D,2(R)
FPOS1A:	TLNN TT,TTS<IO>
	 SKIPN B,FI.BBC(TT)
	  JRST FPOS2
	TLZE B,-1		;ALLOW FOR ANY BUFFERED BACK CHARS
	 SUBI D,1
FPOS1C:	JUMPE B,FPOS2
	HRRZ B,(B)
SA%	SKIPLE D
SA$	CAMLE D,FB.ROF(TT)	;FOR SAIL, MAY BE AS LOW AS RECORD OFFSET
	 SOJA D,FPOS1C
FPOS2:	MOVE TT,D		;RETURN POSITION AS FIXNUM
	UNLOCKI
	JRST FIX1
;FPOS5 FP5SF1 FPOS5A FPOS6 FPOSZ FPOS6C FPOS6B FPOS6A FPOS7 $LENWT $LENGTHF $LENFL

;TWO-ARGUMENT CASE: SET FILE POSITION
FPOS5:	POP P,B			;SECOND ARG IS T, NIL, OR FIXNUM
	POP P,AR1		;FIRST IS FILE
IFN SFA,[
	JSP TT,XFOSP		;DO WE HAVE AN SFA?
	 JRST FP5SF1		;NOPE, CONTINUE
	 JRST FP5SF1		;NOPE
	MOVEI A,(B)		;LISTIFY THE ARG
	JSP T,%NCONS
	MOVEI C,(A)		;PASS IT AS THE ARG TO THE SFA
	MOVEI A,(AR1)		;THE SFA
	MOVEI B,QFILEPOS	;FILEPOS OPERATION
	JRST ISTCSH
FP5SF1:	]	;END IFN SFA
	SETZ D,
	JUMPE B,FPOS5A		;NIL MEANS ABSOLUTE BEGINNING OF FILE
	CAIE B,TRUTH		;T MEANS END OF FILE
	 JSP T,FXNV2		;OTHERWISE A FIXNUM POSITION
FPOS5A:	PUSHJ P,FILOK		;DOES LOCKI, SAVES D
10$	TLNN TT,TTS.IO		;OUTPUT LOSES FOR D10
	 SKIPGE F.FLEN(TT)	;NOT RANDOMLY ACCESSIBLE?
	  JRST FPOS0C
SA%	JUMPL D,FPOS0C		;FOR NON-SAIL, NEGATIVE POSITION ILLEGAL
SA$	CAMGE D,FB.ROF(TT)	;FOR SAIL, MAY BE DOWN TO RECORD OFFSET
SA$	 JRST FPOS0C
IFN ITS+D20,[
	TLNN TT,TTS.IO
	 JRST FPOS6
	PUSH FXP,D
	PUSHJ P,IFORCE		;FORCE OUTPUT BUFFER
	POP FXP,D
	MOVE R,F.FPOS(TT)	;CALCULATE PRESENT FILE POSITION
	SKIPL F.MODE(TT)
	 ADD R,FB.BVC(TT)
	SKIPL F.MODE(TT)
	 SUB R,FB.CNT(TT)
	CAMLE R,F.FLEN(TT)	;ADJUST LENGTH UPWARD IF NECESSARY
	 MOVEM R,F.FLEN(TT)
FPOS6:
]		;END OF IFN ITS+D20
	CAMLE D,F.FLEN(TT)
	 JRST FPOS0C		;LOSE IF SPECIFIED POSITION GREATER THAN LENGTH
SA$	CAIN B,NIL		;R IS BY DEFAULT 0, BUT FOR SAIL
SA$	 MOVE D,FB.ROF(TT)	; NIL MEANS USE THE RECORD OFFSET
	CAIN B,TRUTH
	 MOVE D,F.FLEN(TT)
IFE D10,[
	TLNE TT,TTS.IO		;DETERMINE IF BYTE WE DESIRE IS IN THE BUFFER
	 JRST FPOSZ		; IF AN INPUT FILE
	MOVE R,F.FPOS(TT)	;POSITION OF FIRST BYTE IN BUFFER
	CAMGE D,R		;IF TARGET TOO SMALL THEN MUST DO I/O
	 JRST FPOSZ
	ADD R,FB.BVC(TT)	;ADD IN NUMBER OF BYTES IN THE BUFFER
	CAML D,R		;IF TARGET TOO LARGE THEN ALSO MUST DO I/O
	 JRST FPOSZ
	MOVE R,F.FPOS(TT)	;IN RANGE, GET POS OF FIRST BYTE IN BUFFER
	SUBM D,R		;MAKE R INTO BYTE OFFSET INTO BUFFER
	MOVE D,FB.IBP(TT)	;RESTORE BYTE POINTER
	MOVEM D,FB.BP(TT)
	MOVE D,FB.BVC(TT)	;GET VALID NUMBER OF BYTES IN BUFFER
	SUBI D,(R)		;NUMBER OF BYTES REMAINING
	MOVEM D,FB.CNT(TT)	; IS THE NEW COUNT
	SKIPE R
	 IBP FB.BP(TT)		;SKIP APPROPRIATE NUMBER OF BYTES
	SOJG R,.-1
	SETZM FI.BBC(TT)	;CLEAR BUFFERED BACK CHARACTER
	JRST UNLKTRUE
FPOSZ:
]		;END IFE D10

	MOVEM D,F.FPOS(TT)
IFN ITS,[
	.CALL ACCESS		;SET FILE POSITION
	 IOJRST 0,FPOS0D	;JUMP ON FAILURE
]		;END OF IFN ITS
IFN D20,[
	PUSH P,B
	CAME D,F.FLEN(TT)	;BE ULTRA CAUTIOUS
	 SKIPA 2,D
	  SETO 2,
	HRRZ 1,F.JFN(TT)
	SFPTR			;SET FILE POINTER
	 IOJRST 0,FPOS0E
	POP P,B
]		;END OF IFN D20
IFN D10,[
	IDIV D,FB.BFL(TT)	;DIVIDE FILE POSITION BY BUFFER LENGTH
	MOVE T,F.CHAN(TT)
	LSH T,27
	TLO T,(USETI 0,0)
	HRRI T,1(D)		;BLOCKS ARE NUMBERED 1-ORIGIN
	XCT T			;POSITION FILE TO CORRECT BLOCK
	IMUL D,FB.BFL(TT)	;CALCUALTE F.FPOS
	MOVEM D,F.FPOS(TT)
	MOVE T,FB.HED(TT)
	SETZM 2(T)		;ZERO THE REMAINING BYTE COUNT
	HRLZI D,400000		;NOW WE HAVE TO ZERO ALL USE BITS
FPOS6C:	HRRZ T,(T)		;GET POINTER TO NEXT BUFFER
	SKIPL (T)		;THIS ONE IN USE?
	 JRST FPOS6B		;NOPE, SO WE ARE DONE
	XORM D,(T)		;CLEAR THE USE BIT
	JRST FPOS6C		;AND LOOP OVER ALL BUFFERS
FPOS6B:
]		;END OF IFN D10
10%	TLNE TT,TTS.IO
10%	 JRST FPOS6A
	SETZM FB.BVC(TT)
	SETZM FI.BBC(TT)
;	SETZM FI.BBF(TT)	;NOT IMPLEMENTED YET
FPOS6A:
IFN ITS+D20,[
	SKIPGE F.MODE(TT)
	 JRST UNLKTRUE		;THAT'S ALL FOR SINGLE MODE FILES
	TLNE TT,TTS.IO
	 JRST FPOS7		;JUMP FOR OUTPUT FILES
]		;END OF IFN ITS+D20
	MOVE T,TT
10$	PUSH FXP,R		;R HAS DESIRED BYTE WITHIN BLOCK
	PUSHJ P,$DEVBUF		;GET NEW INPUT BUFFER
	 JFCL			;IGNORE EOF
10%	JRST UNLKTRUE
IFN D10,[
	POP FXP,R
	MOVE TT,FB.HED(T)
	MOVN D,R
	ADDM D,2(TT)		;DECREASE COUNT BY NUMBER OF SKIPPED BYTES
	SKIPE R
	 IBP 1(TT)		;SKIP APPROPRIATE NUMBER OF BYTES
	SOJG R,.-1
]		;END OF IFN D10
	JRST UNLKTRUE

IFN ITS+D20,[
FPOS7:	JSP D,FORCE6		;INITIALIZE OUTPUT POINTERS
	JRST UNLKTRUE
]		;END OF IFN ITS+D20


;;; LENGTHF -- SUBR, 1 ARG, NCALLABLE
;;;  RETURNS THE LENGTH OF AN OPEN FILE
$LENWT:	EXCH A,AR1
SFA%	WTA [NOT A FILE - LENGTHF!]
SFA$	WTA [NOT A FILE OR SFA - LENGTHF!]
$LENGTHF:
	PUSH P,CFIX1		;STANDARD ENTRY, RETURN FIXNUM
				;ALTERNATE ENTRY, RETURN NUMBER IN TT
	EXCH A,AR1		;FILE/SFA INTO AR1
	JSP TT,XFOSP		;MUST BE EITHER
	 JRST $LENWT
IFN SFA,[
	 JRST $LENFL
	EXCH AR1,A
	JSP T,QIOSAV
	MOVEI B,Q$LENGTHF
	SETZ C,
	PUSHJ P,ISTCSH		;SHORT INTERNAL SFA CALL
	MOVE T,CFIX1
	CAMN T,(P)		;WE WILL RETURN RESULTS IN A AND TT, SO NO NEED TO RECONS
	 POPI P,1
	JSP T,FXNV1
	POPJ P,
$LENFL:	]	;END IFN SFA
	EXCH A,AR1
	MOVEI TT,F.FLEN		;GET FILE LENGTH
	MOVE TT,@TTSAR(A)
	POPJ P,			;RETURNS TO CFIX1 OR CPOPJ
;CNPCHK VAROPT

SUBTTL	CONTROL-P CODES AND TTY INITIALIZATION


;;; PUSH A ↑P CODE INTO A TTY FILE ARRAY IN AR1.
;;; THE CHARACTER TO FOLLOW THE ↑P IS IN D.
;;; IF THE CHARACTER IS "H, "I, OR "V, THEN THE SECOND
;;; CHARACTER IS IN THE LEFT HALF OF D.
;;; CHARPOS, LINENUM, AND PAGEL ARE CORRECTLY UPDATED.
;;; I/O LOSSES DUE TO INTERRUPTS BETWEEN ↑P AND THE
;;; NEXT CHARACTER ARE SCRUPULOUSLY AVOIDED.
;;; CLOBBERS T, TT, D, AND F.  SAVES R (SEE RUB1C3).

;CNPCHK DOES A .5LOCKI. THEN SKIPS IF CAPABILITY EXITS.

CNPCHK:	.5LKTOPOPJ		.SEE INTTYR
				.SEE CRSRP7
	HLLOS NOQUIT
IFE ITS\D20, 	POPJ FLP,
IFN ITS\D20,[
20$ 	SKIPN VTS20P
20$ 	 POPJ FLP,
	MOVE T,TTSAR(AR1)
IT$	.CALL VAROPT		;GET TTYOPT INTO TT
IT$	 POPJ FLP,		;OH WELL, ASSUME NOTHING IS LEGAL
IFN D20,[
	WARN [HOW TO GET TTY OPTIONS BITS INTO TT FOR CNPCOD?]
	PUSH P,A
	HRRZ 1,F.CHAN(T)
	RTCHR
	SETZ TT,
	TLNE A,TC%BS		;CONVERT TO ITS %TO... CODES
	 TLO TT,%TOMVB
	TLNE A,TC%MOV
	 TLO TT,%TOMVU+%TOMVB
	TLNE A,TC%CLR
	 TLO TT,%TOERS
	TLNE A,TC%LID
	 TLO TT,%TOLID
	TLNE A,TC%CID
	 TLO TT,%TOCID
	POP P,A
]	;END OF IFN D20
	XCT CNPOK-"A(D)		;IS THIS FUNCTION DOABLE?
	 POPJ FLP,		;WOULD HAVE NO AFFECT ANYWAY SO JUST RETURN
	AOS (FLP)
	POPJ FLP,
IFN ITS,[
VAROPT:	SETZ
	SIXBIT \TTYVAR\
	      ,,F.CHAN(T)	;CHANNEL
	        [SIXBIT \TTYOPT\] ;READ THE TTYOPT VARIABLE
	402000,,TT		;RETURN RESULT INTO TT
]	;END OF IFN ITS
]	;END OF IFN ITS\D20
;CNPCOD CNPCUR CNPCD1 CNPCD2 CNPC9


CNPCOD:	PUSHJ FLP,CNPCHK	;DOES A .5LOCKI. THEN SKIPS IF CAPABILITY EXITS
	 JRST CZECHI		; BUT IF NOT EXISTS, THEN JUST FAILS TO SKIP
CNPCUR:	MOVE TT,F.MODE(T)
	PUSH FXP,D
	JUMPL TT,CNPCD1		.SEE FBT.CM
IFE ITS\D20,	LERR [SIXBIT \LOSE ON BUFFERED FILES - CNPCOD!\]
IFN ITS\D20,[
	MOVE TT,FB.CNT(T)
	SUBI TT,3
	JUMPGE TT,CNPCD1
	MOVE TT,T		;IF THERE ISN'T ROOM IN THE CURRENT BUFFER
	PUSHJ P,IFORCE		; FOR THE WHOLE ↑P CODE SEQUENCE, FORCE
	MOVE T,TTSAR(AR1)	; OUT THE BUFFER TO AVOID TIMING ERRORS
]	;END OF IFN ITS\D20
CNPCD1:
IFE ITS\D20,	JRST CZECHI
IFN ITS\D20,[
	SETZM ATO.LC(T)		;IF USING ↑P CODES, THEN FORGET WE DID LF
	MOVEI TT,↑P		;OUTPUT A ↑P
	PUSHJ P,TYOF6
	HRRZ TT,(FXP)		;OUTPUT THE CHARACTER
	PUSHJ P,TYOF6
	HLRZ TT,(FXP)
	JUMPE TT,CNPCD2
	TRZ TT,400000		;OUTPUT ANY ADDITIONAL MAGIC ARGUMENT
	PUSHJ P,TYOF6
CNPCD2:	POP FXP,TT
	XCT CNPC9-"A(TT)	;ACCOUNT FOR THE EFFECTS OF THE ↑P CODE
IT$	 .LOSE
20$ 	 HALTF 

CNPC9:	JRST CNP.A	;A	ADVANCE TO FRESH LINE
	JRST CNP.B	;B	MOVE BACK 1, WRAPAROUND
	JRST CNP.C	;C	CLEAR SCREEN
	JRST CNP.D	;D	MOVE DOWN, WRAPAROUND
	JRST CZECHI	;E	CLEAR TO EOF
	JRST CNP.F	;F	MOVE FORWARD 1, WRAPAROUND
	JFCL
	JRST CNP.H	;H	SET HORIZONTAL POSITION
	JRST CNP.I	;I	NEXT CHARACTER IS ONE-POSITION PRINTING CHAR
	JFCL
	JRST CZECHI	;K	KILL CHARACTER UNDER CURSOR
	JRST CZECHI	;L	CLEAR TO END OF LINE
	JRST CNP.M	;M	GO INTO **MORE** STATE, THEN HOME UP
	JRST CZECHI	;N	GO INTO **MORE** STATE
	JFCL
	JRST CZECHI	;P	OUTPUT A ↑P
	JRST CZECHI	;Q	OUTPUT A ↑C
	JRST CZECHI	;R	RESTORE CURSOR POSITION
	JRST CZECHI	;S	SAVE CURSOR POSITION
	JRST CNP.T	;T	TOP OF SCREEN (HOME UP)
	JRST CNP.U	;U	MOVE UP, WRAPPING AROUND
	JRST CNP.V	;V	SET VERTICAL POSITION
	JFCL
	JRST CNP.X	;X	BACKSPACE AND ERASE ONE CHAR
	JFCL
	JRST CNP.Z	;Z	HOME DOWN
	JRST CNP.IL	;[	INSERT LINE	;BEWARE THE BRACKETS!
	JRST CNP.DL	;\	DELETE LINE
	JRST CZECHI	;]	SAME AS L (OBSOLETE)
	JRST CZECHI	;↑	INSERT CHARACTER
	JRST CZECHI	;←	DELETE CHARACTER

;CNPOK RCPOS RCPS1 RSTCUR RSTCU3

;; TABLE OF INSTRUCTIONS TO DETERMINE IF A ↑P CODE IS DOABLE ON THE TERMINAL
;; AND RCPOS: AND RSTCUR:

CNPOK:	SKIPA		;A	OK ON ALL TTY'S
	TLNN TT,%TOMVB	;B	ON TTY'S THAT CAN DO IT DIRECTLY
	SKIPA		;C	THIS HAS SOME AFFECT ON ALL TTY'S
	SKIPA		;D
	TLNN TT,%TOERS	;E	REQUIRES %TOERS
	SKIPA		;F
	JFCL
	SKIPA		;H
	TLNN TT,%TOMVU	;I
	JFCL
	TLNN TT,%TOMVU	;K	ASSUME ONLY ON DISPLAY TERMINALS
	TLNN TT,%TOERS	;L
	SKIPA		;M
	SKIPA		;N
	JFCL
	SKIPA		;P
	SKIPA		;Q
	TLNN TT,%TOMVU	;R	MAKE SAME ASSUMPTION AS K AND S
	TLNN TT,%TOMVU	;S
	TLNN TT,%TOMVU	;T	WHEREAS C IS MEANINGFUL FOR NON-DISPLAYS, I
			;	DO NOT FEEL THIS IS
	TLNN TT,%TOMVU	;U
	TLNN TT,%TOMVU	;V
	JFCL
			;X	TTY'S THAT CAN BACKSPACE AND DON'T OVERSTRIKE
			;	OR THAT CAN ERASE
	PUSHJ P,[TLNN TT,%TOMVB	;MUST BE ABLE TO BACK-UP
		  POPJ P,
		 TLNN TT,%TOERS	;IF CAN ERASE IS OK
		  TLNN TT,%TOOVR ;OR IF DOESN'T OVERSTRIKE
		   AOS (P)
		 POPJ P,]
	JFCL
	TLNN TT,%TOMVU	;Z	SAME CRITERIA AS ↑PT
	TLNN TT,%TOLID	;[
	TLNN TT,%TOLID	;\
	TLNN TT,%TOERS	;]	SAME AS ↑PL
	TLNN TT,%TOCID	;↑
	TLNN TT,%TOCID	;←
;; WARN [CURSORPOS S AND R SHOULD SAVE AND RESTORE POSITION INFO FOR TTY]

RCPOS:
IFN ITS,[
;Channel number in TT, file array in AR1, Read cursorpos into D	
	.CALL RCPS1		;GET CURRENT CURSOR POSITION
	 .LOSE 1400
	POPJ FLP,
RCPS1:	SETZ
	SIXBIT \RCPOS\		;READ CURSOR POSITION
	      ,,@TTSAR(AR1)	;TTY CHANNEL #
	  2000,,D		;MAIN PROGRAM CURSORPOS
	402000,,R		;ECHO AREA CURSORPOS
]		;END OF IFN ITS
IFN D20,[
	PUSHJ FXP,SAV3		;PRESERVE LOW THREE AC'S
	MOVEI TT,F.JFN
	HRRZ 1,@TTSAR(AR1)
	RFPOS
	MOVE D,2
	PUSHJ FXP,RST3
]		;END OF IFN D20
	POPJ FLP,

IFN ITS\D20,[
RSTCUR:				;RESTORE SAVED CURSOR POSITION
	HLLZ D,-3(FXP)		;FOR ITS, USE ↑P CODES TO SET
	HRRI D,"V-10		; CURSOR POSITION
	PUSHJ P,RSTCU3
	HRLZ D,-3(FXP)
	HRRI D,"H-10
RSTCU3:	ADD D,R70+10
	JRST CNPCOD
]		;END OF IFN ITS\D20

;CNP.X CNP.B CNP.M CNP.C CNP.T CNP.IL CNP.DL CNP.A CNP.D CNP.F CNP.H CNP.H1 CNP.I CNP.Z CNP.U CNP.V CNPBBL CNPBL CNPL CNPU CNPF CLRSRN

;;; STILL WITHIN AN IFN ITS\D20

CNP.X:				;SAME AS ↑P K ↑P B
CNP.B:	MOVE D,FO.LNL(T)	;MOVE BACKWARDS
	SUBI D,1
	SOSGE AT.CHS(T)		;WRAP AROUND IF AT LEFT MARGIN
	 MOVEM D,AT.CHS(T)
	JRST CZECHI

CNP.M:				;DOES **MORE**, THEN HOMES UP
CNP.C:	AOS AT.PGN(T)		;CLEAR SCREEN - AOS PAGENUM
CNP.T:	SETZM AT.LNN(T)		;HOME UP - CLEAR LINENUM AND CHARPOS
CNP.IL:				;INSERT LINE - CLEAR CHARPOS
CNP.DL:				;DELETE LINE - CLEAR CHARPOS
	SETZM AT.CHS(T)
	JRST CZECHI

CNP.A:	SKIPN AT.CHS(T)		;CRLF, UNLESS AT START OF LINE
	 JRST CZECHI
	SETZM AT.CHS(T)		;CLEAR CHARPOS, THEN INCR LINENUM
CNP.D:	AOS D,AT.LNN(T)		;MOVE DOWN
	CAML D,FO.PGL(T)	;WRAP AROUND OFF BOTTOM TO TOP
	 SETZM AT.LNN(T)
	JRST CZECHI

CNP.F:	AOS D,AT.CHS(T)		;MOVE FORWARD - WRAP AROUND
	CAML D,FO.LNL(T)	; OFF END TO LEFT MARGIN
	 SETZM AT.CHS(T)
	JRST CZECHI

CNP.H:	HLRZ D,TT		;SET HORIZONTAL POSITION
	TRZ D,400000		;CLEAR LISP'S FLAG (IF PRESENT)
	SUBI D,7		;ACCOUNT FOR ITS'S 8
	SKIPGE FO.LNL(T)	;IF NEGATIVE, THEN ASSUME C(D) IS ACTUAL HPOS
	 JRST CNP.H1
	CAMLE D,FO.LNL(T)	;PUT ON RIGHT MARGIN IF TOO BIG
∩A5∨-
A⊂Y
≡]1≥_Q($~∃π≥@]⊂bt%'+¬∩↓λXb~(∪≠∨-∃~AλY¬(]π⊃LQ(R~(∪∃%'PAπ5
⊃∩~∀4∃π≥ 9∩tββ=&Aβ(9π⊃&QPR∩∩w9∨(A%∃β→→2↓)⊃
AI∪∂⊃(↓)⊃∪≥≤XA¬+PAπ→∨M
~∀∪)%'(A
5βπ⊃$~∀~∃
≥ ]4h∪')i~Aβ(9→≥≤QPR∩∩w!∨≠
A⊃∨/≤@!∂≡A+@A
%∨4A)∨ ∧R~∃π9 ]*t%≠∨-
↓λY
≡9%!_QPR∩w≠=-
A+@~∀∪'U¬∩Aλ0b∩∩w]%β A¬%∨+≥⊂A
%∨4A)∨ ↓)≡A¬=))∨~4∀∪'∨M∂
AβP]→≥≤!(R∩∩lA+'∪9∞@E%∃β_DAAβ∂
A1∃∂) ~∀αA5∨-~↓λYβ(9→≥≤QPR~∀∪)%'(A
5βπ⊃$~∀
∃
≥ ],h∪⊃→%hAλY)P∩∩w'∃(A-I)∪πβ0A!∨'%)∪∨≤4∀∪'+	∩AλX\∩∩w∪_A)∨≡↓→β%∂∀XA!+PA∨≤A	∨))∨4~∀βπ¬≠→
A⊂Y
≡]I!_Q($~∀αA5∨-
A⊂Y
≡]I!_Q($~∀∪'U¬∩Aλ0b~∀∪5∨-~↓λYβ(9→≥≤QPR~∀∪)%'(A
5π⊃$~∀~∀4∀~∀vlrA-βI∪∨+&↓%∨+)%≥&A→∨$A!I∪∃)∪9∞A= ↓π∨	L~∀~∃
≥!¬¬0t∪≠∨Y∩Aλ0A∧~∀%!+'⊃(A Yπ9!π∨λ4∃π≥!	_t∪≠=-∩A⊂XE∧~(∪!+'!∀A Y
≥!π∨⊂~∃π≥A_t∪≠=-∩A⊂XE_~(∪∃%'PAπ≥!
∨λ~∀4∃π≥!Tt∪≠∨Y∩Aλ0A*~∀%∃%'(↓π∃!π=λ~∀~)π⊂~B3P&6>4*%α⊃b∩_4(LRJNQ∧~:B∞| 4(∀T~2JN∀qh&6⎇2⊗%α"aα4PJ*JN"α∞*B≤z⊂4(hRt$%\*:⊃α|1α&~rα&RNd!I@4Ph(4(1n>∧rRRe∧zB:Qαα>B:#	α>Bu!F¬α⎇α:QI∧~>B:#⊂4(4SYmmα∀zVR&t)α~>∩α>B⊗tJ:≥α-↓αR"*α&:&$Jε1α%"eα~Lb∃αε∃∩εfMph)mmZαN.&¬→α>9¬~V∞∞-~M↓"4
&2M∧J→αRDJMα*|⊃α:⊗4*Iα"!αR"*αRReJp4(4TzB:R%Ih4*L29α&%→2l4PI:NV≤*Qαmu∩RRebbRt%\:⊗Q↓u"Reα-~⊗Iα4
J&ε∀b∀4(M"2:∃¬!1⊗R∃:εP$KZ&→α≥*B⊗JLzIαN-!↓⊗R∃:εQ1∧JQα∞-∩Rε&tbd4(Jα*JN"α>B:#$%m∧
:R&≤JBεR-→α>V∩α>B⊗tJ:≥α%"e↓5∧b⊗Q≡~α>
2L:∀4(M"2:∃¬!1⊗R∀r>P$KZ⊗2N*α∩>9=!α>B,qα&→¬:∃α∩|q≡QαD
Z∃α$B∃αR%H4(%¬α>B)¬↓04*⎇α:QAPH4*tHIn⊗:"α>→αL29α&%_4)m[Y↓IA J↑εJrαnN"⎇*2⊃α<)α:>"α>B⊗rαRRe∧J→α∩-"ε∞",!1α>∩α∞"⊗≤Y↓:B∀J&9}hh(&ε⎇→↓"AHh(&"∃∩iα¬e1⊗Rfxh(&6⎇2⊗%α%!2~=t*>@4PJBVNBαA2α%"NεID	$4(MαVN!¬↓2n>∧rQFtHIn>B,qαVA¬"Reα⎇*RBV"αεJJ
H4(&¬*N!ααb∧4(Lj>Z:JαQ1DhP&*J≥!↓∩>∧*84(hR>B:#	h&6⎇2⊗%α
⊃E1"
H4(&∧zAαAdλ4(&lzZ⊗%¬"Q2~zr⊗>@hP&6>4*5α¬dαRRN
⊃"εI
H4(&lzZ⊗%¬"Q2~zr2:0hP&6>4)αRQdαRRN
⊃"εI
H4(&lzZ⊗5¬"Q2∩dJ:⊗0HInN⊗"αVAα$*~εVe!α2&t*1α~∀z5α&tJR&εbα*>	∧~>:N|b∀4(Lj>Z⊗JαRQ24y:B≡`h(&6⎇2∃αR"bαRR≤
I"ε∪	$4(Lj>Z⊗jαRQ2%αε≡⊗`H%nN-!αVA∧"⊗~ε,bQαB:⊗1↓⊂h(&B-~!αAeZ>B:#
εt4PJBVNBαA2ε∪λ4(&lzZ:%¬!1D4PJ*JN"αNRRM"fB∀hR>B:#
¬h&lzZ⊗5∧	2ZR%H$%nLr&Rεb&j∃α∩RRe∩αR=↓E~RεR-→αRRM"fB∃Hh(&"∃∩iα¬e1⊗RfHh(&6⎇2⊗%α%!2R%t∩~84PJBVNBαA2α%"NεID	$4*L29α&%→.⊃IαZNε&bbl4(Lj>Z⊗JαRQ2$I:NQλh(&B-~!α~E↓2αR%~εI"
H4(&lzZ⊗%¬"Q2RJrNQHhP&BV≤Aα~bαbαRR≤
I"¬Hh*&~*α&RMeX4(&lzZ⊗%¬"Q2RJrNQLhP&BV≤Aα~bαbαRR≤
I"¬Hh(&6⎇2⊗%α%!2R%u~QP4PJBVNBα~bAdαRRN
⊃"¬$hRt$%\*:⊃α|1α&~*α&RLhRt$%\*:⊃α|1α&~rα&RM\!IA.≤
&04PJBVNBαA2∞⎇α:QHHIn>B,qαVA¬"ReαLrBVQ∧
JJεHh(&B-~!αAe1⊗RfHh(&6⎇2:%α"aD4(LRJNQα">B⊗ph*>Bu!Ih4TJ~9αM"M.⊃∪↓.NεLa2l4TJQ∀&∧zAα~E↓2P4TJQ∀&∧zAα~E↓2_4PJB>A∧2bA2⊂H%n
-:εJ∃¬""*	It≤\∀
t⎇∀D⊃PPM	zα∧5
¬D H+Q⊂K\YhB∧|d	∀4r	~E~\F&α]≤→→@hPα3∪h9r#"A→3uQ$
∃∃
Jp4Jλ∃#"B*	tλ∀¬J∩+PHiJ∃∃¬⊃"R1Id∩5∀e8L
j8231"B3)zQ3(λE∃∩+J:*∃
E#"B)YuQ3$
K∃∩%JuJ
J
#"I~	"3)zQ3(λe∃∩+J:j∃
E#"R*D"33jh3(∃¬J∩+TjF
∃∃¬⊃"R5∧A+Pp)Iλ∃∃⊗Tuβ!)5	α$¬S∪thT-ε↓ Tp$A33uHY(∃β
I+Tuε∃∃∃
!QTp)↓~q5⊂(:λ∃β!)1S@λFL⊗aQ@2∀J+H ⊗⊃↔%#'
**∀FB∧fgk⊃P→⊗*∩TεST⊃(TT)
	MOVE 3,TI(
'(HQ)(R4∀∪'

≠ε~∀%⊃%%4bP∩→tR~9"%!$4(M∩~6> h(&&⎇⊃↓I2$I0∃≥F5¬%"⊃Q LE*+"β
HedT4e
E"HQ!∃≤4Yx@hPα4q*KPHEFc"W!⊃,¬bg⊃⊂#c⊂∩c'⊂"_εE.BDXEND GF IFN ITS ↔λH`W'β%_~(M*:2>≤Z$4λLBJJ@$λ∩e2X¬⊗)⊃ B2
*T¬⊂!+∩`∀YM
	PUSHJ P,S@'Q)3π∨9&∩`.≤z2MααI∧,@(⊂
'Qbj$"T⊂ iP⊂dπN@'=→
4T~6B: ε#@!4∪t	$∀∪j	UC!↓ ¬β≥af)∩dε CLRI3 CLRINd~∀4U~V
R$`&∞HX∃∩l→j¬-αβλ⊂iHα`i-Lπ ⊗R¬*P (αC"G]]P∀⊂βH	βH[∪≥¬*QαaJα≤@⊃04J4⊂3V$
⊃3Q	→β#P$SαPU@(αp4)@4ε`≥H!j`∩REH
)→dA∨:eIα,hhT:α 	VE BOR↓))2OLXλ (αC"Hd∧RIN8∧∪!-~!αAd
ID⊃↔5≥0T@⊂F@
	MLπ ~⊗JαεIEbB¬$Q!P@)1S@⊂∀c V-CE	JSP TT11~>≥$%@88
\zh⊂∪≠y⊂6p↑q2P ! SFA
λ	  JFCD			; not fi@1JA←DααN~¬bα0≤4→ItZε↑.'1 B(∧∧λ⊂p)_ ∧D]H⊂⊂#$S V⊂ &all @QQe@?αX	m↓α@
	      JRSD↓∞ %)~40Kαhλ∧∧λ⊃{d∞α2v , phe SFA @!←nL~):~(hP&BVα9∧R¬¬I∀4LIy0HKαs0)8(⊂	jT ¬ ARGQMENT @∪&↓β⊂→αLrBVQ∧2& $QQ M∧β∪Q$
∃∃
Jhπ ∀Y
∩AA+'"Rα~bAd~2J%_I`≤Ldλ∩¬%K∃B∧≤β⊃0*$∩5∀d	3P∃*A ¬∧e∀)j⊂∩∪h¬T1
λ∧∩*≤bJ%Mβ!P@)1S@⊂∩h∧S,[
∩]
β→1∧~2J&pπ⊂HK8∧Q*85λ∃
K(∩3J
5λ⊂*D⊂5∀d	⊃0"S∧@
	 ,LOSE 1400
P~∩$p∞⊗: ∧∧`8H∩1I@⊂$j)CE$c'λ ∧10,Xε~∀∪5≠ ~∃∧!2	:$*P∩EJA⊂hPα0p)Yβ⊂",Xπ'∪1	∪ ⊃αβJE%MKQP@Jλ9E∀∀i⊃PE@ ∧D]QdεD OF @∪
8A⊃Eh ∀Li`λλFL⊗aQ@∧h*Td⊂(⊗⊂FA∧d∀)(
 1,B.JFL∧Q)(αH4(_8dL∀a⊃⊂K\9HT
∩λi∀d(∩3J
5λ⊂JXQQ4AQ@∧h'T⊂(⊗ CE(
		8π≥λαα0≤2	_d`$⊃D↓Q@∧ibU-&P#∩TεBBC(TT)	8ππ2,
Iα
,2~εJ,!6
ε≤Yα∞λ~%_h'1∃≤-K)R∧4∃h$∧J⊃∃¬⊃,¬af⊃`i⊂!∃c#"i⊃b∩a PeP#'T&iFEαh'h%λ!(λ@,
~∃%
≤A∪Q&Y6~)β⊂∩JLqehε≤*Rh∀PJN&B∀JQαr∀*N⊗R`H%nJ-~⊗@"	∃t`4⊂r⊂)iQ3β!↓-εελePr⊂)E∃∃α!↔pr⊂)iQ3λ∧⊃"W"!↔q3Q∧	qH∩(iH∩5
1"@;CLROQT CLROSF CLRISF CLRO3 CLRO4 CLRO4 RC@OS1

;;; (CLEAR-OUTPUT X) CLEARS ANY OUTPUT NOT ACTUALLY ON
3;; THE OQTPUT DEVICE YET ≤@↓π+%%∃≥)→2↓∨∃→2↓


)∪-
↓
∨$AQ)2O&8~∀~∃
→%∨+Pt∪!+M⊂A Y¬$b∩∩m'+¬$b~∀∪5∨-∩↓β$bX!αR~∀4∃∪
≤↓'
αYl~∀∪∃M A)(11
∨'@∩∩wπ!KGVA→←dA[¬sEJA∧A'
α4∀∩@A)
π_∩$∩vA]=hAMS1JA←d↓'
αX↓∨
∪→=⊗AKeIf~∀∩@@Aπ¬∪αα∩l@@A
%→
XA→CYXAQQe←k≥P~∀∩@@@@↓∃%'(↓π⊂∩J⎇~_%mα↓↓↓α>yβS↔d¬Bπ&T¬≤4∀λ

}kC"KT∞q;LD∩1SD
qP+↓QA"B*
4r∩D
∪qI→⊃rc!!5∪∪HT∃∃β
J∀o∃↔B".j9r4λ	_H∃∃⊃"B4
Zr∩Hλk∀⊂iJSlc!!2TTjD	∪u*F#"C!)1SH
8P+⊗aQPs∀IzqNB*9r4⊂$
⊗tiuSpsQ,psλX4K3jZ∀⊃5↓QPs∀I~qNB$∧∪3uHY(∃β
9kR0iA.hλλ9⊃04EY3T∃*A"B4hZ⊗H⊂eA"".h≡Yh≠ld

#!!4∃4i	H∀	~u⊂p)A".|≡|h≥
(_],=h≥≠d∞~→(
8P#"A~∪tλ
¬⊂4L!⊃.p;LD≤Y=∞↑YKλ∞][≠xm=;Yh↑_kC!!4∪t	$∀β!+.h⊃-lλ∩1Id∀qP%A"C"H9∀Slg!"R1Id∩5∀eKc"B%hp3∪∧λs∀R)g"".j(4q5∧λr⊂3Ih3β"A∀S∪j8(%εεβ"PiJSm∞A∃Pp3	D∀Pt	zl""'~Q4q*D⊂r⊂**∪thλ→Qλ∪	→Q3β!!(S	Zq(&Fβ"A→∪∪λ
E⊃KS)x⊃*∃
E#"B*I∪Q(
E⊃PU¬h0c"A∀∪3uHT⊃∀A⊃,qSj$⊃0r	t⊂εgb⊃V⊂*iQP"ad∪P 
ODE CURSORPOS
	HLRZMD,AT.LNN(TT)
	HRRZM D,AT,CHS(TT)
]		;EN@ OF IFN ITS
IFN D10,[
	MOVE D,F.DEV(TT)
	CAMN D,[SIXBIT \TTY\]
	 CLRBFO
]		;END OF IFN D10
IFN D20,[
	PUSH P,A
	HRRZ 1,F.JFN(TT)
	CFOBF			;CLEAR FILE OUTPUT BUFFEB
	CAIA
CLRO4:	 PUCH P,A
	PUSH P,B
↓HRRZ 1F.JFN(TT)
	RFPOS			9READ FILE POSITION
	HLRZM 2AT.LNN(TT)	;SDORE LINANUM
↓HRRZM 2,AT.CHS(DT)	;CTORE CHARPOS
	POP P,B
	POP P,A
]		;END OF IFN D20	α10%	PUSH FHP,T
10 
β)1→≤Aλαb~
Qt~4$%\J→α
dz≤Z	Yt$*D
$-≤ZAPC∧Q∩∧U:∧∧"diz$≤+a⊃∪J∧β∩4j∧⊂U1Hh4H∀	y3U⊃**c"L&∧ 4∪j∧⊃R∀¬Jβ"B*	t∩Hλk∀β!!"R1Id∩5∀eKc"TH~∪tl'!4q5!"B4i≠⊂R5∧∀Pt	zwα"'i"`bλ!ji)Si⊂('Tdj$gS∧E∧Pλ⊂⊂⊂⊂⊗#↔!R g∀*∃∀D]aR g'"S⊂⊃FEαP⊂→__∩⊗"αD]f`Re⊂!jT)gi⊂∀'idj∩ecεEαZ_→__⊂,R		0↔
⊃≡AπU%'∨$↓!∨'∪Q∪↔~):∩∩w∃→λA∨_A∪
≤↓∪!&~(_w))e≠↔$AQ)3≠≡LA))35~bA%"f6=⊂αRRflz`$(hQemm¬~Rε:$
J⊃↓RR6.J*Q)αB∀zε⊗N≤zH4(hRRRflzIh&¬*N"	¬↓2NR%J∞.:_IfNV∃⊃↓D∀PJ*V6∧)α¬2≥α>B(HIfNR%J∞>:~α2⊗~ αεJ≥∧J9αε∪λ4(ε¬*N!ααbεIDhP&BV≤AαA2λh(&N-"iα¬`H$%nα(U≤-D	d|LjHU∃∃Z
B¬≥H~E-_Q!∃¬-9	"¬αIitLUHZ%∃-
A∪J¬9t∧LUHZ%∃-
@∧D~*2¬<→IB¬$→8R∧,hhT≥Q!∀E∃+$∧
∪∃ES
E¬⊃PPM:J%"∧~&∩e]9≠∧∀MDB
~49T⎇∀T42
~≠KPKZ4	∃~¬~Yu$*λ9∧
⊂Q*E%LYv3PM
Z4B¬¬K5%%→Ys
hQ!∃¬-9∧¬αe&vhP~
U≤B
¬Bk∩
¬⊂hPα33jIR(∃¬FA"B)*Tu⊂∃,dh"QeUPFB**,fSXY∧h∃id⊂(-j*,SeY.FB∧h*iR⊂(⊗⊗LT(∀FB∧fgk∪$P*,1
	CAILE TT,40
↓ CAIN TT,177
↓  JRST %TYI+1		;SWALLOU S@!¬π
A∨HA%+¬=+(~∀%!∨!∩↓ Xd~)))3≠<dtβπ¬∪
A	PY=&∩$w	∨≤α:Qα&<r>J∃¬rL4(Jα∞ε&rαRQ1≠_$%n⎇⊃↓rεe!x4(J↓α*J≥!αRRLj>h∀PJεε&<)αRQc!@$%\~> -	HU$,K∀∧L<iz$*∧9ye%∀yD∧≤D~*0hP∀	%∃≥D
E%LYv0HKt
4
"
x∃∀r:4LD
E%LYz#⎇hQ*E%LY{#PM	z∧J¬¬F⊂hP~	uᬬH∃∪λQ)∃"(~	u∧R
¬@hT_ib∧MJ5EXh!→T⎇4TλBe[⊗¬Bb∀Q⊂K\yt¬$zλ(T<Lii∀d:	xb∧d→hPhP~
U≤D$
αd≤jλ4| Q!∃¬-9	"¬αH9e∧`⊃↔4≤DX~"¬$tλTtλ∪qD	∩3Q!Q@2∀II(⊂4F∃
Lεεα"'_S⊂1d
∪h∃λZT∀R$¬∃∩∩*4∩4hλ_u∃0)D⊃R3λT⊂4TH≠*#"A→TTu∧
⊃4Tε⊃".q	t∀q3)∃23UλZSP3∧
⊃4T
)#"W!⊃.q3HD∪qH	_SH∩*Jc"C!!"@↓Gtu⊂j(0(∀jHtQ3D
u∪0*9h∀uλ:Q-λ
:⊂tQ&T∀u⊂j(-H∀jHtQ,d
u⊂tHVH∀pj(0Th
:⊂tQ&∀∀u∩iiuλ∀jIsSs∧
u⊂p)F(⊂uλ83∪λ	~u⊂p)D∩4uλ8,λ∩*:⊂tr∧	4u⊂h⊗(∩4jHp,H
:∀⊂Q(D∀u∀jItH∀jHq5λ
:⊃∩4jt∀u⊃	→pH∀jH∩4l$
u⊃∩*6H∀u
;4sλ
:∀Ts	D∀u⊃hZ⊃λ∀jHq5∃$
u⊃t	h(⊂uλxU3H
:⊃usiT∀q⊃jyl(∀jHuslD
u∀u	xλ∀u
:∪u(
:∀q∃&∀∀q∀j	P(∀jJqU3D
u∀uiv(∀u
:ss#!!"R1Id∀qP%Kc"TjXU∃∪∧
qP(λj3Pu	→qTh¬	3U⊃*)P3λλ→Qλ∃*84J#!!"Nh¬
qP+(:Q05λT∂≠sE<yP⊂H7y⊂)Y0Vs:[1z4w[∨εE≥BP⊂⊂⊂λ⊂≡0v[zw:⊗[s⊗v'Xpr⊗z\ry⊗y]7y0sY←εE≥BP⊂⊂⊂λ⊂≡89~w:70[r[∀FB)j!i⊃`X
	SKOTT A(LS\SY
	 JRST STCRE1
;H@%
↓)≡AπIβ)
↓αA
\A'
αhA'
α5
+≥πQ∪⊂≡→∧J9α¬bα2&Nαα~&Bu*5α&pα$*≥"∞J⊗sP&N.⎇"Qα	d2`$%\2&b:αYR∧
4
4,≤βsQ∧λ4QoaQ@(∩J*uλ∀jHtQ,A⊃,sSjλ+λ⊃**StC!!4∃4i∧∀⊂!Q@∧h*Td⊂(⊗⊂εE∧h∃id⊂(!FE∧Sgk"P∃*⊗∀!
DD]cQj⊂*$⊃P""g⊃j$⊂'Q⊂*$"H*ibiλ i"`CE`b⊃$P**≡)i↔∪"g∃→∂∃XD]U'P$g∀ji"P⊃bj*$S#P"g∪jcd∩ f#+Si")FB∧f)dλ**⊗⊗LD@]j∩"g⊂!SdεVERT TO NUMBER OF WORDS
↓MOTSA A,-1		8π∃+'PA≥⊂A)⊃
↓'β$~(∪!+'!∀A Y5↔→'βH∩∩w∂∃(AαA≥ε[!%=)π	∃λAβ%Iβ2~∀%!∨ A@Yε~∀%→∨π↔$∩∩∩w≥∨∪≥∞↓)≡A⊃¬π⊗A/%)⊂A)!
Aβ%Iβ2
∀%≠↔-
↓)(Y)Q'β$Q∧R∩g↓=∪⊂~R-⊃αR=¬""*λ~%∀
∀λD
$∀λ∃∀,⊃Q M∧z∧¬αd!⊃⊂K\HYd=$∧	t2¬IλR¬-8Z"∧$~H∩∧
(X⊂hP→Yu$

ABD∩⊃Q LlzhTj¬EJ5∩uXIBE%E⊃∪M∀YXTl∀X ∧d,hzDB∧xd¬-≤Z$∧$
H⊃PPLYλ4B∧∃E¬αHα".j(4u∪j((⊃U)hu∩3iD⊂3Q∧
p5Q$
p4@λ_∀C"A→∀S∩$λ+
⊂h→⊃λeE".p$λp3∪∧λU3PjI3s@λyq4h	→H⊂
gf`i%Qb⊗c)∪d¬ CLOP
	MOVEM A,SR.CAL(TT)	;STORE THE AALL IJSTRUCTIONλ
∀∪!%%5~↓αY'∧9
+≤QQ(R∩wM)∨%
↓)⊃
A→+≥π$J6(4PJ"JJTiα
2≥⊃2B~
BRQ$KZNR>∀)αR"*αBJ&u"0∀XQPPM)zB¬"EP!⊃,s⊃)hβj$ MF ESER AREA IN T
	SKIPGE T		9CGNVERT INTO NUMBER OF WORDS NAEDED	∀∩↓β		∩↓(Xb~(∪β		$A(Y'HY→≤5'$]
5_∩w≥U≠¬∧↓∨A'e')~↓+∨%	LA≠β%-λ~∀%≠∨-≥$A$XQPR∩∩w9+≠¬HA∨A]∨%	&↓)≡A≠¬%⊗~∀%⊃%→5$A$XQHR∩∩w%_A→→(A⊃β1~∀∪!%%∩AHY'$]→≠_Q)PR∩w↓=∪∃)HA)≡A→∪%'(↓≠β%↔∃λA→∨
β)∪∨8A∪≤AI⊂~∀∪!%%4A⊂YQ $∩∩g∂∃(A'βH~∀β≠=-~AHXZbQ⊂R∩∩wM)∨%
↓∂εA≠¬%↔∪≥≤Aβ∨¬)≤A!∨%≥)$4∀∪⊃%11∩A%!2εMu~~∧$KZRVJpαR"∃∧
JJεJα& 5It∧rλ∧qH⊃"B2)zS(∃
E⊂
∀¬⊃ .u
ZSH∪id∀qP$λR5λ	→H⊃∩λT∀p4AQ@53IIprr!⊃".p)I∪uh	→β*"i∀*h")H c`dSα	
;THE FOH	→∨]∪⊂~≥∧~6∩∃¬~&&Vd
R⊗MPh!l%E~~¬6≤
21↓dr⊗NK∃T≥∀X~D,"Z8dr∧ztDL9¬Tm∧X(∃$Lyj2∧t→E⊂hP→
%∃Rλ∃BEα⊃⊃∪@8R4TjD⊂4Qd
∪h∀hh(∩4d
qP+)xRPu∧	5∀q)HA"B)YuQ2$λK∀5i@h∧D]Ud adeh"i⊂j 	ONS
	SETZ C,			;NO THIRD ARG
	MOVEI TT,SR.CAL		3CALL INSTRUCTIONSLOT
	XCT @TTSAR(A)		;DO CALL INDIREC@)12A)⊃I∨ ⊗≡@αRRN
⊂4(εU*6B∃∧	2NR≥∩∃L$KZR"∃¬~~¬α≤
9∞Q∧"=αεuJR"&t91α
-!α↑"Jα↑.J∃I998hP&N.⎇"Qα¬dbL$%\∩⊗RR-⊃α"ε4)α≡>%"⊗)α
α2&N ααε∞Xh(%αU∩NQα≤~J⊗
_H%n
!αN~
α&→α$J∩9≡"α≡⊗Q∧∩ε∞
∧	α2&≥!∧4*≥"6εN[P&N⊗%Qα→0HH%n→∧
∞∞VlbεR⊗~α.:><qαNf≥"⊗ *	z∧-∀~I∀lu4	T
≤1Q%≥$:(S#P→Yu$
λ!EJ@4q∩iis
:∩sSjK(λ
`Sa%'∀'dg*⊃i⊂'k⊃i⊂%g∪hπF OP@%βQ∪↔:_h(&"e∩aα	bB¬$∧KZ≤
$	∃~¬IλR∧⎇λZ$
$α3sAQTq⊂j(-*B)
TVH
Eλ∀@∀BDYeg∪ic⊂'T ¬RATIK@∨≤4⊂∪πβ%
A(X!R$KZ6εR≤A|4(Jα*JN αNR∞∀)P$%\r>B∃bα.⊗⊗αα2>>∧J24PJ"JJRαQ2HHIf≡⊗"αB>&u"⊗H4PJ"22RαRQ1E⊃$$%\:⊗Aαl
N,4PJεε&bαQ2N$Z:>QY	a8%\b⊗~Q∧Bε2→¬2ε"V+x4(∀	T⎇5:4¬% ⊃↔4t⎇λUB∧
8:Tl,D
u∀|hqP@MHIt
∧eJE H↔8∀≥YYD
$T
DDM4	u∧4P5	→pπ⊂ S ⊂"l∩h∧ LOOP
STCRE6:	 AO@¬∃≤AHY')πI
b$KZ∞ <hI∀e,T	D|@t∩3Ht∃3U	→λ⊂3	D⊃∪sjλαb⊂'UjεE∧R))-⊂⊂V⊂λA			3CDR DOWL THE WHICH-OPERATIOLS LIST
	JUMPN A,STCRE4		;DON'T JUMP IF D@∨≤α:Qα"
2∃αRxh*NR≥∩∃MhMα>Aααb∧$∧KZB>&u"⊗Iα$yαNε⊂h(&6⎇2⊗%α%!2NIu:>$$KZB>&u!αR=∧Z:>↑pα6B⊗∀
R&>u→α6ε≤X4(εlzR⊗5∧12αR%~εI"
H%nNαIu∀*	→b∧
*(∃Hh!~∧⎇∧$
α`H⊃↔5$DYd¬∀-JZ$r¬8~ hPQ*5$≥(V#PL[λ4B∧%H⊂HK85∧∩Jλx∃~∧izB∧
λi∃DuYQPPMzH∩¬\i~%≥"λ~$:∧	FAC [P∂β&↓%)+I≥⊗⊃∧2J>5¬:"&∞Bj>B⊗∀
R&>u→α
V αN">,b⊃α"
2∃α
,*0∩∧∀	DM≥D¬Rjα
8d
l8∧Q(~⊃(7!Q@εE)U!i"XN∧c aH-a`f∪"b⊂+Rh λ SFA, NOPλA∪5!→β≠∃_
R⊗ ↓5%αα8d
l8∧Q(~⊃(7!Q@εEεB≥ic H'h"i⊂j 	ON-INTERNAL @¬∪(A
_∞JJ-~B>~$
:∞∃¬"ε
2(h"NR\r6AhhQf $∧λ$M¬1Q%≤Ziz∧rbJ∀Dm∧YaPE≤βkPiIhε⊗(I!`OSE
SO,REN0Y"I%∃_
ε6,04*Nzr∩ε1bbE∩∩,b⊗@$XaPE≤βkU
*λε⊗(Ih∧EBPRI~∃M≡U!$β	12E-αID∀U~=*RLI12E-"f$∀U~=*Vu!12F,rRf$hRN=:$JA12
"f&B,*,4*≤y2&9bbE∩&ph"NuhT`8K∀(Yβc#'βE)gW∃,gV⊗∀Rj,gCE)gW∀)'V⊗∀Rh)'CE)gW⊃'jV⊗∀c'i!QFE)gKαRED,QOREAD
SO(
%	0XY"KIβ	→%→∀∀U~5*B∃!12E-αJ&: h"Nuj¬∀~β∀$Z∀Pc!↓αA≥i∩⊂!$j∀FE)gK&gb,,QFILEH∨	∀~∃'≡9!∨&X1#
∪→∃!∨&~)'⊗]∪
_XI#
→%∪≤4⊃'=tz≤@λε⊗(Pd∧ROUT	∃'<Y∨+(αa2E∩⎇*P (*:D\tyGSkReZ5$\βSu↓⊃,¬f"S πTH↓_∞→ααH∀∧dQQ hPβ"Ng]P∀)Q Va`S&⊂⊂≤Sd¬B[←	QKGhx@q←a∃`πSL¬vs@Hλ∞ %xp	eBαkπK≥p¬⊂hU8¬⊂h→α_]∧UβP	αAm'⊃∨+1λA¬
↓β⊂→αα8d
∧βpRHXuλ%T∀qP%Xp3∪∧≠ εE)U!`f&∞α	SKOTT A1'α$KZ6FN ∧∧∧(⊂3Dλ4TP+∀⊂∧"`Q ¬R
	 @∃%M(A'$~ε #⊃Q LE)K$J¬J@λ~iP	c⊂D@	;NMP∞Aπ!π-∧20≥∩λ∧qH∃3Q4j1"B5λISH∃
E⊂4p*%⊂*#!↓(∩TJ:α⊂!j⊂βAL1		;AN↓β%%βdA¬+λαα2>Q∧	αJ⊗aαN~λh ⊂LYzd,Jλ¬∃¬JtKPh→β"B+λuλ⊂
J∀p4Eλ*""'dg#'RbP ∀HE SFA
∪!=!∀Aα`4(Q'4L@U⊃4I@ f⊂)Q P!`S&⊂ BIPλA∪9	∪πβQ_
:	zα∧Ld
Bb¬8h∩l@pRQ(h∧ IN AR10~∀`-¬""&J εεJ≥¬"0~¬8h∩∧Ldλ2`$λ⊂	"U*i')H+ f*QP ∂F SFA IL∧Aα\αA∩⊗α:D`:T∧iP⊂d∧@_~(p
αε≥→0⊂@ ¬$iU!`f≥αe##'H*⊂ISTCA0		;@≠+M(A"
2∃αyhR∧∀~@λ
85β"A→α"`∩R [SIX@¬∪(ApW∪≥$*J:εbjN~¬l~ε $βλ⊂h→α ED W@∪) A≥≡A= A&pεQε@KQP@)4p
!PX≥∧d∀)(
 B,STKNLπ ⊃"αJBHKαqq*D∀pfPαO@_AI!%M⊂~RLr≥αzλU∀
I→t`!α@
	MLπ ~⊗Jα¬ "α⊂4F∃ ∧D]Tc P#Qh∧S ITSELF AS FIRS@(ββ%∞~(∪⊂⊗>4*%αR ¬E≥∩h¬siQ ∧]aR ¬CK↓
∨$A1∂β_↓_∞A↓h¬R¬-8T¬ 9⊂∧adλ'h⊂&Pi`
	P		≥8A(@2¬"RNε⊂¬∧
H↔9T\T
5-∀T
DDM4	∀`*⊃0	'⊂d∧ OP IS DLπβ¬→∀~∀%∧RJNQ∧JN@$8⊂!QL¬bg∃ ¬R HERE FLπ$@OM⊃∨%(α9α&:αHU∀t→D∧83∪λ

Su∪hdπL, A(λA∧αaαε: ∧∧4∀q5∧
4λ⊂i@i)"aU&,FE∩ij!iR≥	MOT¬⊗%¬"Q2Nα H`f∧DNβEP⊃
+ ∩∃¬""*λ8∀dbλ¬∪d
⊂∧"P∀c FEαl!`∀@TTSAR(A)
λ∧∪!∨A∀A X$∩∩`.α(U%-)`
$zλ8∀ddX∧@~@dj$4 ¬S@+1(A&pε∧4!Q$M≥H8∪Pα4∃*9λ⊂λ⊗⊗βIS@)
αe 4HI`≥∀X¬∃*)H⊂1λJQ0	iCE	PUSH @ 1α∩%\b&NRL2eα→Z∧`:U⊂3JD⊂∧g#∪β
∀∪A+'!¬↓2λQ!∃¬-9λ
¬⊂c"A→αgk'∩P*⊗→BDX3 ARGS
λ∧∪∃%M(A2M~P$↔8D`4⊂∧j!
IST@παdt4⊂
4_4¬@85∃⊃)Z∃λ∃	@P 	NVLπ↔
AM
αA∨8Aβ≤AU_
NVα
∧`:U⊃1∧	t⊃4H~α 	ON   ~Zα↓.&:αHU∀t→EU≤4∃X4@⊂ε⊂nCE

λ∧vv@X∧αE≤h~αβ@≠xZL\⎇∂@∀H)"`∀URNS T IF <ob`∃Kα≠Q`2	~2∧d
44
DλTe≤T	dL@β"TjJ∀Q1π∧e)hλ**⊗ Q'i`∀B]ad"PβK IF A FIL@
A∨HA'
α4⊂λ%αU∩N@"λh∀e≤Q⊃∪@9β"dj∩ ¬R, R@)+I_	αi→@hPα(λ	*Tp
1 f)bBDXFIL@
XAI ∩Vα)b∧P3∀hQ ¬∧Pλ⊂ 
RST TRUE	∩wM
αXAI ∩Vα)b¬%*XPhPβ"C!≥]P≠Q'
ααj≡⊗Qβc@≡X+;l-Y8p~∂⊂≡3 )xh
kZαβ?Iβ≤π↔>→; ⊗[4πcation-name <αH4)@4ε`≥H∀)c Kij'i⊃P≡0∪@→BP↔|-&.∨G`λπLX∧p_num o@HAg`'α8
]+;⊂↔Xpz4`/n-`≥C5J|@@d¬f/:β=P-NαrP≡$~∀4U~RNR⎇⊃`⊂M99∃∧
λeE@:u∀u	@b.D]Tc ViU'i"P⊃$i`⊂ATC@⊂AQβ¬→
4⊂
NR<*Qh∀	TmQ2(λe∀p
#Qh∧D		8π'
ααj≡⊗Q∧"&NB
"≤Bλ¬⊂()⊃#"A~p¬dh⊂FA)j⊃$i`↔h∩A/)∧A7:⎇!αε9¬~~¬↓h¬R¬≤h⊂(x5thh+0	j∪βRE!]
∪∃M A)(αbε~>≥$%@9→e≥4Q(
@bP$ U ¬ AN SFA0Aα@@hπSr∧~ !Q@∧P%∀)j⊂)U ∧@∪'\∩∩`.tzQαεp∧¬≤4⊃Q Jα	*%≥λ⊂	j⊃$i`↔		;A FIH	
[=
*⊗≥!1α
-!αNRLb1α~⎇!αε9¬~~∧Q!∃≤\zJB∧∩HkHKαqR+	U3 ⊂⊂iP ∪E@π⊂≡h@λλ~Qoc!∧P%)∀h⊂!j⊃$iP⊃		;@≥∨A
PA≠U' A¬∀AαAπe'!~5→∨πβQ∪⊂≡d	dLQQ LlzhR¬∩Eλ"HHα.qhZα⊂ ∀HE ACTUAL FIX@≥,h4(→Yu (αdP*∃⊗)a.UDD		8ππ",~-αε<
& 5:@¬$DT	T
D→ZTj¬h→E,(β"B(`ff⊂∀⊗  ∀TSAR(AR1)	;IHA∀
0∀≤Tπc!↓(∩TJ:α⊂!j⊃$ga∧B]`∞OPE( GIT¬∃α⎇*Q6>2j
>Vt"Mα∞b0$!~$mλ⊂@⊗X@D]S`ebP∩dεTO AHA∨→
'λααε 4Dλ∩∧4H_r∧∀~DαE∀¬yDBHβ"B)*Tq⊂⊂⊗XT#
D@	;GIP
AU'$A1_∞∞ε$J0≤@H⊂0hbiiP∀ j*i∪∧¬α
SPDIO@∧t&-Bε!αλb⊂H↔8tMQ(⊂)d∪u5¬YqK0IZαg")H i)'TεE∧c⊂aP%jTbi⊗dS ∧EX↓∨ ⊗Qlz→6
⎇*:%4¬Rj¬8h∩l<ZEu≤4∃Z5$⎇(T∃hh!Q%≥$I~3Pα33jhαP*,Y)STRSLF,,0X
∩w→∪⊂~⊃¬~fM6dz¬αRD
Q↓Jt!αεJ8α&Mα-	αR<hRNR∩M→Ihε≤
6∃α⊂bNRNM~1"QHIn ,~H4B¬I	∃~∧YjE∃KqQ J∧→x$Tr
@
:⊃∩4f!".sIz⊃+λλ9βg"$S*bP*∩ ¬ LOMP
	ADDI T,(F)		3MAKE CORRECT TABLE ADDRASC
	SKIP@∂
AP∩∩g¬U(A	∪⊂A/
AIβ→2↓
∪≥λ↓αA6
"≤CqQ J∧**5"∧¬
BHHα.v(Zhε⊂)Sβ DISPATCH
∪a∞!αλb⊂HαB1H_h∩r)I⊃1p)D∀piU"fVf∪βCATILπ⊂→αt
6∃↓h¬R¬≤h⊃T<-Ez44
Z:D`:Q(7!Q@εE≥Tc P)Vij"fKe fbH* a&⊃FE)j∀lif≥αhc"g⊂j 	ON		3FUNCTIOLλ
∧∪E/⊂≡@HH%n↑DJ≤BYz∧-∀~I∀lU1Q M
	h∀l(⊃⊃∪@:⊃P3(Q Tu
*pε'==:.-STSYSL
~∀m'
α[≥ ⊃α$JNBε$~!αR∩2*λ→d"∧hYd
⊂∧gg∀FEεEαij#bU*@DDNβP'HA→>≤
R&>ph ∃≥HxU$#!~5$≤hY`HH↔8e,T8¬∩)@dε¬
	SPGWOM	∩∩m≠!¬¬)∪∨≥LA≠β',~∀&≥"≡B~λH$%@8∧∀I→β*⊂'⊂dbFEβE)`∀GEPU 4%≠⊂≡Z,IαRQe~I:~-→"I$KZ& 4H[α∧LhIr∧
*(∃Hh!→∧e∃αH⊂%H∃∃∀h~J⊂4F∃".u
+(⊂
$⊃P EFT @ALF	α	SKIPGE R↓	;BUT IS @∪(↓)⊃
AI∪∂" ∧∧DHgphPα(∩
*T¬⊂ K **)Pi∀ iT@]lUh⊂ SLεA
Q∞!ααI∧
 Q!∃∧⎇	$¬α`⊃⊃∪@:Q0
*T'⊂ ∪LMPλO&↓(
ε2,(4(Q*5$t∪P'∧iedT P ∀T,[S@$αrB:εhI`≥∀X¬∃*)H⊂
$⊃P(' Sb@
STCF@+8p∩A≠=(
,∀
E"e8∧@↔⊃*g∧]T j*i∪α THE BUNCTION
λ	HBRX∧AαY↓))'βHQβ$bαH4(~	u∧Rλ∧↓Q@εE)U πWOM8	MOVEI @)PY'$]]_∞ (α".j(5∃4I@⊂*$"H+`$aR⊗gh"T j$gSαS MASK
	MH∂-
↓λY↓%"NεID
IE$KZ≡⊗Q¬""*	X∀Dα3Q$	U30HZH⊂3HD⊂ssJ4∃0λ⊂⊂P#$l∪*fFEαib`∀Z A,			;S@)¬%(A∨→A/∪Q⊂A
∪0~∃'$:V ;↔!∀TQShλE∀p
#Udπ2		8πβ≥2↓≠↔%
↓→β
 ∧¬$zλIsxh!∀¬∧⎇	$¬α`⊃↔4t⎇λUB¬∀X¬∃*)H⊃r*Iλ⊂si@)bb UP LISPλA∪8Aα4U~R=yv#@!2⊂	)⊗α B,STK@≥∨PQ$R∩m∂(A¬)∨5∧~0≥∃(Z5∧|hI∀`(βP ∀O MASK BIT
λ	JSP T _Kaβ⊂≡:α1⊂K\_HB¬$βh∃	λαP$"Pb⊂'cλ* "P∪$ibεB∧d!&⊗αI @(αaQAAαεβH↔9dmh⊂
*T'⊂'c⊃⊂*$"H!$j⊂∃βE JUSPλA⊃¬β↔λ4⊂∪≠∨Y_
Mα⊂H$%@9ZU≥α	hT<
HT¬$zλ∧SjH5⊃#!↓4Su∧
λε∀)
D@]iR$c ∀↓∪⊂~Rzα≤@tTQ(h∧ BIT POSIP@∪∨8~∀&$"aα⊃e $$¬]"VJ9∧z~	ααI∧*∧)~@hPα2TJ:λ⊂uλzβgXDB]`g"λ" ∂ TH@
A∀*6ε&tJ0∀h⊂R*Jc"C!↓α@
;SFA-STLπ%
A⊃∪'!βQ∞!ααH∀∀dTλ∀dλ⊂	'Uj 	NES

	STSTLπ ∀∧HI`≥4q4D	⊂πa`U$ggεB)j)j∪βD:	STSFUN			;FUH
π$J0≤@A"B*:α)`↔OM	∩∩m_∞B⊗α(∃$Lyj2∧l~90hPα4u
:⊃P"!⊃,¬`⊂RIH
(A9β∪
~(~∃'%~R>UPJ6.Z,Iα¬1D→$$¬]α∩2~lYαRλT¬$Dα3Qd
q(⊂*(αP#gRdεG TLεA'$zJ∧Q!∀U≥∧
Be∧IIdlXQ!∀l@uQ2$
∃∀j%QP
iJ)∀D]RdεDEX INDO ARRAY
α	JUIPL R,S@)M)*b∩$p∞J&<BQααb_$λLBJ25∧	2αR%~εI"
⊃E$%]~R>J*α& 2λ¬∩λT⊂ε"c∃⊂$ f⊃∧E∧h∪h 
 P,	↓	;RETURN SLOT#S VALUE
STSTU1:	HRRM A,@TTSAR(AR1)	;LEFT HALF
	POPJ P _~(~∃')M!≥αt%'↔∪!∧A)(Ym'$]!9β:∩wM)∨%
↓)⊃
AA≥β≠
4∃')'→+≤d∩↓≠↔-$A)(YM$]
+8∩w'$zJ∃ααI∧*∧jYd≥$→y`hPα2∀J+S(⊂eH∃∃∀h~J⊂4F∃#"B)YuQ2$λ+
⊂e⊃".tHZ∃0SD
∩⊃(
:∪tQ(D∃P3
X!"B(`dbP∃*⊗)i εUN		;WERE WE HACKIL¬εA	!
A
+9β)β∨8}~∀∩↓!∨!∀↓ X∩∩m≥≡XAM≡A/
↓β%
A⊃∨∪≥
4∀∪⊃%1∩AεX!ββ→_fXB∩m/
A≠U'(Aβ1'≡A
%0A)⊃∀Aπβ→0A∪≥'Q%+π	%_∞(∀PJ6.Z,IαRQe~I:∞`4(→Yu (3(⊂eH∃∃∀h~J⊂4F∃!"B*	t∩H
¬β"C!*u∀uiv,B1+λrλ⊂%Hc"B*zα P-Sjij⊂⊂ ¬ ALISTZZA≤2¬6N$zJ∃↓E:"&∞Bj>B⊗∀
R&>u→%εThP&⊗b≤Aα¬2_h*NR≥:>%hM~.>R"α¬22_H%n&~αR"∃∧
J≡Vl*2Qα
α2&N!x4(¬∧RJNQ¬~RN↑{λ$%ntzB∃1¬:J>::αRfB*αεJ≥∧*JJ>⊂h(&B-~!αAd
ID$KZNεZ*αR"∃¬~~¬α4zIαN$jεN-¬∩>FRLr∀4(Lj>J⊗Jα¬1"~H$%n-BBε∞%→α↑"L~!6>∧*JεRLz2MαdJNQαLqα∧4PJ*JN αNR6
~,$%]""⊗9∧:⊗:⊗∀
R∃α
α2⊗]∧jεN-∧
:↓α∀*RVJph*d∧KZ⊗ 4D	∀4rλ8dλh!Q M∧zIuα¬→→re\hZr∧Jyt¬∧98∀<-QQ cXQ'3@8λ⊃3HD⊃qH
→3h
Fv!"C! ;PIHOLD PINBL STDMSK DBGMSK STDMS2 DBGMS2 INTVEC TTYDF1 TTYDF2 LINTVEC

SUBTTL	INTERRUPT HANDLERS

	PGBOT INT

IFN ITS,[

PIHOLD:	.SPICLR,,R70 		;WORD TO ".SUSET" TO TURN OFF INTERRUPT SYSTEM
PINBL:	.SPICLR,,XC-1 		;WORD TO ".SUSET" TO TURN ON INTERRUPT SYSTEM

;;; NEW-STYLE INTERRUPT TRANSFER VECTOR

.SEE IMASK
;;; STANDARD VALUES TO PET IN .MASK AND .MSK2 USER VARIABLES.
3;; INTERRUPTS NORMALLY ENABLED ARE:
;;;	PARITY ERROR
;;9	WRITE INTO READ-ONLY MEMORY
;;;	MEMORY PROTECTION VIOLATION
;;;	ILLEGAL OPERATION
;;;	PDL OVERFLOW
;;;	I/K CHANNEL ERROR
;;;	RUN TIME CLOCK
;;;	REAL TIME CLOCK
;;; ALSO, FOR THE USELESS SWITCH:
;;;	CLI DEVICE INTERRUPT
;;;	SYSTEM GOING DOWN/REVIVED
;;;	SYSTEM BEINC DEBUGGED
;;9	CONTROL OF TTY JUST GIVEN BACK TO LISP
3;; (SSTATUS MAR) MAY ALSO ENABLE THE MAR INTERRUPT
.SEE SSMAR

STDMSK=%PIPAR+%PIWRO+%PIMPV+%PIILO+%PIPDL+%PIIOC+%PIRUN+%PIRLT
IFN USELESS, STDMSK=STDMSK+%PIDWN+%PIDBG+%PIATY
DBGMSK=STDMSK-<%PIPAR+%PIMPV+%PIILO+%PIATY>

;;; ALL I/O CHANNELS ARE ENABLED, AND ALL JOB CHANNELS FOR USELESS SWITCH.

STDMS2==177775
IFN JOBQIO, STDMS2==CTDMS2+<377,,>
DBGMS2==STDMS2

¬
DEFINE INTGRP HANDLER+PIRQC=0,IFPIR=0,DF1=STDMSK+%PIMAR-<!PIPDL+%PIPAR+%PIWRLεVK!%≠!,V∃!∪∪→<|Y	H{')	5&d~∀%!∪%#~∀∪∪→!∪$~(∪	b4∀∪	H~∀∪⊃¬≥	→H~∃)I≠∪≤~(~∀~∃%≥)-t∪	>XVfXY%≥)!	0∩∩w∧"1α~⎇⊃αBV≤B&:≥∧J:R⊗∃∩VBQ¬~RV~0h($$HInε∞~α⊃1α∩aα→α
∩∃αN
2⊗⊃αb>:≥¬:&R!∧zR"⊗∩α∞JV h(4(HJ&:R=∩Aα6,j⊗JIeα&JF≠i⊗B&∧
I-⊗∧J↑J=Z*B&6¬1-⊗BLJ2=2$1EvN$"6N-Z*B&6
⊃5⊗BMα∩0%\j⊗6>∃Iαε:"α0≥∧9xD*∧Z*$⎇∃1Q HL→jD=∃∧
∧$dzeE∧M*_3j-	~∧$`⊃↔5∧$D	u4
(iD⎇_Q!⊂LLjHu∃α	→t≤-*%E∧M*_3j-	→∀|_⊃↔4J|tλ4DihTb∧Z*$⎇⊂Q)∀4r
Z4,dZ:2`L→jD=∃∧λ4dL→jBe∧~*∀jZ	∀≤d⊃⊃∪L≤I∀∧LUHZ%∃-
APTLid¬-≤YHU≥~A→∀u$z*α¬%J)∀u"J	∃∃7TU∧L~K⊂HK8JEJ¬(ZE-∀hXB¬$t	$|⊂Q)∀4r
Z4,dZ:2`L→jD=∃∧
5M≤→jBe∧~*∀≠jZ	∀%<e4U∧LH(pK]9~2∧$zyb∧⎇$λ$,Lht∧$,*Xt<,AQ$L4d	$|∃→→r`L→jD=∃∧	$|∀→jBdLj	∃∪m66s:BKQ⊂K\→hd-∀→z"¬¬)x4,%Z(U_h!⊃∀LuHz%α∧9	dLuEI∀5∧~'S≠vvs(H↔9∩|Zλ9∧thYB∧LjHU∃∃Z
E_h*JEL$f↔SkReV0HJj8T*¬Y→e#Q*E%LHf#kk%aS⊂h)_dr¬Z8Td-:5@LLjHu∃α	X∃∀LjEE∧M*_3j-	→T
⊂⊃↔4l
$λ%∀,→1PPH→→e$=*∧¬∃,h9D|≤5J∧M∃_7R-∧~*TpH↔:%,UI→T*∧→H∃∀l9ItXQ!⊂LLhHu∃αλ(TD9It≤ZJ	∃∃7PU∧M)J@HK8(TbλI∀l*λ→D
∀X9D|≤αc"AQS∩3JJQ0o'WKK2)J∃Q0a↔pε"g⊃j$⊂'Q⊂ g*⊃i)*h∃⊂+"aU'iεEβE→P≠≠ NOTE T@E EFFECT GF HAVING THE ALARMCDOCKS LASP:
8εvv∪%_∞
αr⊃α∞D
::⊗bα& 5HZ%∃-
@∧D
λT`$⊃R4J:λ⊂JZλ⊂d⊃e
;8εv∪)!
A!∪=_	αα
αB,j4∧L@Tr1λT∃23JFλ⊃∩λT⊂3⊂*)0s∪heP#bU)FE≥Nβ;	ITS TURL∧A&lj⊗∩_~D,@⊗+@⊂λ!*a*∩ ¬RMORA, TH@
A∀*ε!α$J6∀Q'3@7b0s	@a` GEP	&AM→∪∂⊃Q→2A⊃%∂⊃$↓!%π∃	⊗:≤)0 (+Q⊂K\YhB∧|d	∀4r	~E_h c\I~4m≤αh⊃	~q0	eH)j"&TeP!j⊃&ie@ SPDMSK DBGMSC CHNTAB LEFTAB EN@¬∪≥(↓⊂~
LqIα⊗t∩& 3∀
$,→jB∧∧→I∀`*λ⊃∩*93UλλJpεdg∃⊂ g*∀jh⊂∩∀" OV INDNXP INTIRD↓∪⊂~RmαYαεu"&@=$	∀`*∩3∪d	3Q∪(ZH∩3JH4thλ~tr3F∀⊂4tj(5β"AQ@εE$Q'⊂"	⊗-FE∞β;; TMPS-∩0 ANTERRUPT HANDLEB
;;;IH
)I%+!	LA≥∨≠Iβ⊃2Jα⊗ 4_)D,"λ~$+Pβ"Ng↔b4⊃	D∪uQ*(S∪uaQLh
MBdf&"Q`f⊂$S)j)*Ph∧AON
0⊗Vl∪∪→→∃∂β_A5⊂⊗>∃IαJ⊗ 4)@4εfa→3∪⊃(x3λ∪(Y3tV$
tR5λQ"NngDg'g⊃l 	STAJT PAGE REFEBEL¬π
~(p
mlM2εJ&⎇*Mα∞D
Jε∞$*JMα,rε
2,!α~>∩α& 5HZ%∃-λJ3Ph'73@1 7P%D↔PC∧Qλh+λ↔Heλ↔QeD↔UK∧Ukλkλ↔K!αEεEβE≥U]H!d g∪"f⊂ Ti`cg∪bg*)N∧A≥]Nβ	1) PDD OVλ
∀vlp%IJα&"2,:ε1αLrNBJ,~R&>paα&2bα6⊗5¬⊃↓→α:aα>RD*IαNLr
αεu"⊗JJ-αRL4SYml%~IαεNLr∞"J|r>VM∧J:R⊗∃∩VBR_h(4*$JN6N[iu@$HIn≡⊗t*JεR*α&&B⎇∩Rε:"α&:R-∩JVB%→α6ε≤X4*&∃↓α~>za2m:L~B>Ybr&∞&dI1:&≤JJ⊃1tJ∞&↑∩a2&∞uBBt∀R↓↓↓α$JN6N[iv∩&≤jN--c
⎇qM*q6~>{qx4*$*J6&ph(4*≥"∩6N[iv∩&≤jN,$HIf≡⊗t*JεR*αNRεt"εJ⊃∧J:R⊗∃∩VBQ∧jεN,hR&JA∧2> :EK2tL8H∀-hQ$ααα
:D$m97Sm≥HIU≤Z7F∃{c6Ubl4ywcph*HU∀l→aPU≥HIU≤[WZ5$$X∧re7
mlεεεε
mefWB.p)Jqh∩)Hs∃1λT⊂3∪∧
4q4Dλ4tr(yP0SλT⊂r⊂)iQ3∀aQQ⊂QiZpo'*:⊃∪4i1 ".hitH∪IZiλ∪(~pthλ~Q(⊃*~αdk S"g*εBεE≥aR g'"S⊂* a∪ P∀ Ti`cg∀P P(∀$gi$U,P&"U ¬L AND HAN@LER ADRTO EACH CHANNEL)
αCHNTAB~
REPEAT 6, 3,,IH
)βM&Vx]I!π
((f|@∩m
∪%'P@lAβM'∪∂≥¬¬→
A%≥)%I+!)&4∀∩`@|@`@}`∩∩w¬%∪)⊃5)&~α>J⊗∀22>↑_h(%Eba∩B∩dzP⊂H↔:∧d$zaPPK∧πrβα↓⊃⊂K\UYrl2λ→d"∧H~D
LX∧TI@iεE∧L⊂∨P_λ∨P⊂∧B]i"iQi+"bλ*#P"⊃aFE∧L⊗∩$g∃$f'DB]`f&⊃c`f⊂∩dεSDRUCTIOLλ
∀∩HXY∪≥Q∪%λ∩$p∞&2d*≡ε1∧j⊗&>∃IαJ⊗ 4(⊗%BdLhI∃ :B".i→⊂ε"cPd⊂&bSei,P∃i$j"CE	0 ? 0 ? 0 ? 0		;RESEBVED, AN@ /
λ	2,,IH
)≥a @∩∩m≥∨≤[∃1∪'	¬≥(A!¬∂
~∀$`∩∩∩lAπ↓β9≥β_@Hf\A→='&B4⊃%↓∃β(Aπ%≥)'44lX@f0Y∪≥	¬'&VxXV]%!
→(|TL@w%5β∪≥∪9∞Aβ'M∪∂≥β	→αA∪9)%%U!)&~)∪
≤@8[π⊃≥Qβ∧ZfX\XA/¬%≤A7]%∨≥∞↓_
V6∀*Iα⊗u"J&⊗α4∧LRλ9∧u$_'uhh!Q#\@⊃5Q)D∃⊂0IH( 
@d"i"H*#P)U'i"P∀!P#'T⊂ g*⊃i)*h∃⊂ j⊂⊃`ad∀$P&"U ¬L
LEVDAB:	0,,INDPC1¬
	0,$INTPC2
	0,,IH
)!f~∀~(~∀fVlA)∨!LZd`A%≥)%I+!(A!β≥	→%→≥α∀zVRεt*L4(hQemm∧~ε2HXB∧
D
5$
*JUα¬It¬∀,→i∃$L→I∃D(⊂
$⊃P 	NTERRUPT SISTEM
EH
¬∪9(tβ≠=(
,∀ε∩bti
4d⊂α".iX3R4
Y⊂5⊃$	u0	)Qd∧VES
∪≠=(
*∧ d∧EFTAB,,CHNTAB]	0↔∪9)β%%U!(A!A')∨Iβ∂
AQβ∧XY
⊃β≥≥∃_A	∨A)β∧4∀∪'∪H∩∩αwM!⊗∞L2eαRD)αRε∀b⊗L4PJN⊗RRαQ0$HI`≤@⊃st∧	uQ4Dλ3Qλ~tr1id∃∃⊗$	3Q⊃**U0∃∧λr⊂3IH3∀c!λ3PR)@→_
	SKIPG1(	π∪9)β∧QPR∩g$B&Mα,rRJE¬*N⊗⊃∧26Iα%"eαεu"⊗JJ-αQ|4PIα*J≥!α⊗:∀J0∪λα".iit⊃+∧λpπP'S∧A∧fSk)iPD@		;AHARACPERGOES IHA→∃
(A⊃¬→4PJ"JJJ↓E "λA⊂HK89∧thYB∧Ld
$L<
@λ	λ3⊃C!↓0p2)D∃
A⊃.p	"S'a`∀AIK@≤A9ππMβ%2}4⊂∩Aβ⊃	∩@BαaIQ9i0$%Nβ_U~@λ∪0)8(⊂	"Pd⊂!d⊂e'"fλ'*fa⊃i
	AP@∩∩$∩wβ'M∪∂≤AQ%≠∪9β⊂A∪9)β%%U!(Aπ!β∃≥0~∃≥	∪⊂→EPJ≤_xR¬"β⊂r)J∀rK&⊃,¬b'Sα@
n~(∩Aβ∨)αA(Y∃_

&pε hPα33j@ ¬I 1,.FHSLB∩∩m⊂~ε∀b∃αε¬αJ>Bα)∀
∧Tλ4DihTe_Q!∀l@uQ(ε%⊗puλI4rw!⊃,¬bg⊂a&"P∀h g"⊂i"⊂$SαTEBRUPTS
λ∧∪≠∨Y⊂∃↓⊂¬DL@04ra⊃,p
$∩iP$iH!j`∩REH
(A%_
R⊗∃∩VBQ∧jεN1Q LLzhTjβ%ItL@04ra⊃,p
$∩iP$iH f)gH* λE MH	λ[5β',hP&ε&_h &6⎇2⊗%↓λ¬B`(β$)f⊃∧@]bSαABLE OU@$αα& 5HZ%∃-
@λ
;4p
"SFA,!U()'FB∧bdiβEibU-!⊂_K→		;DOF'T LEAVE RANDO@≠≥∃'&A∪8A!%∨Qπ)⊂Aβπ_h":>¬∩44λMα6B$
α`@ ¬εE∞βREENABLES IN@)∃%%+¬"Mαε5"⊗IααI∧-J	λ∃ (αP!"Qdε DISABLED BY DALINT @∨$↓	∪'∪9(⊂∀*(TLh¬εA~∃0	dλ(⊂1
λ∧∪!-~!αAc⊂4*@λ:E¬∀qQ Lz8R∧Lh¬⊂)Iα".hI4p0IHαb⊂ S&⊂$g∃)←FEαP)edT P⊂∩1_∞&6
~,$↔9d`5α⊂ ∃SE @∨→⊂A∪≥$*JJVα
B∧l~90hPα(λ
9p∧h H→⊗$fPi`		8π→'∀A+'
↓∞@-*(T`*λ∪0*9c"B$∧λ∪3j@ ¬M 2,IMASK	3@)!∪&A∪LA≥∨.ααR"∃∧~VJJ,rQαX~4Xh!→TmQ2(ε∃α⊂∞FHSH	∩$p∞J⊗,rε
2*α& 5HZ%∃-λ¬∀dλSt@⊂∪βP%'∃→∧4PJε&hP&B≡ααA1HhP&Bz∧¬αc⊃Q$`)t⊂	'CE	POPJ @ 0~∀4SZR"~4¬∀⎇X¬∩)@ ¬ DISABLES ALL IN@)∃%%+↓Q&A
¬=~A>≤~VJ&t84)@8¬∩λT⊃S⊂(t⊂∧g*⊂d  IS SET SAYIL@∞A	<A)→0A)↓
↓%
[9β¬→
↓%∨+$J0∀(⊂
'H)"`∪TLπ%
~(p
α→jD-∃*Z¬%~λj$|@(∩3(~p¬P)⊂h "iλ*  gλ'`f`TeFE+Pi'⊂-U$ 	NK ABOUT UCIL@∞@O⊃∪$NA→_∞Iα$
2&:%h4*∩b& 5G!∃¬-9¬αc⊃Q M¬X∧r∧
C!⊂p
(∀'FE∧Sek"dH_V↔#∩)`F		;DEFER ALL INTERRUPTS
	SETO 2,
	DIC
	SEDOM ANTAL@_∩$p∞~29αR"
!αε2bα& 5HZ%∃-λJ2∧D~hR∧∀XYb∧∧~8∀∀dXAPPM	zα¬αF!PPM	zα¬αF⊃PTtz
$xh!~∧⎇∧$
α`h!Q#\$~8∀∀dTλ∀dbλ*U"∧→Z∧⎇∃H→e"∧→jD-∃*Z¬%_Q'4L@04rd	4h∪)zQ1
Ih∪r)X4rc∧λ3Q	→α`ieHTARRUPTS
	MOVEM 2,IMASK		;FEW MASK
∪≠=)β∩@DX]
⊃M→
∀%β∪ε∩$∩wβ-
A'-∩∃αRD)α&6∧zJRεu!α&:$*JJV¬"Mαε∀)α>8hP&N⊗$~¬↓I`h(&∩L_$$%\∩VQα|r2eα$B∃αεmα>JRrQα&u"⊗JJ-αRL4PJB>A¬↓1H4PJB>A¬↓1D4Tr>BJxh(&B⎇α)αA`h($)[Y`~∧I~4lM:4∧r	→e$-**U¬ Q(E≤l→jCPH+λ5%¬)qPPL→z2∧%9Z4
0⊃↔5∧|→jB¬$t	d-EDλe∀,T	D|≤~I∀l@H
⊂$
q03	D∀u⊂(9j#"A→3uQ)T+⊂λJs0	`U∧D]iPi"P PP_FEαfgk"RP_V↔⊃$)f#αD]`∀URN OFF SISTEM INTS WHILE MUNGIN@∞A∪9)!	_4⊂∪	∪H~∀&lzR*∧∧ ⊗∩dεTPDL		;NMP∞A9	≡A∪9)!	_4⊂∪!∨@@bY4⊂∪!∨@@bY$4⊂∪!∨@@bYλ$~∀&∧zA↓Ed↓5E!
H$%Nα(U≥∧z(R¬∀X¬∃*)H⊂⊂aQ@4u(∧+∀F@X∃XDB]j$)∪hπ AWAY @%∃)+%≤↓!εA!=∪∃)H~∀&∧zA↓EdJ6εNXH%nJ-~R>J*α6"⊃∧J6εNXh &N,⊃↓E2∪9A-HhP&6>4*5↓EdJ2RB$`4(→Yu (αdP_K↔#$)S#αE∧Qdi∧DB]c'kH f&'Uβ @∪≥Q%%+A)&~∀%≠⊂≡Z,I↓E1t2"NHaPPL→z2∧¬9Z4
0α".j85Q(λ_h@	Yβ⊂ ∀OP OF STACK
∪≠=)β~@HY↓	'5'β,~(∪≠∨-∀@dY∪5β',HIf@$YIB¬$z
2k∪∧λ∀∀⎇X@λ	Yα"⊂$S`ieFB∧`daCEfgU ¬  $αbααNm~εX∧KZJ⊗N$zJ¬α→≡L4PJN =4λE≤M8~`hPα33jHαP⊂⊃1↓∩Nm~εXQ!∃≤]4λE≤M8~`hTiz¬∀xQ!∀$0TRa⊃".u	λ3H⊃	~s24j4∃∩⊃$λu0THYβ*⊂$S*"a)∃h*εEβE_+; INDPDL BUIHDER8 RETURNS IH
)!⊃_Aβ≤αα→1α~≤-λJ2¬∧4
∧|LjHU∩∧y`λλi∀β"I→β*)jT≥αE,⊂h∧P@%<∩∩α∩m≥⊗⊗ αBJ>$*≥∧→yb∧
4
t*¬y→Db¬Z8R∧l~)4,"λ_5_h!→T⎇∀YTβ
@∀p
h∀`k∧DNi`k"H'"bb⊃b⊂)"Qdij"TεE∧fSi"dPT∪#$∀f#∧DNh∧UBN OFF THE INTERRUPT SYSTEM WHILE TOUCHING
∪	%$∩∩∩lA∪≥)A	_~∀%≠∨-
bYβ≥Q!↓λ~(∪!+π @bY≥%_∩∩w%!'/λβ	αε:"α&BN<!H4(MαVN!β	2:&`h(&B-~!↓EdJ6εNXH%nεl
N-α-α>)α,rRJdhP&BV≤A↓E20H%nN
2∃αRD)αB
¬α>&:$*H4(LBJJj~↓!E$HI`≤∃Z@∧lTK∀¬∀@Q!∃¬-9β
bα⊃J!⊃,p3HD∀p5HT∃∩⊃$
⊂c"A~∃4r∧ε+⊃α!↔tp5HT∀⊂Q*84UQ(D⊂0taQ@4∃*9λ+
!"B2	JVThλa"".j)λ∪SjT⊂⊂4dλ1∀H	xH⊃C!!4∃4i∧+
λe"".j85Q4dλC"B)YuQ(λe""'8st⊗$	qH∩)j∀⊃∪∧
∪h⊃AQB33jh3(⊃EI3U∀λIα".j85Q(	→β*("∪εE∧fSk"dPV↔#$∀f#∧DNi"b`S!&"P∩g*"i∀*h*)CE∧bdTεE∧fSk"P_K)jh)PkεE'∪h)'FB∧e))U⊂∀*∀BD]i"U*i'⊂∃'P!`S&"iεBεEεE∞]]P*∩"P aU*`f⊂∩e*"i∀*h*⊂∩ g"&⊃i)FEβE≥h"∪⊂'k"T#&'kCE∩("∪'k≥∧Sgk"fH*⊗("∪)k"∧B]i`k⊃P*⊂)SP*$ U⊂+bP∩ k"P⊂g⊂ aH*'P*TbFE∧Sgk"P∃⊗$g*∀"&∧DNc*b#QP g*∀"&⊂)U aeP⊃) fbCE∧h*Td⊂*⊗∪$f∧DNdh)kQ_P g⊃⊂$h)Ub→⊂*S*ibbβEh*Td⊂*⊗∪$fεEαh*idλ*⊗$fPieDDNβSAVE IMASK U@ON ENTRY
	PUSH T,LEVTAB		;RH IS ANTERRUPT PC ADR, @ AND () FIELDS OFF
	PUSH T,@LEVTAB		;SAVE PC
	PUSH T,D
	PUSH T,R
	PUSH T,F
	MOVEM T,INTPDL		;STORE NEW INTPDL POINTER
	MOVE T,PDLSVD		;RESTORE AC T
	JRST PDLOV		;THEN PROCESS PDL OV

;;; PRIORITY LEVEL 2 INTERRUPT HANDLERS

;INTERRUPT AFTER NEWLY CREATED PAGE
INTNXP:	MOVEM T,LV2SVT
	MOVE T,@LEVTAB+1
	HLRZ T,(T)		;GET THE INSTRUCTION THAT CAUSED THE GRIEF
	TRZ T,000037		;ANY INDEX OR INDIRECTION IS OK
	CAIE T,(SETMM)		;SPECIAL WAY TO CREATE A PAGE, SO ALL IS OK
	 JRST INTMPV		;OTHERWISE IS BAD NEWS
	MOVE T,LV2SVT		;ELSE RESTORE T
	DEBRK			;AND RETURN INSTANTLY

;ILLEGAL MEMORY READ
INTIRD:	MOVEM T,LV2SVT		;TREAT ILLEGAL MEMORY READ AS MPV

;HERE ON MEMORY PROTECTION VIODATION, T SAVED ON FXP
INTMPV:	MOVEI T,%PIMPV		;TURN INTO AN MPV
	JRST INTMER		;AND TREAT LIKE OTHER MEMORY ERRORS

;ILLEGAL MEMORY WRITE
INTIWR:	MOVEM T,LV2SVT
	MOVSI T,(%PIWRO)	;WRITE INTO READ-ONLY MEMORY
	JRST INTMER

;ILLEGAL OP
INTILO:	MOVEM T,LV2SVT
	MOVEI T,%PIILO		;ILLEGAL OPERATION

;COMMON MEMORY ERROR HANDLER, T IS PUSHED ON FXP AND CONTAINS THE ERROR BIT
;FUDGE INTPDL AND JRST OFF TO MEMERR
INTMER:	MOVEM F,LV2SVF		;SAVE F IN KNOWN PLACE
	MOVEM T,LV2ST2		;ALSO SAVE FLAGS
	MOVE F,[LV2SVF,,INTPC2]	;WHERE F IS,,WHERE PC IS
	JSP T,INTSUP		;SETUP INTPDL, RETURN INTPDL IN F
	MOVE T,LV2ST2		;GET BACK FLAG BITS
	MOVEM T,IPSWD1(F)	;STORE MEMORY ERROR BITS
	MOVE T,LV2SVT		;RESTORE ACTUAL CONTENTS OF T
	JRST MEMERR		;THEN PROCESS THE MEMORY ERROR

;;; ASSIGNABLE INTERRUPT HANDLER
INTASS:
REPEAT CINTSZ,[
	MOVEM T,LV3SVT		;SAVE AC T
	MOVEI T,.RPCNT		;INDEX INTO CINTAB
	JRST ASSIN1		;THEN USE COMMON CODE
]
ASSIN1:	SKIPN CINTAB(T)		;ASSIGNED CHANNEL?
	 JRST ASSRET		;NOPE, RANDOM INTERRUPT; JUST RETURN
	SKIPG CINTAB(T)		;'CHANNEL' INTERRUPT (A CHARACTER?)
	 HALT			;NO, SOME OTHER TYPE, BUT NONE SUPPORTED YET...
	MOVEM F,LV3SVF
	MOVE F,[LV3SVF,,INTPC3]
	MOVEM T,LV3ST2		;SAVE INTERRUPT TABLE INDEX
	JSP T,INTSUP		;SETUP INTPDL
	MOVE T,LV3ST2
	HRRZ T,CINTAB(T)	;GET THE INTERRUPT CHARACTER
	TRO T,400000		;FLAG AS INTERNAL
	MOVEM T,IPSWD2(F)	;STORE ON INTPDL
	MOVE T,LV3SVT		;RESTORE ORIGIONAL CONTENTS OF T
	JRST CHNINT		;THEN PROCESS THE CHANNEL INTERRUPT

ASSRET:	MOVE T,LV3SVT		;RESTORE ORIGIONAL CONTENTS OF T
	DEBRK			;THEN RETURN TO MAIN PROGRAM
]		;END IFN D20
;ENBINT REAINT REAIN1 DISINT DALINT INTRPT MAILINT DSMINT INTERR PARINT NXMINT ILMINT SAIMER EYEINT SAIIMS SAIDSP


IFN SAIL,[
;SAIL NEWIO INTERRUPT CODE

;CALLED TO REINITIALIZE THE INTERRUPT SYSTEM
ENBINT:	MOVEI T,INTRPT		;FLAGS,,INTERRUPT LOCATION
	MOVEM T,.JBAPR		;LOCATION SO MONITOR KNOWS
	SETZM INTALL		;DID A 'DALINT' LAST (ALL INTS ARE MASKED)
	SETOB T,REEINT		;ALL INTERRUPTS INCLUDING REENTER
	SETOM REENOP		;BUT MUST SET BOTH FLAGS
	IWKMSK T		;ALL GET US OUT OF IWAIT
	INTMSK T		;ALL ARE MASKED ON
	MOVE T,[STDMSK]		;ENABLE STANDARD INTERRUPTS
	MOVEM T,IMASK		;THIS IS CURRENT INTERRUPT MASK
	MOVEM T,OIMASK		;THIS IS ALSO THE OLD-MASK
	INTENB T,		;TELL OPERATING SYSTEM WHICH INTS TO GENERATE
	MOVEI T,REETRP		;REENTER TRAP ADR
	MOVEM T,.JBREN		;ALLOW REENTER AS MEANS OF IOC INTERRUPT
	POPJ P,

;REENABLES INTERRUPTS AFTER THEY HAVE BEEN DISABLED BY DALINT OR DISINT
REAINT:	PUSH FXP,T
	AOSE INTALL		;DISABLED ALL INTS?
	 SKIPA T,OIMASK		;NO, USE OLD INTERRUPT MASK
	  SKIPA T,IMASK		;ELSE USE CURRENT MASK
	   MOVEM T,IMASK	;THIS IS NOW THE CURRENT MASK
	INTMSK T		;THEN UNMASK CORRECT SET OF INTERRUPTS
	SKIPG REEINT
	 JRST REAIN1
	MOVEI T,CPOPJ
	MOVEM T,.JBOPC
	POP FXP,T
	JRST REETR1		;FUDGE A REENTER IF ONE WAS REQUESTED
REAIN1:	POP FXP,T
	SETOM REEINT
	POPJ P,

;DISABLE ALL BUT IIPORTANT INTERRUPTS
3IMASK IS MOVED TO OIMASK, AND IMASK IS SETUP TO NEW CURRENT MASK VALUE
DISINT:	PUSH FXP,T		;WE WILL NEED A WORKING AC
	MOVE T,IMASK		;GET CURRENT INTERRUPT MASK
	MOVEM T,OIMASK		;UPDATE OLD MASK
	ANDCM T,[INTPAR\INTPOV\INTILM\INTNXM] ;ONLY ALLOW THESE INTERRUPTS
	MOVEM T,IMASK		;NEW MASK
	INTMSK T		;TELL OPERATING SYSTEM
	SETZM REEINT		;ALSO DISALLOW REENTERS
	POP FXP,T
	POPJ P,

;THIS ROUTINE DISABLES ALL INTERRUPTS FROM -ENABLE BOUTINE TO RESTORE
; IH
)I%+!)LA
%∨4A∪≠βM⊗A%βQ⊃$AQ⊃β≤A=∪∪β',~∃	β1∪∃(t%∪∃)≠M⊗A$n@∩∩g≠¬'⊗A∨→Aβ→0A∪≥)∃%%+!Q&~∀∪M)>hα&*Rb0$%\22ε≥¬""εQ∧
21αLrR⊗J∃*BRM∧BεZ∃∧∩⊗⊗9∧"&Nε∀b⊗⊂4PJB>BRαA04Ph)n"-∩∃αRzαBJ>≤*NMαqα&:$*JJV¬ 4)n⎇α⊗Jε$J:≥α≥JNR⊗jα*V6¬→αR=∧B⊗J∃¬:&R↓∧
21α~MαN
2⊗⊃αr⊃αN-!αVA¬:&R!∧J:R⊗∃∩VBPhQnNR
"VMmααR"∃∧z
*⊗≥!α&M¬"=αN
2∃α&u"⊗JJ-αQα∩-α⊗:∩rQα∩
"¬αεt!αR",qαJ⊗,rε
2(h)nRD)α&:$*JJV¬!αNf≥"⊗%α
→αN>|qαεM¬α>NNL∩2∃9rq::>$)αR"
!αR"M→α6V≥!α∩&≤

2∀hQn&:$*JJV¬"Mα∩-α⊗:∩Lr≥αVα	tb¬y	∀B	yd*¬x~2∧<YhU∀
HXBpH!Q#J@+23JH4TU*
	+"!∀λ+(I4p0IH4k+!QL¬fbSei,P⊃i)'iαD`f&λ"hλCEPT @DL OV
;<ESC>I			<ESC>I AND REENTER
;PDL OV			ALL EXCEPT MEMORQ ERROR AJD PDL OV
0↔π1≠π,HH&∞∩|~,4(hR& 5J*¬#R	Yu$(⊂+	→U∀⊃	Dλλλ∧∧λλλ∧∧∞q∪iDuλ∃iZTV(λ_Su5∧
t⊂0hZp4Hλ*j*'S)P⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂βE⊂⊂⊂λ⊂⊂⊂⊂∀bj-&H)"bg∪h⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂≥S'Pα!Ki"bg∃"i⊂*∀ h)P∪'kP⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂εE⊂λ⊂⊂⊂⊂λ⊂&gk⊃P!⊗↔∩!!g$H⊂⊂⊂⊂λ⊂⊂⊂⊂λ≥cbjλ$g*"T)*h*λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂εB⊂⊂⊂⊂λ⊂⊂⊂(∃id⊂ K!⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂≥iPk"P$S*"i)∃h*⊂!SdεDITIOFS                           
        PU@' AαXb@@@@@@@@@@@@@w'β-∀Aβ%∂U≠≥(↓)≡A∪9)%%U!(@Q→_∞I↓d*N
zJI↓↓↓α↓↓↓↓α↓↓↓hQ↓↓↓α↓↓↓α¬*N!α
b&6ε≤Y↓↓↓α↓↓↓↓α↓↓↓n$*~⊗J∀*⊃α&u"⊗JJ-αQα6
~-α∞-∩J⊗:$beαε≥"&Z∃α↓↓↓↓α↓↓↓↓α4)↓α↓↓↓↓αα*~~zα	19[	↓↓↓α↓↓↓↓α↓↓↓↓βZ≡⊗Q∧J:R⊗∃∩VBQ∧rV6
-⊃α&:$yαε
∧⊃-E↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓4R↓↓↓↓α↓↓αB-~!α¬d⊃-E↓α↓↓↓↓α↓↓↓↓α↓↓nN$zJ∃α$B&Mα|qα&:%α∩1↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓h)↓↓α↓↓↓↓∧j>Z∃∧⊃-E2≤
&&6~B	-EJ↓↓↓↓]""&M¬:&21∧∩∃α:-9α&6
~-↓"2α"εM∧J:Qαu*6
⊗∩I↓↓↓α↓↓↓↓α↓4)α↓↓↓↓α↓α6>4*5α	[	2&6
~-↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α4)↓α↓↓↓↓αα&:Rm~-α	[	↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓4R↓↓↓↓α↓↓αB-~!α¬br*
R∧→↓↓↓α↓↓↓↓α↓↓nN
2∃αε%⊃α&:$*JJV¬!α⊗6rεR⊗~α~J>j↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓h)↓↓α↓↓↓↓¬αVN!∧	2:&b↓↓↓↓α↓↓↓↓α↓↓↓↓]~εZ∃∧"V66Jα↑>J%→αR=∧B>2⊃∧
∞Mα"aαI1∧1↓↓↓α↓↓↓↓α↓↓↓↓α↓4)α↓↓↓↓α↓αBV≤Aα¬2tJ1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓hQ↓↓↓α↓↓↓α¬*N!α
b0∀LD∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧hR∧∧ααα∧∧∧l⎇hYR∧
I→e%∧IDααα∧∧ααα∧π5$D~4∧M~	hU 4⊂3UλZTU4
D∀⊃∪∧
∪r3JH4Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧β"H∧∧λλλ∧∧∃5p)~λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧πu5p)~λ∃r)Iλ∀Q*:∪tQ$
4q4Dλ0itd∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλβ!$λλλ∧∧λλ⊃+λrλ⊃EI3U∀λIλλλ∧∧λλλ∧∧λ∞th~Q(⊃ED⊃q5∧
∪r3JH4H∃	t∩3U
λ∪λλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧↓"Hλ∧∧λλλ∧	3uQ)T⊃∩*
q
⊃E∀λλλ∧∧λλλπ:p5Q$λλλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λβ"D∧λλλ∧∧λ∪3j@ fP)$h)i
!∀P⊂λ⊂⊂⊂⊂λ⊂≥i`U"P)                                              
        MOVE R,.JBTPC                                                                
	SUB R,IPSPC(F)		;OTHER JBTPC
	CAILE R,4		;GITHAN4
α	 HALT
        MOREM R,IPSPC(F)        ;TH@
A¬∃β_A%∃)+%≤↓!ε@@@@@@@@@@@@@@@@@@@@@@@@@@@~∧@@@@@A≠∨-∃∩A$X!R@@@@@@@@@@sπ∂!dA∪≥)A	_A∪9)≡A$@@@@@@@@@@@@@@@@@@@@@@@@@@@~(@@@@@@Aaβ⊂A1∪⊂~R∧"1↓↓α↓↓↓↓α↓↓↓n∀*NB>∀)αNR
"∃αxd∧2∧→hB∧LhJ∧$b∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧hR∧∧ααα∧∧∧l@uQ3$λK∩4
8J∀J$∧λλλ∧∧λλ∞jI⊃3@
85Q(λdλλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧β"B(Hαa)"PeDDDNβH
∨.↓∂≡A)<A+'HA→
∃_A¬+PA≥∨(↓)≡AM$A¬∩>≡Jh4(→*%≥"λ
4LJ:αD2⊃⊃∪L$~:∧
$9∧l@H∩3JH4TU*
λ∩3HH4∧εEβE→f`Rd∧ INTERRUPT CETS DHE @≠β%→∪≥(↓
→β∞Q'β∪0[∪β∪0[∪≥	∃%%+!PR~¬∪→_A'β%_Y6~)≠β∪∪9(t
∀%'↔∪!∀A,]≠¬∪→&u 4(∀	%∃≥D	TL→b hP→Yu$(⊂
,@V.MAIH@∪≥P∩w∂PA)↓
↓(
ε2,(4(→X∀LBε!E"α∧∧ααα∧↓∪@8q5
I⊃(∪(→3β"A∀⊂TTjD⊃∀s)→Uα"'c f)QP f T&FE∧R&)-⊂∀⊗∀")		3@-¬→∪	βQ∪⊂≡aQ L≤→_R¬∩E
4MD)~Bα|X∧∀E@T@	
	 @∃%M(A6J& 31⊃∪@9α ∂SE
∪⊃I%4A⊂¬BE"α""'e'a'∃d¬~∀%∞ε6*αI2ααhTT|)jThKαp	$Qd*⊂%∪βBN@+4~∀%∧RJNQ∧jε&&pε0HKαs∪j8!"B)Yβk"P∀⊗_T*
D@	;GEPλA%JB*	xb∧lX∧th_q#"A_p23D
Kb!↔p∧iP∩h∧ A↓%⊗εbα≤@pπ ∀RLπ⊂⊃α≤BεI@qQ J∧αTTjD⊃∀s)→β*∧DNβH
≡X↓∃+'λααJ-	z%"¬IλR∧Lh9∀$3Qβ!∧fgk⊃P)⊗→
*⊂			8π')+→Aπ⊃¬%βπ$*H (!→%∃≥Dλ4Dt≠!⊂K\It¬$DT	∀`*⊃0	)∃h*εE∪`ddg]	SETZM V,MAILIH
(~(∪∃%'PA∩NlJ0∃ Q)TL→`G⊂ 
OVEI @(αbRJVαIhPα33j@ ¬M T,V.MAIH	&u 4*@Q↔4,@Qλ∩(iH⊂	`Rd∧

λ∧w	∪M≠∪'~αε 2	→e$4TU*
β"Q
9αdg*∞α	P@+M⊂A
E↓2P4PJ6 =hT¬"dα3U
λα 
	H∨-∀A→2MαN∩→α⊂

E ∧]i⊃ij'i⊃P h)λ εLAGS TO TH@∨'∀Aβ(A%_
R⊗α*%-¬D
DL@1#"A→αgk"SP#⊗$S`ieFBα	INTMS@⊗A_~∀&∧zAαQd04(~	uα¬EJ hPα4∪j∧∃⊃↓Q@∧h*Td⊂ ⊂,(T ∩∩$p∞J⊗αJU∀rλ∧⊂aQ@∧h'T$P ∀0j~(Lj0≥Q3 ⊂∃⊗ 	NTP@	0HI`≥∀X∧u	@i"P$SαTPDL
∪!= A
E↓2P4PJN.~	B¬∀XY∀`*β"B$	⊂3∃↓⊃ ∧]c∪βR DE@¬+∂∂%_
:βλ∃		4h∀i	u3⊃∧	Su⊂∩ h ⊂EL∧A+≥1'&~(∩∩$KZ≤@q⊃(	~h∪SjD∀⊂2*(αb⊂!SβRRECTLY
		∩∩l@Q	∪M∪⊂~R\"ε $α3UUβi"`RdεT)
λ∧∪'↔%!≥αα(T,@Stβ!∧P ⊂OPJ @ 0~∀&lzP∀3(∃¬JQ14j@*∧D]UβE NEED AT LEAST @∨≥∀Aβε~(∪⊂⊗>4)αQI→e%∧IA⊂K]X∧q$
λ⊂4d
⊂∧"P∩dεTPDL	∀∪¬	⊃αα@
&l
`_L∧@]kQP 
@+M(A%M%-
↓)⊃
AM!βπ
↓(∞∃ααy∀db	hT, Q!∀l@uQ3$
λε$g∃("&εBα	S@+λA(@2⊂εsα[Q⊃∪@8U0
 L@β-∀@hA	U≠⊂⊗@∀
t`:Q∀h¬4(⊃I@i⊂ ⊂C
∪!= A X!(R$KZB
αM→αRλ~B¬<α∩0i∧∃q(
@df&⊂∀'h%⊂∃'FE∧R))`∀↓%⊗⊗αJ#λhαC"Gdg ∀ERRU@!PA⊃β≥⊃→∪≥∞ααJ>VαI∀`(αiP∀⊃$i`⊂ATC@⊃⊂A)=¬2&¬αα8∀L%8∧
!QR3UλZTNB)@h¬TSTR [ASAIR\AL @∪→1∂β_↓∪⊂~R-∩JVB ∧∧D
4λ$,,d
$,≤α15HX	H∃		4h∩*4⊂3C!	3Q⊃*)P3λ	I4tλλZTStKK εE∧R f*εB∧¬∃!¬%∪≥(βP&&>5~%αIbA⊗B&∧
I$¬\22ε≥¬""εQ∧JMαB
∩&@%∀λU∃∀z!P@!2TTjD∀p2)X4C"AQSP&RdεT:	SKAPA R,[¬PIM@V]
∃∪1≠∪≥#P&&>5~%αIbA⊗B&=∩0~Hβ"Th→314G∧fgk⊃P#⊗$S*("&αDXINT PDL P@∨∪9)β$A%→)≡A_~∀&lzP∀3(∀EI4⊂uhF*⊃J!↔tp
'T P ↔HERE MEIE@%HAπβ≤↓
∪≥λ↓
&R_h &*∃~Qα⊗,j⊗JHHI`≥¬)x4-≥4	T,@3tV$λ4TSj!αEεE∞βHEBE FOR<@'εy∩A&u"⊗JJ-αP4
-J⊗&:#P&6>4)α→2LrRB∩`H%n→jB¬∧ID¬∧|→jD-∩	→e$zλaPPM8ZET∩
 	~∀qqε%⊃J"'_StPhT⊃2∃λZSP3∧λp3∪↓QL¬DfSk&P)$h)kQ→∀#∀B]cbjλ≡"iaO$P i⊃P∀ 'Tdj$k⊃P#'i∪P#g&⊗TFE≥Ba`df⊃P)⊗_MYDD]Se&,P⊂d i Ph"i)H*h⊂*∪P_[[H$ k"H&b`g∩g#FE∞DP""⊗ P)⊗∀∧D]c∪i!bP∀⊂*'P⊗"i'FB≥DP⊂∃&'P)~____∧D]Q& cP∃$ j⊂∃$$iP∩iP gλ$g*"T' f⊂⊂`f&εB≥DfgU"fP)$h)kQ→∀#∀B]i"iU'i"P⊂i#jfQg*⊂*∪P!d'∩g*εEαaf)!⊃$FE∧R))j⊂⊂d'$g∃∧D]c∃b#bP∃$"P!R g'"S⊂$g*⊃i)*h∃εEεE∞g"kP∩g*"i∀*h*⊂∪`ieP⊂$j)Vλ$g""V"b⊂!⊗P!ji∀"g*⊂∩g*"i∀*h*⊂∪*fa"TεE)`Rdfi]αX⊂∨P⊂∨P_λ∨P_⊂βE)`Rαdg*(∪k∧DDNf`dfλ$g*"T)*h*βE)`RBXεE⊂λ⊂⊂⊂⊂λ⊂_⊂∨H_⊂∨P⊂∧D]S'j⊂!Ui)"g∃&,P"S a&"Q⊂ j⊂⊂g,P*∩fbFEαdg*(∪k∧DDNh i⊂⊃i)'i∞⊂'g&⊗P f&∪kP("∪⊂'kεB∧Vdg∃!f%VLDD]aS'aeP∩g*≥⊂⊂f&'kH f&⊂∪j$"i∀FE∧Xλ∨P_⊂∂P_⊂∨H_∧D]S'j⊂*Tbb⊗⊂∩fh⊂$S*"i)∃h*)FB∧V↑$S*!f%W$g**∃$←⊗XB]↑"iP←$]⊂⊂f&⊂"V!bh*λ≡"iaO$P g⊃⊂!f'PeFE∧L∧DD]Pd g#Rg#P(UbjbiK⊂''jλ*ibbβE∧dg∃('k.∩g*$f∪n$g*∪,&n$S*( i↔$g*(∪k⊂≥h⊃&⊂'k∞⊂ f&λ&bfgT,P"i∀)P g⊃⊂("&λ'kεEαX∧DDNh"(⊗LXP$g∃⊗⊂''U⊂*ibQεE∧dS*('kαDD]dS&]⊂'S&,P(⊃&⊂'kβE∧dg∃('k∧BD]g,∪]⊂'g∪,P("∪⊂'kεB∧X⊂∨H_⊂∨P∧D]gU"i#&∪kP g⊃⊂'f"λ!f'aRP*$aRFEεE∞b$ih⊂j!d⊂∃ a&"K⊂$g"⊃l"b⊂⊂,P$g∃"i)*T*⊂'*Sa"iεB)`db∀h≥εE∀`RP)⊃h"`jλ_XV$S*"i)αD]dg∃"i)*T*⊂"i∀'i⊗⊂∃$$iP⊂`g''U⊂$ h∀"gεE∀`R⊂)⊃h"`jλ~⊗$g∃"i)εB)`R⊂αf`ddS*∧DDNf`dfλ$g*"T)*h*βE)`Rλ)"h"Pj⊂~⊗∩g*"i∀εE∧h⊂i$g*αDD]h⊂i$j,H"i)'TεE∧aS'aedBDD]aS'aeP∩g*"i∀*h*εB∧dg*⊃i)⊂∨H$g*"T)⊂∨P∩g*"i∀⊂∨P$S*"i)λ≥k i∩gjiP∩fh⊂$S*"i)∃h*)FB∧blbRg*∧DB]↑"iP←$P$S*"i)∃h*εEαdg*"T)⊂∨P∩g*"i∀ED
	INTERR			;FLOATING OVERFLOW
	INTERR ? INTERR		;UNUSED
	INTERR			;INTEGER OVERFLOW
REPEAT 4, INTERR		;UNUSED
]	;END IFN SAIL
;ENBINT REAINT REAIL2 BEAIN1 DISINT DALIJT APRTRP $PDLOPA	M≠∪≥(↓+π↓∪9(A%∃)% AI)$D~∀
∃%
≤AλD`Ti'¬∪_@5q2l4U~V
R$aα∩⊗~iEAα|r2eαt*P≤Lt	∀u$Z*%-¬Dλ4|$QQ#ZR%(∩∧tzHR∧|dλ4
-I→tpH':tDhZd-∩λI∧*∧α3U
λ⊃λ∩*4∃∪u(9⊃1∧	5λ∩*4⊃∪sHT∀sh	→H⊂(λ_4U⊂)→β⊂'i⊃ ¬R OF	
;IL¬')%Uπ!β∨9&\@AQ⊃∪&A%&A:,~⊗NN
∩eαRzαBJ⊗αhTe"λI∀lLhp∧-∃)z%~∧h)tj¬8:$-p3QaQLp
hλ* "P∀ ∧@_AM→∨(A¬→→>≤
R&>p∧αE$	~2¬¬(Zd,UJ4¬≤
hXB∧4z2b∧iz"∧-α⊂3*	⊃+λ
Ic"Nh ¬ OVERWRITTEN↓
eαt*N@$X@λ	→β*"i∀*h ∀S)(@A⊃_
αizB∧≤α⊂3Hx(⊂3K∀⊂πi"⊃i$g#H'cεE∞βP	"M→α∞xHR¬<α5∩	@h¬T MEP	&≥*2>Vα4∧9⊃0ri→β#P*∪β SEE T@⊃βPA%β≥⊃_∞ *Dλ∃≥Lh9¬∀|βSu*1 ¬≥dSαTE@%I+!)&↓(∞&2bα0∀⎇Dλ4
4q(
Iu⊂3∧	⊂πiiPcbWεBαλ
∀w%_
R⊗α*%-¬DλT`(0S∩)@#P∂DISABLIL¬∞~∀m⊂~ε∀b∃αiz$lD	∀`*⊃0	)∃h*)Vλ!`f&⊂b⊂ jλ)j I∃*hεE⊃dεBINT:∪~=(
⊗%¬!2J⊗-"J@$KZJ,YjD
∩λ¬∀H~λ⊂1
!αE∧fSβVEMT, ≥∃	%⊗8hP& ,zhTJ¬AH∃¬∃J*HKαu∩	~h∪∪h`j$gSα FOR ALL APR TRAP@&4⊂λ&6⎇2⊗ *묬@%! H∀∧@	;IL¬
∨%4A)>¬→5EA¬2&¬αTz∀$~AP@!33uHY(⊂
⊗∀h∧DMSK
∀∪5_∞Z⊗hεQ2→P∃≤X⊃↔5$Dα4h	~h⊂u**Q3U∧	3P
"∀)*`⊂T MASK
∪~9(
⊗5¬!2>→P∃≤X⊃↔4@∀sh	~h∪sλD⊂∧g
⊂i)*h∃⊂ 
ASK
∀∪M ∩>hεJ,Y→e Hα.tH_3P
"↓R @∪≤Q⊗JJ-αRMα
∩¬αy1P@!4q5	@dP ∩DE@
∨ $∩w¬+PA≠+≥!αN⊗αD∧)u∩_i⊂1taQ@∧ibU-&P$SαTALL		0↔/⊂A⊃β-∃_	≡P∧"&Nε∀bε⊃αb1α→bD
∃*Z¬%_Q!∀
¬(Yd$∃ββ!∧h'h∩⊂(⊗∧BDXNO OTH¬R TRAPS @-%αA)⊃%&A6,~"ε:M~44!Q#@:Q+1)@ a&"H c ∀ER DISABLE IH
)I%+!%_4*J,
& 5G!∃¬-95E¬J@hPα03J8(∩3JH3∪α↓↔q∩4h_S⊃1∧λ3∪λ	_β*)←CE	 SKIPAT,@∨∪5β',HI`≤tuD¬-≤T	tdλ∩3JHαi)*T*⊂&`TeFE∧λ⊂)edT P ∀,IHβ',∩∩`.,bN∃ααZ4*∧8¬4J(αg ∀MASK
λ∧∩@@↓≠⊂≡Z,iαQI→T
≤αb.jI⊂∧iP∩iP''Uβ THE CU@%I⊂~Q∧jεN1Q L
λ∧Q)@!⊂ ∀,
∪'-∪!2*αJ,Yie@"B(	*Tp
4 ¬AIN2λ
∀∪M↔∪!∞ααJ,Y→e @ ¬∧P∩))`∀ R@β∪8b~*∀*ε&9α ∞A→αgk"RP*⊗!T'h%εBα	MOVEH
A"a0∀T)z∧1 ¬∧h∪βP FXP,T
	JRST REETR1∩∩m
+	∂∀AαA∀*⊗ 5HZ"∧Ld	t`((⊂`TP)"hUbi`∀EDλ
∃%∃β∪≤@λπ M≤X¬∪IT∀Q1)→β*εEαib`∀NM REEL¬∨ ~(∪!>αα~bAe 4(~	u∧Rλ∧↓Q@εE≥Q$i`a∪ ¬ ALL BUT IM@!=%)β≥PA∪≥$*JJVα
E_hαQ∩*93P
:	PU@' A~@
¬E @ ¬∧fSβP
APY∪≠βM⊗∩%\:⊗@"λ:U∃∀YjB∧l~90hPα33j@ ¬M T,O@∪≠¬'⊗∩∩m%⊗6,j∀4H∩*D⊃StD
Q0	bU$g#@ PURPOSES
	ANDI T →β@X
Bza⊂K\βsS∀⊂3∪	@hπ IMPORTAL¬(A∪9)⊗J∃*BRLhP& ,zhTj¬EI∀l
91⊂K]I	∃~∧α4hλji)"SαT @'Qβ ∩∃∧z→αNβ~5$3#"A~q0
-∪P)"bRdεT		8π⊂~=¬∩⊗⊗:αHU∩th∪I@hπ
	APREN@∧A(X4⊂λ&B⎇↓α5α⊂λ⊗∃∧¬∀∪A_∞B$
α`@ ¬εE∞βDASA@¬→
A¬→_A∪9)⊗J∃*BRLhR∩ε2LrQh~
U≤Bλk¬αeAQ M≤X¬∪iT⊂∧g*⊂d∧@_∩$p∞"ε4)α$α4p(&"b AH@_A%_
R⊗α*%-¬J1P@!4q5!⊂",R@∪9(∩(L
BJ⊗t⊃αQAQ M∧z∧∧5E¬J@hPα4∪j	H⊂↓Q@εE≥Ph)⊂*∀ h⊂$⊂e"&$Sα@∞~∃¬!%)%@p∪'Q5~A¬∃⊂~>H%nε∃~6 %X¬∪∀⊂π'P↔!Si"QdεTER IN@)∃%%+↓Q&A:⎇9∧4!→T⎇Q3 ⊂∃⊗ h)∀i*εEαib`∀Z T _~(∪β!∀*0∀∩λ@↓⊃,¬g'H$g ∀ERRU@TS DURIH
∞AQ%β AM ∩Vα↓P@!33uHT∃∩)@*("&αDX@+M
A(A¬&A)⊃∀A∪≥%α∩04U∩⊗B⊗
!↓QD
¬-≤αλ∃¬A ∧]Yλ$g ∀ERRU@!PA/>∀"Mαεt!↓Iα$*~4X∧Q(D∃stHJc"B*
4r⊂∃⊗⊂∞JBTPC		8π∪≥$*JJVα
B¬∧1Q M¬X∧r∧
λε"∧B]i`k⊃P aSTP iP∩h∧S IL¬)∃∩VBQ¬:0≥3⊃⊂⊃'FE∧T*id T,R
	PU@' A(@20h ⊂LYzd,@(⊂
,IH
)!⊃_∩(Lj0≥Q(⊃¬I304i1 ∧]j∩$iP$TP#gdSα@∞A$yα<βh∩)@⊂ 	NT MASK1 WORDλ
(Lj0≥Q3 ⊂⊃⊗ 	PSD@bQPR~(M~⊗Bi∧!0$!→TmQ(⊃EERPPi@$@		;GET AAP	+β0A!%∨
''∨HA¬∪)L~∀&%∩0∀(⊃Kλ~λπ ⊂ARλ
∧∩↓)→=∧!1!⊗α	∃∧
%⊃⊂K]λ~$M⊗(⊃**StC!∧j)'⊃P#⊗ T↔('kαDX@!⊃_A>3x4(∀	%∃≥D∧E∧⊂ε'kβE	TRL¬∃α2bεAi→DhHα.t
ZQ(∀λ_q(⊃**StGd¬∀r∪jYα"⊂*∩$iP!⊃P 
@!X}R4PIαRIt∧"bα	4	~βi'TCE	TRL¬∃α2bεAik∧hH↔9d`9β⊗bl∩ij g∃⊂ 
EMMRP∩~(∩A)%<A@1-α&&BαaP@LYzd,JλADM¬8¬qε∃∃
#!↓33uHT∃⊂*
TqU↓Q@∧e*Sh#⊂"&bfbT)αE∧SβP)'Q$A7βMβ∪$Aq+≥%
∨∂≥∪iλAβA$A∪≥Q%%+A)9:~(∪⊃β→P~∀
∀⊃!	2⎇1h&6⎇2∃αQd
BJN5 4(εU∩NQα∧"2>XhP4)N$JN6&≥→αε9∧J:R⊗∃∩VBPhR∩N⊗LrQh&¬*N!α5BA2PhP&6>4)αQ2LrRB∩`h(&6⎇2∃α→dJBN∩3	"Q$KZJ⊗N$zJ∃α
αIα~d
≡Mα$yαR"⎇~∃αε"α&:R-∩JVB"αR&6(h(&6⎇2⊗5α2b&6ε≤X4(&
αJ⊗:∩α→04PJB>A¬!2_4PJB>A¬!2H4PJB>A¬!2⊂4PJBVNBαA1""H$%n∀*RVJrαB4PJB>BJαQ1ThP&6>4*5αQdJ:RB$`$%nα(U≥$z(R∧LjJ∧$`Q!∃∧⎇∧λeEαJAPPM99∃∧b
(T,LjAPPJ	λ∀e ⊃⊃∪@8StHλH0U1hy3Qk∧
∩∩4d
r∪u)Hλ∪SjD∩⊂4
λ3H∃)i⊃4taQ@""!↔psqλT⊂∧iP∪'j⊂(⊂di"bλ!gi)⊃aj&,H∀"$iRg*-b⊂f g*↔Ui"`Rg*∀FB∧iedT!P)"Qe'hεB∧P('T%⊂(⊗βEfgU"fP*)"biU*∧D]UbP'"Qb⊂ jλ&"`iU⊂'g"H aFEαfgk"H*⊗$g∃("&∧B]jabH*⊂ iH*$"P∩dεTPDL
	ADD T,R70+10		;WE MEST RESERVE THE SPACE WE WILL NEED
	MKVEM T,INTPDL
	SUB T,R70+5		9BUT LEAVE 4 DUMMQ WORDS + 1 FOR PC
	POP P,(T)		;PC IS THAT WHICH WE WILL POPJ TO
	JRSTREEDR1
];EJD IFN D10*4SAIL ~bx~∀
∀m)⊃
A→∨⊃→∨]∪∃∞A
∨	
A%&A
∨HA)∨!LZb`A¬≥λA'¬∪_~∃%
≤AλD`Y6~(p∞"⊗∀)α~>⊂α¬αVα8U∩∧9λ∃∀:HU∩∧→jD-∃*Z¬"b	X∀\*λ→b∧LhJ5$90∧5∀→XR∧h@∧83∪λλ→⊃R3JA U0i	3UεA~q1⊗IT∀Q1)→β*∧DNβDON≥(Aβ→1∨ ≥αt→6J⊗,rR⊗J~αR=α<yαRα∀zV≡hP&6>4*5αQe∩⊗⊗N5 $%nαxR∧tXXB∧
D	D,
:@∧l@Q(⊂(1"B3)zQ(∃¬I3Q∀λIα".jZq(∃∧λ4h∃	λαP$g∃("&εB∧`b"λ*⊗)≠L∃XX∧B]f`∃ST SET INDPDL TO AFTER ITS REAL USE SO DHAT
				;RECU@%M∪ ~∃∧J:R⊗∃∩VBR~αVN∃∧"&~~-∩⊗ 5D
5$90∧
∀X~0hPα33j@ ¬M T,INDPDL
	SQB T,R70+4		;WE WILL CEEP A DUMMY FOUB↓+⊂≡J%_4(~
U≤BλAE@6	⊂j	t∩W!↔t⊂hλi⊂1tdελ⊂4d
⊂∧"lH&`lP⊃bj⊂)⊃ij'i⊃b⊂!,H%))jλ→⊗εEαh*`∪H T →λ$∩w'βY
Aβε≥&Aβ&↓∪ ∩M∧J2R⊗α*%-¬D
tm3⊃⊂⊃'FE∧T*id T,R
	PU@' A(@20h &6⎇2⊗ *λ@	~∀pb∀*∀FB∧fgk⊃P"⊗$S`ieDB]h ∃T O@→λαα& ,~92∧Ld
t`:Qλ$	04raQ@∧fgUα@~A⊂Y∪!≤"→E" ¬⊂hPα33j@ ¬ @(αbJ,X∧uJAα@
	SEP@∨~ααJ,Yiu@ ¬∧iQh∧@∨~ααJ,Y→e @ ¬∧e∀)j⊂!R'$g*βE

λ∧w%∃_
R⊗⊂∧¬%∀~∧∧%!Q%∀10
)∀≥	AOSG BEEH
∨ 4⊂∩Aβ='⊃
AI∪≥P∩∩g∀*⊗ 5HZ"∧IIu 81∂c!↓(λ∩J*u⊃Hλ¬RPSjλb".iIt⊃+∧λS⊂1dλ3Q⊂⊃eP'gβE	MOT¬⊗5¬!2J⊗-~RP$KZP≤*	hT,"λ~B∧dX~5"∧βsQ$λ0c"A→αgk"H*⊂INTPDL		;U@'∀A(AβLA)"*α& 5JλD`@ ¬∧`Q ∧ @(αbI]AXε∪Hα.s*Zuλ∀hZα⊂$g∃("&⊂∃'P c∃ ¬R ITS @%∃β⊂⊃ααZ4*¬9t¬$D~AP@! ∧DDNβRECURS@∪-∀A∪≥$*JJVα
E~¬X∧q$λα 	FFERENT STACK AREAS
	MH∂-4A(@2LrRB∩`h ⊂M8¬0D
λε)70+4		8π ≡∃¬:& $βλ∩hX4λ⊂$λα*ffVP#'jT⊂+gi⊃)FE∧T*id T, ≥∃	_∞BHI`≤Lh¬⊃**U0λ*λ(!FE∀ ¬E@)Hbt&¬*N!αα@λA ∧]iPhεE A@εO&A¬&A&%→α&:αHU∃∃X∧∃∧
pπjf⊃⊂"'FBα	P@+M⊂A(YH~∀&¬*N!αα@λaα@
	SEP	5~αα&BNαxC∩EE⊃⊂K\iz$8(∪0*9h⊂
'H-"`∩O AS IS U@'∃λA'∧*≤L→IEHhαB3)@hεE D,IMASK	∩wM)∨%
↓∪⊂⊗ε≤YαεM¬:0≥∀F⊂λ	X4rc!∧fgk⊃d¬ D1∪!'	_bQ(R4⊂λ&6⎇2∃αQe∩⊗⊗Nαj@hPα4q*IpεP)⊃bg'hβE	SETO@~AI∪≥P~∀&U∩N@"λ9∧`)3P
εBαX
∩w∃_
"	_d`$⊃ _βEβ≥`	NTXIT IL¬)1 ε"∧Lh¬⊗
G(∩3JI⊂πiP∩dεTLS1 @∪≥Q→&rAa+∪≥ ∧¬E,@π
 "α∧∧(αP''Sα-P∃I_
α↑M"!αiz∃,MD$-∀wqP@!(S	@ibFEαh*`∪H @
 "αb&BN ¬∧2Hα.p**P3QhT∃∪h
(αi`∀OR@
Aλααε 4D
DD(⊂λ!CE	PUSH @ 1∪!'∧→"2⊃⊃∪@4λ∧$g⊂βH	+	%_
:λiD=4⊂
$λ1P
"T⊂!d"PβK@∪≥≤~∀&¬*N!αα¬D:⊗⊃⊃II@∧D]H εOR↓' ∩ε≤Z⊗⊃αLrR-**U¬%1Q L@3uQ)∀∀K⊂i9,β"A→αgk"SP)⊗$T)h!T⊃∀@
IL¬)1 ε#@!α@
IFL∧Aλdβ↓.⊃Eαaα*J≥!α%9Y∀`*α.q	~pεdiTP*$"H$g ∀ERRU@!P~∃∪
8A∪)&10
 48→Db∧α3U
∞""'i"`∀URN @!A∪&A=_	αR⎇↓α>→∧J0∃%λIB`@ ¬∧PαL@∨'∀@b`@β$%@4λ∀`(α⊂ f∀dπ @)!
A>d!α$XhU∩¬yz$%_Q!P@)3P
,∃≤X
	SEP	4~(∪'&D∩&@"λπ⊃	~pεdiW∧@	;DIS@≠∪M&A&u"⊗JJ-αP (αB(∧ε,λλ_⊗"/[
YDD]T'h⊂ PβS D0A$XA¬_
"λd∧4M*:@hPα-___⊂⊂,,IN@)A	_∩∩m∪⊂~R-∩JVBα@
≥⊂0rd
⊂πdg∃ ¬R
]	∩w∃_
"	_d`$⊂∧j)CE
;8εvA≥"ε 4H~$"∧β∪ti→β#P$SαTE@%I+!(A∃1∪(~(p
mm¬∩⊗NR⎇∩⊗Mα5BA1αr⊃α⊃]⊃.→α
→α&:αK∧Mλ⊃∪hZhπεE∞β;; ALS@≡A∃1!πQ&Aα@9→∨'
↓%%∨HAπ>$)α&9¬⊃0⊂@ ¬εE∩dεTLOS:∪≠=(
*λk¬αbα⊃V
¬ ∧D]T'h⊂#⊗(⊂FXPλ
*LrR2Mα↔ hT_ib∧,
hFLλ	*Tp
1)`
INT	0↔	%'⊂⊗&≥→αRλT∧L@U⊃4J*4⊂
εBαIFN↓∪ ∩MeY0∀≤→IB∧Lh¬∪
7 εE∧H↔&'iQP_X_∧¬

IH
)→Lrt&≤*RhQ!∃≤Mα⊂R*D↔⊃∩*9αdinαDXDISH∪'LA∪≥$*JJVα
@hPα(+β∧∧¬Hα/[∃LD@	;PLπ Aβ
&AλX↓$XAβ9λAA→∪%' h ⊂J∧∧ααα¬EDLU∀⊃	A ∧]dSαTE@%I+!(AM)βπ⊗β!∨&u"⊗HQ!∩αα∧∧ααbβ∩4
:⊂j⊃E⊃,¬g"Uβ PC		;@∪≤β_∞J∩-⊃αRt
5∧0r1K⊃ ¬∧Pλ⊂⊂⊂⊂⊗ 	PSD@bQ_R∩`.t*P~αβQ⊃F⊃,¬P*∩ ¬ .LLπ'
A
_∞∩∃bα0≤tQQ Jα∧∧αααβ∩*
q⊃LEλβ∀D]SαEW .D@d∩lA≠+≥!α6⊗u"& <βH⊂)Iλ⊂
$∩iP ∀OLε~(K!AA@αεαbe!⊃∪@5S∪thT⊃0	)∪βR COD@
4Uh$%@8Yd"∧α1SD	5∀c!ε@
;lp
α⊗β	¬"∧α3Uλ~TU4
Eλ⊃si→β#P*∪β U@'∃$A&q"εJJ-αQαλ→d$dX∧@↔βE_;hAβ%∂U≠≥ ε~>I¬""*λ¬2)@*⊂ ∩NUP	∪≥∀A∪&A%_	α⊃ph ∪[4εh
λα&)P⊂i"P$Sα GOOD SHAP@
A¬dA≥∨.αaα>→∧~0≥-*8R`! ¬εE⊗*dg*∞α	SKIP@
A∂

1 ∩$p∞
∃∧*bRJλεN@-(T∧∀zZB¬$α⊃#!$j∩∧H↔&'iQD@		; @∂∨∨⊃_
⊗Nα4∧`8H⊂
$⊃P ⊂DLS!~∃%
≤@@d!EA8@Fεβ⊗⊂$⊂d∧T
8εvv@XJB>A∧2bAHk¬Hα.p*D∃∩∩*4∀∪r)@*⊂ ∪HLπ+→λβ
∃αα8∀l*λ~2α¬8¬0Dλβ(λP,R70+D~∀&lzP∀*λk¬αbα⊃V
∧ εE∧T*id4⊗ 	PSPC ⊃$∩∩`.¬*N!αLrR-**U¬"λ∧⊂d	pπ⊂)U ae@1'i⊂*RdεT
	PU@' A @2≥αb$iI HKαp4J(3Qq$λβ'i0aP"0dεD FLAGS TO BE RE@'Q_∞J⊗ h ⊂Mλ¬4i∧⊃P($h ∪D(@R∩m!+'⊂ααε
α ¬"
⊗4zJ*	→e$4TU*
λ∧P'Sα F@1@~∀&lzP∀,TλBdMλ∧q¬λβ∀DDNβCAUSE D TLεA'-∩P∀MhT¬$DTλDM≤β24aQR1SDλα_X∃Q→_⊗-CE	MOT¬∩A⊂Y+∪≥P∩∩`.t*P~∧λ1P@!33uHYαP",IPS@!Q→$KZN@$z(R¬<α⊃4HT⊂πf"λ(!P+QdεT
	JRST @	'≠%_
P$KZR"⊗p∧∧$M9Y∃≥~λ¬∩λT⊂∧g*⊃i)*h∃∧¬∃:$∩w≥⊂A∪
≤αα⊃EA\!I@4Ph ∀Li`λ	~α)V-KαCALL XUINT9~∀$@]→∨M
@b`@`⊂∀!Q%E,→jCKPα4q*K@εE∧TdhλBIT \DISH∪'p∩∩`.$JN ,~:2∧Lh¬⊃**U0λ*βE	  500  0Y∩⎇2YL$↔:∧`:λ⊂0j4⊃λ
%λ⊂3HD⊃H⊃I~Tp
εBα	      ,,IH
)!⊃_∩%\J0∃$X∧TJZ∃λ∀jH0r`⊂∀'`	NTER~∀$@@b`@`X@2,J0∃ ⊃↔4`(5h∀λF@
	      ,,TTYD@b∩$p∞ 4X¬`∃@ ∧F "4⊂λ%Qβ↓AAAbbRRf$1H$↔9d-hQλf@εE.BDXEND @∪
8A∪)&4⊂λ_w6,j⊗JI∧jBZ⊗α*"¬¬X∧Q**H∩3	@h"`∩ IH	∨!HbA!βIβ%$A5⊂⊗⊗α&R∧lYXE∪:	XTl-'λ
Y30λ T⊂*dfRd∧O UIH/%<A+∪≠5!,@Ia→∨'"↓∩bIz4*∧β13(ZL∧⊂*Rd¬PAR UIMHLO @+%≠ ≡JzαV&6mαP∩∧α3phZTH∩)@ab`∩A IOCER8 IO@π$r4⊂λ4!Q#@7nh∪(Yαgi,H g"2πPCODE E@%I_∞JMβ$¬∧
)~EJ@λ⊂λ*T ¬, MPV, ILOP.
λ∧vv@XεεNNαYT*∧βSh	Yβi"P∃$ g3βNE HAPPENS ATA TIME(~∀4⊂
6⊗l*JI@!Q$M	α+J:αibjλ-P∞RJPC _Y)!π'βY:~(Lj0≥Q(⊃EI3P
(⊃&εE∧SdπVE D,F@1@~∀&≤Z&B∃∧:≤5α⊂!∧P&gUαE FXP,GCFXP
	PUSHFXP,D
∪≠=(
9αα%DM¬8¬qε∃⊃J"'j λIS SE@#U⊂~∞*α.&2e→αRλT∧d⎇uYu∀⊃0	εBα	AN∧@παA∩b&BNαxC
De⊃∪@4⊂R5∧λβ)'fH* λE IH
)I%+! εP≤⎇(AP@! ∧DDNβ FOR @λb`0A/&daα∞ybDLdλ∃¬∩λiD=4	t2∧β14I~αεE∧∀e`	PE R∩∩$p∞2z8R∧Ld	T`:Q(∃	λ3H∪i@"P!$U⊂+`iH)b`∀
λ¬∪(H$@]→∨M
~*L20∩∧F⊂¬8L∧	⊂3∃↓Q@∧fgUαE @$1∪!'<!E"→Hh ⊂Lλ∧TK⊂"⊗$T)`!T⊃∀@
IT λ∪π¬∪⊂→α ¬E$Dα4U∃m""'b"* @OE@&70A∪8A→>≤
R&>p¬M@ Q)∃"α(∩J*u		⊂πibCE	TLL¬∃αα%BB4∩/
λ4O@∀B]k`iH$j⊂ H( i$U,P"i∀'i∨FBα	 JRSPλA∧
J-*!P@!5∪∪HT∀K
∧Z⊂∧↑+T'←∀DNβP∂%∪Q
A&u"0~¬(X∀"lyiEKxQ!∩∧U*:B¬¬X∧Tλy εE∧U)'"P∀⊗∩`⊂I<ILO>		0↔∪1→⊗≡aα>B-∩ε@$α3sGq ¬∧P∩))`∀IH	∨!∃$⊂∀!~E∀td
"b4∩/	Z∃H∂∧B]`
EMLπ% %¬αJ>R,~QαZLz2εRLz0∪xQ!ααuh→E,(α""'g'←←OP+d U⊂ λAPP@≥⊂}}}~(∪πβ∪∀A⊃JX$#λα".iHαj⊂)T ¬C@!⊃_A%M)∨%βQ∪⊂≡d	∧
¬λY`hPα(∩J*uλ∪*
Q0	)αDX ET¬≤A%A>t)αNIzB∧su⊂⊂βL@∨¬	%λ4⊂λ&ε⎇→α&Bα:∧5⊃J"!↔pU3*∧∀⊂h
λ4p
3βFFENDING↓∪⊂~NαJ%,≥I→t`! ¬∧e∀)j⊂$SαTXIT
~∃5!-∃⊃`⊂M99∃∧
λ@h¬IMMPVP~~)!+%I$t%∧j0≥Q2(λE∃23*@i'FEαe))jλ&bfbT~BEεBαILOPER0∀∩4⊂
&~p∧∧#∪¬K0hPα4ri~⊂π⊂*⊃dεE@1@~∀%∧RJNQ∧J2>Bα !QL¬P*∩$iP H!i*c∃,P!*U⊂ b"Th¬ATE T@⊃=%2A∨_A⊗JTjA=1Q LDβ∀VD
K
λE εE∧PβAIE R,3 $@h
A@HI`≤-)*TmβqQ J∧αTTjD⊂∧f'T)_FEαd RZ R,-DQ⊃⊃Q L≤→_R¬∩F⊂εFλ
!↔p¬)lT←FE∧H%))jλ$f'h∀_@
	HRRZ R,0(D)
∀∪!%%~AHY∪!≥α~De⊃⊂K\9It(Q0	⊂∀ ¬S@)¬%(Aβ⊃	%≥_4(→*%≥λ∩3JK⊂∧jεBαILOPR10∀~):∩%\*0∀"	_d`$⊃@_βE	SKIPA D,[UIMIH	∨:4⊂
Bε∀*JI@!∀∧l@uQ2$λα⊗*dSh iεBαMEMER50∀∪!%% )¬⊃2&:αJ∧$`⊃↔4l9	∀`(αP"i∀'i⊂@5βHATTO DO?
∀∪
β∪≤AHY∪≥%α∩19I∃¬≤~a∪@91H∃	λαP"i∀'i⊂$⊂h("g⊃b⊂ ↔ITH@∪≤ββ⊂→αLrR-**U¬"λ∧q**Q0	,
∩AM↔∪!≤ααP∀lX∧TA⊃,¬P'T⊂ 	F USE@$β' ⊗Bα	DL,D	d`4⊃0	)∪βR FUL¬π)∪=_	04PI↓α**5"∧β13(ZMb"'P!`∩AP @∨+PA¬βπ,A)=∧"∩P4PJ6 =hY∩∧ ___⊂⊂(D)~∀%⊃%_A⊂Y∪!≥α~De⊃P@!4⊂
iR%⊂#,∀⊗∩$kPdjεEαP 
RST X@+%_
P$KZ≤ID¬-≤X∧@→→β*"i∀*h ∀HANDLAR~∀l∪∃%'PA∪≥%B&@ ⊃↔4l
α(∀HUαb'P∪'idg⊃P 	NSTR, BUPλA≤yα↑λ~CxhαB"!⊃,¬P*∩ j∪iH P#"Ph∧U@%∀XA:⎇!α¬α∃*≥ 0β"B(→β"$P⊃⊗≠[@7
MEMER7:
λ¬∪
≤β∪ ∩MeX4(→
%∃Rλ∧K	X314G¬⊃
#!∧e))U⊂ 	NTLOS

αMEMER0⊂@Ph ∀|hj4-λ ↔βE*dfT i≥≥αXUW&⊗α %@!%!β$~)+∪≠∪1_
i@!⊗∩Z@S⊗H∧Z⊂∧df∪β
∃+%≠ ≡J{Q`⊂K∃0IKH	4	~βi'FBαUIMMPV0∀t$bV@:eQ↓-	→U¬0β"Shhβ)bjλ_εEεBα 	1→=' ⊃hJrP∀JXR¬\~84MRλπ∞C4⊗3u*$∧¬KME,⊂&'Th∧ ≠↔PROCEED⊗ \]
∀∪)%'(AQ⊃∪%)dV`∀⊃↔4d5λ∃	λαP
lλ)"`∀URN CORRECTLY~∀4⊂	∩bdzN∃@!→T`:β"dP∀⊗∩,&∪βST		8ππβ+M
A&q"⊗JJ-αQα∩-∩& 4tλ∀`$∧¬`_
λ∧∪≠∨Y⊂∃αα%DM¬8∧⊂eλβ∀D]H* ∂ GLεA)≡I12⎇~Q↓λ:$`8p¬TFBα	JRST @∪≥Q1∪(~):∩%\*0∀λ∩1I@⊂ 	TS
~∃%
∃αM"M %1Q L@3uQ)∀⊂+∪(Yαb`∩`Q⊃⊃↔5%∀→j444H∃	@P ∂NE OF TH@
A→∃$fO&↓
⊗2⎇84(_[∧9λ⊂ ⊗∩h)`⊂C(@R~(∪β≥	$AαXZβλ4(→*%≥λ∩3JK⊂∧jεBαλ
∃≠∃≠$pβP4*>42N⊗Qαi0⊂@"U2)Z⊂4@≥∞α @→HfA7≤Jb
& ∧¬e∧4λ∃"¬y	∀9λ∪1)Yβi,P∀ i$j⊗P"`∩RLπ$A∨
∞VJ∀*⊃ε@KQP@*232)InNH	Hαi→P⊗βS@∪1	∪ ⊃αβJ∧4∃r5	∧⊂∧f&⊃c`f⊂∩dεS@)I+π)∪=_	α∞|"∃ε@KQP@*235j)nNH	Hαi→P⊗βS@∪1	∪ ⊃αβJ∧4⊂5⊂∃βH@∪π Aβ))∃≠!(AQ_
α↑∀JR*	→e$zλ∧∃*(αP ⊂AGE!\]
UIMMPV 4hA→⊂ε2¬]9≠∧)5λ↔
λh⊂dU$⊂&bSdπRY PROTE@π ∩→yb¬4→yD
⊂∧ggλn.FE∪βFF@'∃(@`~):∩`.,r⊃αxd∧L4T	∃%_Q!P@'nh
@ IFN D10 →64⊂	mmβ0λL@u0
)U)⊂ &Qd¬E@$βA""α".hy5Q(λZTStD	1H∃*84H⊃	@big'T WANT @∪(4⊂	mmβ0λ↓_4∧$jλ_VεE∞β;; 	JRS@(αX	5HhQ`≠[4PHKαq3HD⊂∧c'λ ∧10
λ∧vv@X∧hSαh
@; IFN↓λd`Yl~∀`-β0∞d↓2⊂	)∪β 1,MEH8ππ2|∩∀4H∀HZα*`∩N PC
	H@→%hA$Y$4⊂λ&∞J0∩¬%FCββ∧∧¬8α".j@`g ∀↓)≡A≥"&∞4	∀`8h⊃4J)tC"A∀⊂εgk⊃dP ∩0h``@β↓A.~
4"De⊃∪@4⊂sqλT⊂∧g*∪β S@!∃∞&~L*⊃αε~`4(_8∀L@H⊂	,400  @`W$∩$p
α
-!α6Vα:B∧∀X¬p*(αP'cλ ∧ AND R
	 @≠∨Y∩A⊂¬C#β∧∧ε¬p∧h)T∀#∀FBα	MOVEH
Aλαa5@#∧∧εελ∧ ∩$~∀&U∩N@"	→e%Dα5β!∧¬∃∪=∞⊗I@π M≤αr4	@⊂ 	OCIH
&∩$p∞ε:JαVN⊗α λ	→βaP"T)'i HANDLER0≡~(∩A*∃~Qα→x4-∪α""'dεOPE, @→PA∩VαλU∀Lz λ	λ5Q(
I⊃(⊃**StC!∧fgk⊃P)⊗$T)h!T⊃∀@		;PC IN R~∀$∩∩%\*JJ>⊂∧∧9βb"P∩dε DQ'
↓β¬∨-∀R~)\~ε $βλ∃*84H∃i~α$⊂(⊂β @∪≤β$Aβ≥⊂A⊗J∀zIα∞|"∃α→`"pβ"NjI⊃(∃*84Itd
Su5	→β"P&Uij⊂'∪βPλA≠U_
:λ→eJ∧_4u~∧βu∩λZH⊂
$⊂dε @$ααε 4DλBb¬I	u,<αλ∃	λα@
;SP	βπ-&A6
Iα
∃¬*N⊗⊃p∧α∧Ld
DD(⊂
iQi∪iP∩dεS@)I+π)∪=_	αN\JBMD
DD(⊂	$Qd*εE∞βHALF OF R C@∨≥Qβ∪≥~αR"∃¬α~¬It∧$M8∧⊂*Hp∧⊂*∪β AFTER @)!
A	∪M≠∪&X↓β⊂~⊃¬""*	HT5"	λ∀d@εE≥SβF @$↓∞ <h¬⊂)→β)P~__⊂⊂0+<ADR IN WHICHTO @'Q_∞J∃∧*JJ>⊂∧∧9βb"←βE	PUSH@∀A→→ @2∧J0≤≤α3TaQ@∧P)Rdh FBα	  JRST ILππ∀λ4*&|~⊗I@↔!∀l@uQ2$
K ∃KαLZ %PIIOC
∪∃I' ⊃αLrR2z1P@+ ∧D]QdεD IFN ITS
∀~(⊂⊃n∞@r&uDλ$Dt⊗→α∧≤α∪RVα DTYI1 CHH¬∩d~(~(Q#3@7h∩3JHαi)*T*⊂#)∪βI I/HεAπ⊃¬_
:⊗`p4	@70∞d
⊂Q4hYβ*&,H'`∞LY TGO KINDS ARE HANDL@λt~(p
mlM"ReαLrBVQPB&5HZ%∃-λ¬λλd i5,h"bα
∀vβY`_MJK∩∧⎇X¬∀
Zα≥∧U
&gi"
∃↔εEβ@
CHNI@
(T%≠⊂≡Z*α→2→bE∧∪β"A→αgk"H ∧,IPSP∂λdαB→$↔8t-λ⊂g∀ ∧ @)Y_
α→bDZTU4
D⊂R5
1 ¬∧fSβVE R,@
1 ∩w
E↓α6εJα∀*	→b∧
λ(∀"¬8¬⊂*HαP$cβA	SKIPE G@π
 "H%mααy∃$Dα3@_xhε⊂)Sβ BESTORE IPλAβ9λ⊂∀(Jα6 =hT∧5E¬Ht8T∧ ∀B]P ∀HEHA¬*N!αM"MαyHB¬4→JT(hαB4
Zp∧⊂#⊗(⊂R		;REMEH¬HXA!	0A∨-I
→>8∧∧M≤βIu∧λα"c"T)"b3αOW
IFN ITS →64⊂λ&6⎇20∩¬%H@hPα03HD∀K⊃↓⊃ ∧]iλ πE@)LA→><*N@"λ∧q*D⊂R5↓Q@∧`g⊃!`
 D,R∩∩mλA∂Q&Aβ→0A∨)⊃∃$A¬∪Q&~(M~.&B*α⊂(αB(¬@)j`∪ET [.SIIF@!%$X@2%h%nBαZB∧hε(	@j λER BITS BACK (THEY'RE D@
I%⊗⊃Hh ⊂LYzd*∧EJ hPα2QHih⊃⊗α+1		8π
∪≥⊂Aπ"r0∀3λ∪JYαa"iβE	MOT¬≥&AH∩∩%X∧∧4⎇$
4`9αbP(⊃dεDING
∀∪¬	∩∀
"c#1⊃∪@4⊂∧g*⊃i)*h∃⊂!$jβE	PUSH FXP,R		8π'β-∀Aπ"r0∀3λ∪JYαa"iβE	SKIP@≤AH∩∩%\~"ε:t*1↓Aβy|4!∀∧U∃8¬_d ∞I2		0↔3∃&P⊃ααI∧M~λ8∀`$⊂∧ h∀ ¬N IL∧A'%∩ε 4xT∧84q4aQ@∧ieRh ∞ CHNTB!$R$KZV 4zλT`$⊃⊃5I_q(∂gq ¬∧Pλ↔+ f∃b@		;@¬+(A⊃_∞ 2z@@⊂ε'kH$g ∀DRRU@!Q&A
∀r5α∞dzN⊗⊃∧~"ε8hR≤DβR,)π@∧W!Pd∧LS@π')αP∩∩@.<*QαNαH∃%-4λd`:H⊂
$⊃P!d SαNEL
λ∧∩@]Yβ⊂∩V(h ⊂L→`DJ∧EFs 1 ∧]cQh∧ ITS @∪≤Qβ%≥β0A!"M~&∞εbα∩-i_4*¬K~∧(hαB4i94⊃(λ@ε@
	 @πβ∪→∀A⊃1⊂h ⊂J∧ε*JNαD∧9⊂π$ZCE 
;¬L¬λA∪→_	α~J0hPβ"R(iH⊃_L⊃b→0,[
λMH∂-
↓$Yλ~(∪!+≤Aα5λ∧
∩j,dBDXSAR ADR O@≤AM)βπ⊗4⊂
t⊃↔4,@Q∩(iH⊃_L⊃b→0
IFN ITS,Xε~(LBJJ@$λBd≤α∪Uλ∀)∀FBα	MOVE D,TTSAR!λR4PBR2hT∧"eJJ3e%↔a⊂K\α1H	~α∪iP∪αOT A TTY IH
!-!αεJ∀
e "λ¬q∧λα'g'Tλ
∀∩↓)→:*α⊃2R%→r&=pH%nλ~d*∧α3Eλ~TU4
D⊂r⊂*$⊃∩4jλ5⊂r∧
⊂0SλQ ¬∧Pλ%))jλ!`λNH5	∩vβ'⊂≥αU*N@"λ¬∀H↓`j⊂ TP"g"∀ πF@+8@Q%t!0∩∧(⊂∪HIpεP!R g&∀βE	.HTYIC R,		;TYPE 0 @∪&↓))2A%_
B⊗αAP@!(∩TJ:α⊂!d∩αI0→λ8π)&hB0∀:λZ%∀⎇$	u∩¬9yT-∩∩3HtλεP$QdεORE
P~∩m⊂~⊂∧J~9αM"L4!Q$L4dλCαβ⊗c!∧j)'⊃P)⊗~__00		0↔∪_A≥∨(β∪⊂~R-∩ ∀Dλt-λ⊃TI@fP ∃SE
∀∩↓∃%'"α≤DβR6A⊃,¬bf∀bP ↔D HAVE ALREADY
	H∂+$~"Iαβ4#⎇hβ"B)→β!d)∃β R
SA$	TRO @$αa⊗@%λ:D`Hα.pi@g*)'S& 	FY T@⊃
↓∞"ε∀
≥$X∧C!!`λNIX∧t4Uh%n⊗t!α&~p∧∧#↓Q%≤
T	∀4rλ@&¬q@_⊂ g"∩P)⊗→Mβ	0↔≠¬ Aβ→0Aπ"
∩Mα→jD`4⊂p
)∪⊂!d T a`∀ERS
SA$	ANDI @$0h
@;qQ M¬X∧r∧λβ(λP,R	∩wMβ ~∃∧J0∃$X∧TJZ∃λ⊂iλ4P0jHαiεEαh*`∪H @
 "αbRP$KYαε: εε %9t¬% Q!∀E∃+$¬%"β →
 εX@ $∩∩`.4*R∞∧λ4DihTb∧βP
fPα@$~(∩∩$KZ~>I∧!5EAbαR"~4∧M~λ_E∩∧βqH
84C"JJ⊗2,'ε@
IT$	H@%I0	αR ¬D9⊂π ∀B(TT)
λ∧∪⊃∃∩`∩¬J@
J∀p4E
∃
#!$c'1_X∃b_⊂[
λ∧∪⊃∀aαRQd10∀≤α⊂3E
∃
"'g'k@ GET CHANNEL #
	H@→%i~A)(αa5I"5BA$↔9T\T
DD(⊂rλ→β'"fλ'*fa⊃i⊂!gT)"ajλ'`∞ TH@
A≥"ε∞1Q%hHα.q)@"⊂$c∪α D1@Wλd`4⊂λ&*≥↓α"β∃∃→0rα!↔qq5∧λP0rd	3P
"T)*`⊂T @
≤A%_	αHhP&Bz∧∧5E¬JE @ ¬∧e∃d¬PE R,CHNI2∩∩m_
V2bα~V:≥"& <βH$	1sSj(αFE∧SdπVEI @λXQHR~(LbN!α ¬Bm≤XyD`8c"B)Yβk"P⊃⊗)`∀(D)~∀%)→:pε⊃2~β↓P@!(∩TJ:α⊂!d∪αI4
	H∨-∀A$XQHR∩%X∧$5,h:DL@sH@→~h⊂ _i4∧'*SF@
IFL∧A&%→.NεLa2l4PJ6 =hY∩∧
∀E⊃ ∧]dQ⊂ g,H'c⊂*∩ ¬ @'U!%α[¬'π&Hh ⊂L→hD9(⊃⊗
 εX@ $∩∩`-∧j0≤$α1R(ZH⊂R*Jh⊂4H∀∀q5∧	3H∃	λαFE∧SdπV@'L@Q
E↓$$↔0λ∧#*g!U$gg", @∪≥M∪'(AQ⊃β(AQ⊃∀4PJε 4IP
∩bα⊃V
∧ ∧D]H!`∂RRESPONDING@¬∪)&↓β!!¬$A&ph ⊂LYze≥~¬λeEαα""'P*$"H!`λARACTER TYPED.  SIH∪→¬%→2X4⊂λ&&⎇⊃α"EλeEαα""'P*$"H)`fbλ!$j)H)b`∀ IHA$B∃αHXe"∧α⊂3λaα@
	TRNE D, )0βb6@$∃85$bαu∪j¬tqU¬:qS∂A↔h∪1(→β⊂ ∀HAPλA$B0≥≤Tλ$M∀h∪*Zuλ⊂HT⊂πc#α
∀∩↓∃%'"α≤DβR,AQTεDDNβENDIFN ITS ↔'¬∪⊂⊂4PJε 4I∀¬∩c⊗p
aQ@∧fgUαEI D,TRUTH	∩w5_∞>yx%J¬99∃α∧9λ∀L@H∪qD
v4uλYαP$g∃)FE∧PβAINR,↑A		;↑A	(SETQ ↑AT)~∀$A⊃%%i~AλYM∪∂:`4(_8∀L@H⊂	⊗↔!DD]W!DT)Qh∧Q ↑D @≥∪0R~(JαN⊗RTiα<8x∀=@εE∧PβAINR,↑D		;↑D	(SE@)DA0~⊃¬!$4!∀∧E∃+)R∧λε#aQ`ckεBα	CAIL∧A$Yy∞∩%]r≤%"βhrHKαpλjRh∧
	 JRST C@≤]≤~∀&≤
& 2λ∧@⊗↔)		;↑R∩QM ∩E¬rIαQHh ⊂J	
%∃TTλBe$~
u∃ Q!∀823@~%↔P
∧B]o ∀	(SE@)DA0~I∧r& "⊃Q J¬8ZE@)(⊂
 T+i*εBα	CAIL∧A$Yy(λ$↔;e !*⊂	bU(P ≡W NIL)
∩AM ∩jhεRRf|2_ (αB0h→3H∀EKβ+DDNβ↑W	(PROGH@Q'Q"A=:αQ$Q!∩∧U*:B∧≤βKUa⊃,¬DPλ⊂⊂⊂⊂λ∀!f"Pi⊗gjU(*`∀T))
	CAIN R,↑X		0↔=`∩Q∃∩0≥∩∧z∃,ME⊃β@;T∧⊂(UdjεEαP 
RST CN90⊂∀!_4Ld
"e@VB"'o(
	CRAP OUPλA$yα$JAP@!(∩TJ:α⊂!gαZ~∃
⊃≥∩dβP&NV⊂ε~bAe⊃P≠ααlC!∧e))U⊂ 	N∀XIT
;CHNI0λAπ!_
%Rλε≤DβR-$λp∧'$N⊂!d'∩X∧C CHNI4H
~∀4⊂
∞	i∪#Pα4∪j∧⊃P( ∧		;R@β_↓→∪-
↓+'⊂ε& 5HZ%∃-λ¬_j3Pu	→βgεEαh∧RO D,40000 		8εd\@J↓uyααJEJ∧α3T
Zα⊂$g∃ ¬RRUPT CHAR~∃
⊃≥∩i∧pλ&B⎇↓α5α∀
!αE∧d∀&⊂",@π⊃: ⊃"I$hP&N9~∧*∧Yj$,AQ J∧αTt∧
K⊂r	@$Z!Dα]a i⊃⊂P∀'∪βIN@)∃%%+¬!↓=JK∩J∧βt@∃	Sr3JHαi)*T*⊂ ∀$~∀%α@A!-~")α5BA1∩M:ε&PKZ≤IJ2¬,~:DZλ→d"¬99∃¬~	_b∧Ldλt1 ¬∧Pλ⊂⊂⊂%∀)j⊂,∃dg ∀		;RUNS U@'∃$A&q"εJJ-αP (αB2J*uλ∩)@*,$jβE
IFN ITS(	6~)∞"i⊗S@!2⊂	)⊗α D,CHNTB!$R$KZ≤DX92∧⎇X¬λλi3⊃(λ~TP6!Q@∧d)∀-⊂",TTSAR(@λR~(∪'.Mα0∩∧iud,@t
⊃¬⊃ ∧]iRdh⊂$Q⊂"g"∀ cbc∪α
∀∩↓∃%' ε≤DβR.↓Q@∧fgU;@∃∨	∪⊂~Q¬"Rf&≤AαRRLJ≠λβ"C!ε@
;↓∞>YXT`*λ⊃Sj$⊂λ⊂iλ3Qq!Q@εE$Q'⊂%'PαQIO,Xε~(hQ`≠[4	∀`*⊃0	)∃h*⊂#∀'`
 IL¬
∀J0≥∩λ∧∀I@abb*T ¬(@&$~∀4TR0≤∀→jC@!33uHT⊃K∩)@*("&βE	MNT¬
Aλαb&BNαxC∩De⊃P@!33uHT⊂K⊃K
β"B*9p∧h"H πCFXP	∩w%A&pε≡
DλeEα	X∃J∧(QP@!(∪3j@"P#,∀⊗#ac⊗(∧D]H)a`∩ETπλAU ⊂∀(MαVN∧λeEαβ∀C!∧fgk∪α R,D
∪β9λA$Y⊂∩∩%]⊃α<X¬∀d	⊂πkbTh∧ @'∃(A¬∪P~∀&r∩∞TλBe⊂α".hD⊃q5
4⊂3∪∧	u∩⊃*$⊂R5
1 ¬∧iRdh"P⊃¬∀∩X
NVα8U"¬5j4LLh∧∩*%λε".B]h ∃T AN@2↓_∞RλZ"∧∀~J2∧∀_92αEIλEJ=(T∧$1Q4J(αb∀FBα	MOVE D,R
∪∃→
≡Aλαa ∩[⊃Q L@3uSJ4∀B"!↔hεY2 8λA∩↓a↓V⊂!Q@∧ieRh ∞ D,JOB∀@∧VdbαBI$Q!ααuh→E,(α""πg'P%∩βB ARRAP∩}|}~(LBJJ@$
"e%J8∃∩DA⊃P@!4rr*	H∩KI→β*#∀∀∀@
λ JRST IN@)a∪ ⊂$KZ0∀z	→e$4TU*
λ⊃U)@!j$gSα  ~A%∂⊂~>∀!α&:αHE∃∃X∧∃↓Q@∧fG∃αS@∩A⊂XQλR4⊂λ&R∀yα"F εελλ∃O→∃%↔∩dεTF+1>~∀!'↔&∧:∃α↓Yj$X3β"A∀⊂¬)hλ)⊗!d∪αI4Cλ	;GORP! (NLπ∪≥$"JJVα
B¬"α#"A∀λλ
¬-9	"∧T∧(⊗	$k`d∃∧¬
	     JRST XUIN@(4⊂λ&*∃~Qα→bEDMAQ h∃β""'bg"3βF IFL∧A*|∩& 5AQ hPβ"C!ε@


α0⊗vβYαRR≤
Iαxd¬%%∀	∀`*∃0
⊂⊃$f"P⊂i) lH$g⊂*∃↔
;8εvA∪9!+(A%_
R⊗α*%-¬Dλ4D
(_5$4H∩)@⊂)↔εBα;; 6β%⊗R-∩0∩∧_HE∀4p	P∩`ε D8~∀`-Xπ2¬∀X¬∃*)Th∩)@*"`∩RUPT FUH
π$J0≤r	→b¬∩aQ h∃JK∀L≤α∞C!$j∩∧U) 
 R, )0βbR>A]~~18∧qJEpεjO∧XFOL@λ@@⊃0∩l)~B∧≤α⊂$A⊃Tp ∩α`g"$λ)⊗≠@70ε~*≤	∀&R∃R0∩¬%DU%CH:Dc@B".dλα'kgλ* ∂ 7 IF NECE@'Mβ% $hRN¬∀Jα*JNαD¬%%→_3λhαTp$Q0p2(T⊂K&@[FE)PR@	 TRZ @$0b`⊃@hRRRfL→EH~)u"¬%ESλHα.piHαk"iλ i) VP aaQiiFEα`b"$λ**⊗#⊂α.BUF(R)	;I@
)I%+! ε~:M∧
J*	→bα∀*Xd44HC!∧d&)λ)⊗∀*∃∀@
λSK@∪!≥
A∧~(∪⊃%%hA$XQQ(R$KZN&≡pε∀MD	t2¬$λt-∀h⊂iHα`i"Q∧¬
	JRST (D)~∀_wπ≤αrP~∧9`J@X⊂!gαZ CN,¬4`A¬→) A
_	:@$λ∀e%∧λ4`%T¬⊂!RdY$P⊂βP	%→≤Aπ9uAα∞ehr∧≤βKQf⊃ ¬εE∀h¬BTTL VARIH∂+~αNfNαHTj¬JK∩∧Lh∧∃*D⊂r⊂*$⊂∧g*⊂i)*h∃⊂ λANDLE@%LXλ (!Q$9KP@:	HRRZM D,TTYOFF		0↔∪5≠	∪¬)∃ααJEL@qQH¬β+TFBα	P@+M⊂A
E↓2P4PJBVN@∧∧5E¬JE @ ¬∧d∀)(
 TT,V%TYH∞~∀%≠⊂≡Z*αQ2ε≤
I"R ¬⊂HPα5∪	@'⊂ ∀,AS ≥
%_∩%βZ'MβLεBε
λh
-L(⊂<N0|←FBα	  JRST CL∧].`$∩@v@↓_=Dλ	
⎇Ix
⊂→4π i@PAChAα3 "⊃Q L@3uQ$
∃∃
Jp4@∀∃*⊂	
	P	2t)αRQe"RMr%Ix$∀π4L4dλ
.DβyP ! TTY
λ∧∩@AA+'"Rα~bAd~2J=_I↓m↓∧
2NtλD`4λ∧!f⊃`i⊗gUh∧P@+PA(@$hR≤rh¬`_∞α	POP @
 "αbRP4PJB>A∧2bAJAP@!2TTjD⊂r∪I⊗@εEεBαIFN@20,[
CN90	h~
U≤Bλk¬αeAQ M¬X∧r∧λβ(λP,TT
λMH∂-$A(@2≤q0∃S↓⊃∪@:Q0
*T'⊂ ∀O SU@!∃%∪∨$αQ≠β2↓
∃αL"∩Q⊃Q L@3uQ$
∃∩)@*("&βE	EX@π⊂A ¬DM¬8∧⊂e
∃
#!∧fgk⊃d¬ @(1∞9:β+hPα4∪j∧⊃P(**εEαh ∂P FXP,T
∪∃I' ⊃α≤B0∀K!⊃∪@83∀∃∧HβP ⊂RLππ⊃&~(hR≤rhεLπ∧d f∃ ε
ALTP 4%∃%'"↓I2α≤q0∃UβQ%hKαq3HD⊂∧c'λ ∧20
λ∧~*L20∩∧F⊂¬Kc"Pi@↔(
:	SK@∪!∀A$X])
∩∩ H%nεuIα$J@λ	→β⊂!gT ¬?
	 @∃%M(@@"α%⊂hPα16	~α⊂⊂⊃,		∩wIβ ∩Vα)b¬$βh∪)@g$j'T⊂ 	F L¬≡A	⊃(XAπ=_
Qα≤z0∃$α3E(Zc"P)J∀λ
∧R))`∀ @π⊃:K⊂$%8∧∀I@abbbλ'`∞ ALTP$G
P~∩m⊂~⊃∧J~9α ε∪"C"I_SH∩*Jhε-FBαC@≤]hpλ&BαZ4B∧hε∀¬J∃α"πkbP'⊃bb⊂'SαE AC T@≡A!_∞2⊃∧~"ε:t*1αjYT(4C"A→∀TVD
∃&%⊃P(
F@
	.@πβ→_↓∞.⊗)⊂hPα(J@ f*bCE	POP F@1@Y)(~(∩P~ZbV∃αβ8∃≤≤α6HGFq⊃
Cc"WQ ¬∧e∀)j!R'$YεBα
∃π-∩e∩t!')44⊂λ&NMB∀MDE∀4q5@αE∧Z__⊂0,,TT
λ¬:$KZ⊗ 4D	∀4r	~E_hαC"Hj)&#Nα	H@%I_∞%α ¬Bk_⊃↔5th ~:αa),∧¬
	PIPAUSE	∩∩m	∪'β	→∃ααI∧*∧α3Eλ~TU4
D∀piU ¬M FLπ$A≥=(4!~4-⊗S ~Yβ)"`T∧@	;CL@β$αα ≥-Dλ∀dbλ∧uλ_p¬bbλ$g ∀ERRU@!Q&~(M~⊗@%)PL@U⊂4AQ@∧d)∀ ¬M D,IN@)→→≤4PJN.~λR∧tz~TMα".i	uh⊂h→β⊂''Th¬IT↓
∃αtz0∩mαQ4I@←FE$U⊂∧	 .LOSE			0⊗A5β3¬
↓)⊃
AU'$AM∞J⊗αxT"¬X¬P@)1S@_ε,
qε&λε⊂$⊂d∧T
	JRST C@↔∩@∩∩`.¬∩ ≤≤X∧td
⊂∧"P⊃'i!bQ⊂(jdU∧¬

@π≤]CP&N9~∧
∧EK2kW""πbi))Qh∧ABLE  ⊃<`RAβ+%(⊂∀*≤q ∀;!→¬∃∀y∀∧"bβ(DB]`	MMED@∪αQ
@@"p9%αε,JP (!~4\MλT¬,@TQ0)AαE∧P∩))`∀ @π≤]∞βλ$(~8U%TT	∀`*⊂4B!↔p¬df∪⊂ f&λ$g ∀ERRU@!Q&A'$
≤\X@
-Q!∀E∃(YR∧λε$g∃ εLG
λ∧∪!-~")α5BA1∩M:ε&PhP%αN\JB¬α ¬E@8p¬dX↔F@
	  JRST C@⊃≥$d∩%\~ε 2z@
¬∀x8U≥~λ∧5)~α⊂''Uβ
∀∪5_∞@4YP"dα4∀jλh∧#∀B]`	F @πβ≤AE+∪(A9_∞]Dλ∃∃∀→ht*∧iz"¬≤X∧UHZ@εE∧R))`∀@π⊃:K⊂$%@4
D`4∀Q5
ZSH∃	@P 	NTERRUPT CHE@π↔⊂h ⊂hαPsE@#X]∧Tbj-&H*g ∩DAR∩∩m↔∪→_↓' ∩ε≤Z⊗⊃ααYe∀03λ	→β*"i∀*h ∀S
∪a∞!α ¬E,@TPkHq ∧]bS)bP)U ae@5h⊂ gλ*g ∩DAHλ~∀%)%≥
↓λXb∩$p
αz8ε0≥∩λπV∧	3P
"T)*`⊂T
∩A5_∞@4YP"eYj$5β#DDNβD@∨≤α:QαHZB∧
λπV∧λα 	SPLACE A ↑G
λ∧∪∃%M(Aπ⊃9∩d4Ph ⊂1nJ,
2∞Ix4Z¬*Yd9α ∂CK RCLOK1 FNYIN@(β
≥ &LqAαJ≤b0≤[!Q hPβ"R(iH∩5
5α-FE∞β;; REAL TIH
A¬→β%≠
→∨π⊗4⊂λ (*(T@⊂s∪he]εEαd¬OVSI R,4000 @∩∩`.≤BV@"λ9D`8p¬P!⊂a` OF@~∀$X
J⊗bQαI`h ⊂LYzd,Jλ∧K
∀∃∩3(Q ¬∧e∀)j⊂)⊂βL@∨⊗βλ4(Q'3@7h⊂	*SαT@∪≠∀Aβ→βI≠π2|~,4!Q%∃,h9D`8p¬P~
λ∧∪≠∨Y∩A⊂¬E
%*Ye$LXQP@*Ps∪i6,¬∧fSβP
A_Y∪≥%α∩04PJ6 =hT∧"dhε∀↓Q@∧ieRh"P#PβFP⊃4⊂λ%αlzP∀(⊃V
¬⊃pqK
β"B*
4r⊂⊃,(⊗"βE	SKIP@≤AYβ⊂∩ε∀j≤dβpra↔p∧cg∪βRE IF THER@
A∪LA≥≡~(∩A*∃~Qα→jEDMA⊃∪@4⊂3⊂*)0s∪heP#*SαCTIOL∧~(Lj0≥Tr(λEλ∧ ∩)		0↔)e!∃↓α¬B¬≥X*EM∧Tεα∧M4λ∀d
)X4d|91P@!4rr*	λ⊂
g∀ ¬AL		;SKIP @∪Q≥∨∪9)⊗J∃*BQαα@
!Q@∧P%∀)j⊂)⊂βL@∨⊗β⊂4(→Yu (3(⊃¬J3P	)∃dε-@"α"JV:αI∧l*λ∧@∀B]i`∀A@π⊗A-↓α&:αHU∃∃X∧∃↓Q@∧e)∀h∧ INTX@∪(4⊂λ4)_d`$∃0	bS ¬S@&104(ieLLh¬∞A→αgk"H ε,INTPDL		;COMMH∂≤A!β⊂~∩d*Iα~⎇⊃α5YieJ∧α3Eλ↓i)*h∃)FE∧SdπVE D,F@1@~∀&≤Z&B∃∧:≤5α∀β!∧P&gUαE FXP,GCFXP
λPUSHFXP,D
∪≠=(
∃αα%BE∩⊃Q M≤αr4	@⊂⊂λR$~∀%∧RJNQ∧J0∃%	~@HKαq6	~α⊂$cλ''P*Tbi⊂$⊂dεDLERλ
∀∪!→% )∧!2HQ!∀821(λE∃21JJ∀B"'ih"aR`f⊂$⊂a` FLπ$A%"e -(ZE-∀aQ J∧αTTjD⊃SV)→β_εEαd))-λ)⊗$h∀h!T#
D@	;GEPλA∧→α>→∧J0∃$X∧TJZ∃β"A_p21$
K∃⊗)_p3α↓↔p∧g*⊂i)*h∃ ¬DFRO@~A
β⊂~>tJ≤D	∀`*∃0
⊂∃βAIT|~∀%∧~ε&9¬⊃2RfL~¬DQ!∩α∧α⊂	&∩P"⊗(I$g∧D∞βYE@&0Aβ%∞β)≡A∪9(A
,qα&Mα:& 0Q!∀823@~%∃⊗2+λuα"'`g'j∩ ¬R CAH
≥∨9∪πβ_↓!→βπ∀~∀%∧BJ2∀λBe
I→`hTik∀L@Lλ
∧∀e`	PGE ENRAAL
	 @∃'@A$Yπ!_
%R_@%nZZ5"¬8¬⊂(eP ∃P IF UL¬%β0∩∃ 4HI`≤,h@@8H∩1I@⊂*`∪EL@'_h ∃∀]	0↔9λA&4qα&R_h ⊂c]_Z4L@L(∃)~u∩`_H*dij∩Y⊂ ∀MDAMI TMDAM2 QMARK

λ∧⊂∀'0∞gP)`∀A@π⊗A-↓α¬ααZ4-∩	→e$4TU*
λ⊂d∩a`λ MUST BE DELAYED8~∀`-β0∞dλ4Qu)X3P
 IS IN @λAβLA~>⊂∧¬,Lh¬≥H$j⊂$TP)`k⊃b⊂$gλ* λE IH
)βHA#+U
P_Q'3@7h⊂4j:αfbiH εREE USE LπAβ
∞@,X¬3λ~α ∂R↓$\4SY`≠Zλ∧∩$	3P
"T)*`⊂TS @≠-~Qα
*α∩&N∩2,D⊂λ$∀ εE∧KαSEE PIOF
λ∧⊂∀*L*N&9α⊂∞A~⊂πh⊂∀⊗*diU eDDNβT@⊃∪LA∪&A∧A⊃>∃∩&
2*α≥∀x90hSαp
dTh∧AKh@`~∃U∪')⊗β	`⊂LYzd*¬%I∀`*⊃S⊃a⊃,¬dcλ+bP T ¬ ABLπ ⊗Q¬"0~¬~Y∃"∧→k∃ 84∧VεBα	AOJL R,@UIS@)¬⊗∩%X∧¬$DY`λλitQq*D∃∩⊃$
p∧'f⊃P*$$Sα@∞~∀%β⊂≡M¬⊃2&:αH∃⊂@ ¬∧aPdf"P∀⊗ INTAR
	 @∃%M(A)≠⊃β⊂⊗$HI`≥∪sh	X3PP⊃ fg IH
)I%+!%_4(→Yu (αP ∩10
@#∧∧εελ¬f$SαTAR4bP⊃I→e$
%9DL@U⊂4EVTεFE∃di`∀K2:∪!= A$XDQ$R~(∪ ∩IhR¬∩F6s 6mmc!∧P%)∀h∧ @+%' ∩4∧C!∧fgk∀d¬ D1∪⊂~R
⊃-DQ!∃≤-IyR∧Lh¬⊃IHβFE∧R))`∀@UISTAK

λ¬)6$
6%@!~4\M	`λλxqP(αDX@)=_
αX→eJ∧H→T`$⊂∧g*⊃i)*h∃)FE∧H%))jλ* 
DAM2~∃%% A@¬Be]¬Hdeαβ⊃V
¬∀pλ.CE	MOT¬
A@¬D<~≠↓P@*⊃0	&Rdε~∃Q≠	β~β⊃`⊂@ ¬≥DS ¬RR↓0∞N≠λ$Mλ⊂∞*∪βH∞A≠¬_
eα$*~-*(T"∧α3UλZTU4
Jh7↔!QR1SD	5∀kF@
	.T¬β→+∀A7β'
∪4AcPn@$βsh	X3PP⊃ ¬FERR@λA%_
R⊗α*%-¬J31<≤βsU	→βεE↔,¬~∀$X
2z8PhUβ""'bg" LπA∪→_	α~J0hS⊗∧@L@u0
)U)⊂ ≠ASC@∪4↓9)>zα6ε:β∀∧$1Q4J(αb⊂$SαTE@%I+!)'q:~)λεα LXε∩*D+β!_X∩∧R))`∀,∧Zb~(~∃∪
8A⊃Iαb`_hαB2
*Sr(ε∃α-`iPβIP∀Ap~∀`>&{=β7∞seβ∪,∧f ,<Y0∩λ4p∞tep¬ekaβ#@_hαW↔!Q@∧d S*#εE↔D@	;EL¬λA∪→_	α⊃⊂εhPβ"Nj_α`i%H⊗VP*∩ iP$TP λERE SO @¬β↔%∩ε∞∃¬:&$βλ⊃I→β"⊂$U⊂ iP∪ i`∀SP¬$αQβ%∂≤BBR~)#⊂⊗ε∀Y`⊂LYzd,Jλ⊂
→αFE∧T'h%⊂∀⊗εEεBαβ≥h ∃RP@∂%¬αB<⊗X∩¬¬λy∪~¬λ∧⊃i⊗αP ⊂PGI6

~∀lp
mαα
U∀(⊂λ QbP ∀RAP HAL¬∩HZ hSαh
@; C@∨≠∃&A"-∩∃α↑M"!αIz4L@Qh∀λP 	ND.~∀$X
N⊗*α6⊗6-∩H (αC"J
4T⊃i↔@εE$Q'⊂"10*0_bαjNε&cq2l4PJN.~λR∧\⊗⊂
↓α@
	 SH∂'ααα⊃2~
5∧~α⊃J!∀λλ∞iX2q(
λh⊂λ'RdεT TLεA>42⊗ 4I→d:∧α3TjJU0u	_β`∞
	  @'-∪!α~(∩@@A¬_
$∀λBbk⊃Q%hKαq3HD⊂πc⊂∩c'⊂"X⊂
<1-SAIL>λ
∀∪
β∪≤A⊂Y')#A+$4PIα*J≥!αBB<IT4*
∧<KX⊂∞AQR1SD
⊂1r)@#P[
λ¬≠βπI_∞2yzα∧uλ¬4JJK⊗VJ¬λ¬⊗∧BP⊂⊂≥VαZP MACROS @	
%_
∃ααy∧
λ⊂λ&⊂ab`∪ HAVE HANDLARS
]	∩w∃_
⊃αL20∩¬λ_tL@Qc"A→U34λx(⊃⊗∀*i"i∀∧¬
PPGI3 44⊂λ&"α*$j∧EI∃¬≥λ5∧2Hβ"B	*Tp
⊂∩`εTXITλ
∀~)!!∂∩Tpλ&"α*%@*h⊂"!⊃(λ@8StQhZα⊂&"Q*⊂$ S ε
	@πβ∪≤βαP∩Bαy∀`93P
∧BP⊂⊂≥PαINDIL¬∞A∪9)⊗J∃*BQαLr"&
M"MiαtzJ6εbαBVJ%∩ε@4PAα*J≥!αBB<IV∧Q$ααα∧¬↓αYzd,@(⊂ ⊗∀h∧QLUX∧∩%α@w%5⊂⊗
-⊃α↑	_4B¬h→E,*λ8Tdbλ¬q∧
∀R1(D∃∪hλzSsRaQ@∧fgUαE D10∞R~*∧
⊃+	@$f.FBα	MOVEH
Aλαa"NAHh ⊂M99∃∧(⊃phk∀β"A∀λπ+ S*bFEα`giP∩h)`⊂C(@R∩$p∞∩y`	jD∀Q5
+(⊂
$⊃P OSIH
∞A%_
NR∃*≥$α3sD⊃ ¬∧h∃i`λJ FXP,$IP∂β∪P∩w2-!αNB$aα<X¬λλ`jcd∃⊂*`⊗Bα	 @'-∪!αAPY')#1+4$KZ⊗JJ⎇⊃α"εp"2-$
t@U∀h	Ipp5	→βg⊂$Sα T
	  JRSPλA¬*J-*!⊂K\α3U
@`dj MAP∩AM↔∪ ~)!!∂∩Xpλ&"α*%@)(⊃⊗∪αILSETQ∩∩m)%∪⊂A)=¬αV@"λ⊂
(3∃1$
∀StλZU⊗(	@g⊂'$S∧¬∀∪)%'(AA!≡%_h ⊂hα@↓Gu23*λ4H∃)→αdf'H*dfk∀'P ∃IMH!2αV&~≤b%αVL26εI¬*&~R%⊃αV&5~fMαu*& 5F⊂λ	@*dg*∧¬∀~)' ⊗
%"0&Vα8U∩∧α3UλZTU4
D∀Su*I3Q4aQ@εE≥Nβ; @+M$A∪9)⊗J∃*BQααK∃∧4h⊃I@i⊂'"UβIO
8εvv~(p
mm∧20≥∀T	t2∧~(u,@13U∧
⊂πP*RdεT (AH	'≡↓' ∩z(T"∧α3@~I⊂∧iP⊃'i&FBα;; 6β∪⊂→αLrRεIbα0≤tK∀¬ 95∩→λ3∃Q*4∀p`T("b; W@⊃Jaα%α$z0∩uλ∩i@'kT]βE_;l~∀`-Xπ0K@VLTε1	AR@∂+≠∃_
Qα4zIα→jD-∃*Z¬"∧h¬3Hj 	ON
0⊗vβX%I9β⊃∧L2∧∧+∧
t⊃0i_R14dλ(⊂
*⊗P 	NPUPλAπ!β%βπQ$A∪9)⊗J∃*BQaQ#@7nb"(~Qu3(Yβ*⊂$TP**,H$g ⊂UT FILE ARRAY.
8εvv∩ d\`!hε"`&α35*:α⊂!"H-"`∩O,∧~)Xπ3@1 ∧Y.3(
b\βλ&∞λ~$≥HZ"¬<α∩0i∧⊂p5*81λ∩)@*"`∩RUPT, AS
;8εv∩∩%%⊗ε ε∃J¬i∃%L_5bα¬I	∃~∧β06$λQ(⊂$ε,K@⊗PαIT
8εvv∩$∪π"
∩ε∞R-⊃1αεt!αNt	T
J	λ∃ (αP ∀O BE FLπ⊂∩∩, 4)@70∞a⊃ ∧a"Q'i"P∀bf"aU$g#@ THE IL¬)∃∩VBQ∧2V 48¬∩)@dε.
8εvv∩$∪ ∩	~2∧M4
∧
≥8XB∧
4
DD(⊂	bPβO@≥λββ%∂+5⊂~Qph ∪[4εb&%L∧∧dQ⊂_V⊂∀h"adQ$b`∪ AHA∪9)⊗J∃*BQαα(Dd
HXB¬$βh⊂$λβ$f"CE_;l∩∪β%Iβ2A∨HA'&lJ2εI∧z∀TX:Bb∧Uhr`$∃∩⊃$¬JS3j(αU∃εBα;; 6$∪∪≥$"JJVα
B∧St@~J⊗(∪jZα( ∃T,∧~)Xπ3@1 ∧`I⊃h¬MENT @∪&↓)⊃
A→∪∩∃∧
JJεJp4)@70∞a⊃,K@≠KXW⊂⊃IS @)!
A&p"⊗aα|1αRλT∧L@U⊃4J*4⊂
⊂⊃*g!j∩dπN
8εvv∩% ∞&RDB0∩¬IλR∧
*(∃J@λ⊂d⊃i"P*∩ ¬ LOTεA¬∪PA'!
∪
∪L~∀`-Xπ0HLHXe"∧βt@⊂∀$cd*λ$ f#λ iP*Th¬AL.
0⊗vβX%I9αq∀L2∧∧+∧
t⊃0i_R14dλ(∪0(d 	NE @%%=$\4SY`≠X⊃~DD(⊂4Hzαfbg∃⊂ 	S THE LLππβ)%_∞ 2	xb¬$α⊃(	Itp	WβE_;l∩∪¬∪Q&@b\βI5E9α⊂
≥∧X9∀5Jλ¬∩λT⊂π j∃i"P'Q⊂*$"H ¬RROR.~∀%+∪≠∧
I`+TεL↓↔pπb"∀∧@	;PARITY @%%=$⊂∀!~TL@23∪gW,¬_DNβEVAL		0↔∪1→⊗≡aα>B-∩ε@$α3sAQ@∧jdShπRO==:2	;D@!∨M∪ ⊂%]:J&R*α& 5It¬∀01⊗SβNLY MEMORY
∀∪U∪⊂⊗6α
ckkαLb'bhλAMIH
∩m≠≠∨I2A!∀zR,8¬λ
@$gf U$ggεBα;; 6%∪@@∩qe +%`
dλ4Q("i'Vλ* λEN8∧~)Xπ3@1,K@→Y↔⊂⊃	TYPE LπA∪9)⊗J∃*BP4SY`≠X⊗⊂G∃αXW1	SPECIFIC IH
)I%+! h ∪[4εb(ji)"SαT @)e!⊗M∧
0∀λ⊂	h⊃a`	FI@εA&u"⊗JJ-αRMα
∩∃hQ'3@7b,α*(3Q∪iT⊂4v)@!`λROL¬∨+~↓"$YH∃L,Dλ%Jαα∪Si→β*"i∀*h ∀T))
8εvv∩$`∪β→¬%≠π→=∞,4PJV&~≤b%u@W&⊂K\9I∩l@10	iPcbDD∞βUSELESS
	P∪
5β$`5βW#⊂Kαs0*%0TQ(→b".jZq3⊃*:c"B
Y1P
*∀≤¬= 4L∩w))d[%%*J8⊃↔5-≤YHU≥_Q!¬,Lh∧v*7,εP~4	;C@3L[	βQ⊂∩%]*N⊗2-~L4)_d*∧X∧q)Hαi`∪, NUINT0= :hb∩$JrN⊗∃∧:≥βh∧-AQR1SD
4q3λZtkλ	*dg*_¬= 4T∩∩%u~⊗∃α<∩AZE0h ∪[4εb&⊂4P3HIpεP)VdεCH∩Hπ≥∨+L~∀`-Xπ0HK↓_∃-∪s∪h_β"Ng]DDXBbi))Qh∧ FN
0⊗vβX$%HJRJN⊗αEU%∀~↓P@'nh
DBYDca↓-DAEMLπ≤4SY`≠X⊃⊗@L<5Quhαi#&∩βW
;8εv∩∩T∪!	_5_∞Z⊗α(dd⎇qQ$@*23Uε↔,ε]≠αD@	.SEE GBP6Q6
λ∧vv@XIH&⊗α)∀`*λ
∀k→β!d)∩βNOUS)
∀vβY`_Hα,α*Yβ"#⊗Q'!`∀N
0⊗vβX$%DM*0∀∀h@*@)!&εBα;; 6$∩d&=∩ ∀:β5⊗*λαV`i⊃F@
;lp$⊗1∃,@Tq1)@⊗cgVU cFE∞β;;	λ4	WRNG(≥≡5β%∂&4⊂	mmβ1⊂K ∧caKd∧OSSAGE
8εvv∩$hλ&~J16ε≥ 4)@70∞a⊃-b2)@Vf'iT`cbFBαNUINT20~zβQE@$HI ∃≤XT∧<≥∧¬T&@ε@
;UINT UINT@ !¬*& 5K$
23Uε$∃23JFh∩∩λh∧B UIH
)!T~∀4SY`≠Zλ¬q∧	StS(→α&,P⊃'`∞'T PU@'!∀A"-∩∃αε εε $βλ⊃J)pεP(∩P EVEHλB~(p
m↓E""&:Xεε
>-!α"zpλ
Ih⊂	dSh IFY THE C@∨	∀A⊃∀)0∩Hβ"C!*dg*∞α	P@+M⊃∀AαbV&:αJ¬(hαB4i94∪@→@'hjdU∧¬
	 SK@∪!∀A∪≥⊃%
&PhP%↓αU∩N@"λ¬2)@*→εEαi`IPGE INT@
→∞4⊂λ%αU∩N@"λ¬2)@*→FEαh*`∪HJ P,UIH
(`4⊂λ (%j4,*λ¬2)@*( ∃	8π!∨A→∃α≤z6∃αD*J*λ¬∪d
3Q∪d
23U

 εE∧B]`∞OTE: @)!
A!-~!=4	t2¬Y→e%¬T	U-≥D
5L@Ph∃i~α λ TH@
A∧zA=4	∧-∀QQ%,Lh¬⊃π@εE$Q'⊂⊂≤D10 ↔λβ⊃A`2K1P@!4∪t∧λβ(λP,Lπ∪≠βM⊗~(Mα0≥αMH∂-≤β(Y&u"ε $βα"'cb`∀PI @'Qβ ∩∃∧2J>T	∀`*⊃0	'⊂d∧ @/=%⊂4PJ⊗b∞@εQ1V 
λk∀
#!∧iedT πE -2(F@1@R~(JαB&B
*N∀Q+PHKαq3HD⊂∧c"H$j)FBαIFNIP	&Yl~∀%u~VN⊗α@
@5TT∩(f)⊗⊗∃,¬~∀%1π⊂β(X@"5BA$Q!∃≤\α4⊃hTλ∧#,∀∀@
	PIPAUSE~∃t∩w≥⊂A∨A%
≤A∪Q&~(hP&Bz	"¬αββ"AQ@↓Gv14i→β*⊂*RdεT0 UIP⊃¬*N!ααY∃≥th∃)~p5U∧
21TIT∃24h~β FEβE
;8εvA≤
P∀(⊂
$⊃P+gi∪ ∧ FOR A USER IL¬)∃∩VBQbα& 5iy4*∧α5⊗λ g" R@'$zJ*aQ#@7nc"G]]P)PhεED↓# ⊗εu"&@$α14d	3Ps
X⊃(⊂)Iλ⊂0hh¬M@+1β ∩z*2b¬IλR¬∧ID¬∧|α3UλZTc"G]]P∀⊃'i⊂#∀ ¬TURL∧RXA¬_
"λ¬∩λT∀p
h⊃i⊗`↔RIP	β¬1
A'%*~2¬
D,@4∪tH~R14d	3C"G]]P&∪βP∞Aπ=%∃ααZ4,"λ+∩∧Lh¬⊃**U0λ*⊂a&"P⊃*g!j∩dπ@≥&$Xλ (αN`≥Nβ @≠β92A∂→=
ε1¬~P≤MH9∧-~λ~$*∧)zT`(α⊂ g⊃⊂)"iQh∧ ≤~(p
mm∧20≥∩λ~5L@Pr∀I@dεOUS USER IN@)∃%%+¬"M "λ¬∩λTλ∧''RdεTERRUP@(β(RA≥"ε@$QQ#@7nh∪(≠(⊂Q$λαg ∀ER@λvααR"∃¬αJ-i→u-~	itL@U⊃4J*4⊂
4h∧ATE IS SAP
λαp4)@4ε`≥H&j`∪T NOT↓∞ <XT∧D4Q(
@dj$'Uh∧ FIRST USING↓)⊃
@⊃∪ ≡εM 4)@70∞d
Su5	→β"P*∪β DECIDE WH@)⊃∃$A>⊂∧∧`)uλ∃hT⊂4Q$	3H⊃hTε
;8εvAβ1'⊂≥αm*N@"λ9∧,≤αh∃	λαP''RdεTERRUP@(β' ≡~H4B∧(Xd`:Q(⊂i@fdg#H$"`∩E
0⊗vβYα&→¬""εQ∧JMαJ,b⊗@4→jB¬$βh∃	λαP ⊂ART@∪πU→β$AU'$A%_
R⊗α*%-¬EaP@'nh
@ IH
)I%+!%→α6Vα:B∧∀T
E-∀hXB∧|hd¬ 95∩⊂∀$gc⊂⊂α@
∨I
Aπ∨5∪⊂~≥∧B⊗J∃ph ∪[4ε`⊂∃$"P+SβRD DESC@%%
&:8∧¬$DT
U≤-$	∀`*⊃0	)∃h*⊂&Uij⊂!⊃P 	N↓λ\4Ph ⊂@"V1*93P
:	S@↔∪A_	αiz∃,MAQ J¬99∃∧(∩3I	0R5↓Q@∧P⊂∩))`∀YESIN1
∃+%_
QAβ!P@)5	α%@)j`∪ET [.SD@bX1))3	_c:%\jVNQ∧
22zp
∧⊂ε⊂'UαERFLLπ ≥αr⊃αXYT`:T∧FE∩h∧$	.SP'PA6@:α8D3∩EJE%LHf%hKαh⊃**StTd
⊂πP#Sβ THRLπ ⊗≡@¬B∧∃X¬→@'P'j∩ ¬RS
λ¬∪(H%!∪∨≤α~∃∪
8A⊃EαZ⊃IAeX4(~8U%TT	∀`*⊂3∪↓⊃,¬jg⊃'P ∀HE 'DALIN@(≤~∀&¬*N"$
αd⊂∧idSαT		;DISABL@
AβA!%∨!I∪β)
↓∪⊂~R-∩JVBαJ0hUβ""'bg"2c'⊂"X⊂DH`⊂∀(LBJJ@*4αEαα""'k`	LL HRROS @∪↓β'3≥
⊃%∨≥=+&~∀%!+'⊃(A @2≤
P∃CQ⊃∪@:p5Q$	U31*)0h⊂(iFE∧T*id FXP,UL¬%β0~∀&¬*N!α5BA2Nα
5 !αE!#I∧h ∃SH F@1@Y¬≥3λ4(→Yu *p∧P)⊗f)kTF@
	PUS@⊂A→1 @2≥:M"IHh ⊂L→x$Trλ∧K¬@⊗XFEαe)`⊂5⊗)`⊂E@π¬∪≥⊂∩∩`.m*N@"λ∧tλXpR3HD⊂ε$iPi
	   LISAR
	SE@)i~A!αβ $%@:λ∪"∧β0
iU⊂!"P∩dε @)!
@E']&DAβIα4TJ~9ααZ4,@⊃0	iK∧ibj⊗αM @)e_∞N\hP&N⊗αK$j∧α3R	_R5β!∧ibj⊗αM EOFRTN		;DO L¬∨(AM ∩jhε≤
J*D@$(⊃rJ4∃p3JJc"B
85⊗S$λQPλ)⊃(∧D]H* ∂ THROW↓⊂∞VQ∧z→αVα8U∩∧α3Eλ~TU4
Jc"B*85∪s$λαi))Uβ
∀∪5_∞@4T
BeZβ3∩)@*("&⊗ 	NTP@	→:$p∞6Vα:D`$uλ⊂h→α  UIH
(`↓
%∨~4⊂λ&∞j∃αQdJ0∃%λI@HHα.`⊂∃βITHIL∧AαAA∩A'I(
⊗HhP%↓iIu≤(β"THZ⊃05∧εhε∧h∃i`λ FXP →$β9@%@8∧P)@" ∂MSH	∨)LA~>⊂ε ∃,XZ$L~λ~$=≠1Q#@1 ∧DDNβ ALSLε@h\βIα>→¬"0≥α	yd*βTπ@~(αj*i∪α VALUE MATTE@%L~∃+∪a!+'⊂βiuiYXε∩\∀_ye,@*s∀j@iP3		;AMOUH
(A=A'%*~2λ∧∃*9⊃1⊂∪βN FXP
∃+%' ≡MβWS@%,ε&)UβS ⊗fxVb$HI`≥<α⊃4HT∀piH)j i∃)P ↔HEHA≤
P∀,D	t`$⊃P(βE*diPhεT=tp
V&≥:M +uX$L<βU3!⊃ ∧]kR ¬RE ACC@+5+⊂∩ε$zIαQ∧:⊗@%4
4
Q1β!∧h ∃SH P,[$UIFRAHhI`≤5(→T*∧β04I84H⊂)@ ∧ @!⊃→&A≤
P∀1β"A~∃0	dλ(⊂FXP	∩vααN :λ¬∩λ~α⊂ ∀HROW AL¬⊃α5∩⊗@%X∧SD
p∧gεBα	H@%1~A
→@XQ R$∩P~N,)αV&∃∩,4!~¬-≤α∩Hλk∀∀h~β~DDNβSAVE ARGUMEN@(ββπ&A¬_
"∧¬_λ'`∞
	PU@' A @1 εHKαh∀HXt⊃∪∧λβ'i1aP ⊂RLπ)πQ∪⊂≡aQ M¬X∧r∧
λε( LF@
UIFRM :βi5MYh∀:b""'f ∂CATIONLπA
Iβ⊂⊗∃∧z0∩¬(Xu∧∪β"JY4p5H↔,εjdQ)&U@2		∩w1_∞∞ε$J0≤@H∪qDλ0h⊂$	pπ⊂)⊃ch"&βE	MOT¬∩A∧Y+∪
I~Q R4⊂λ&6⎇2⊗ *λ⊂
Y4U∪AQ@∧fgUαS@∩A¬$eα_!∞ε2d1↓E1Hh ⊂L	J%@$⊂+⊃↓⊃,¬cbU⊂#$i∀h∧ ARG FOR IN@)∃%%+¬!α4aQ M∀VSDλα⊂4@```$∩w	
_∞∩∃∧J0∃$X∧TJZ∃λ∃~⊃#"A∀⊂¬))U⊂*dg∃→XεEαd))-∪P"⊗∀⊃,(∀DB]j*,H$g ⊂UT @∪≤Q⊗JJ-αQα∞D
H (!→T`:Q2(
%λ∧")	
∪≠=(
∃ααJBe%J8∃∩D∃⊃P@!2Tt∧λα⊗**⊗dad∧B]c"j⊂βH INT@%%U!(A
8~∀&lzP∃≤α(⊂*&P#
λ`f&#λ→⊗∀FBα	H@%I∩Aβ$β∩¬ "λ∧@∀CE	MOT¬∩AλXQ
E↓$$↔:4,≤βsA∧λ4Q`→~h⊂rλ~P0uλZ@εE∧R))`∀ UIN@(β→D4 c]Y→e#≠∧
TL@Ul$
23Uε6H⊂
dSαT3 &↓+∪≥ εCα¬Y→e#¬∧
TL@U∪D
23UεH⊂
dSαT8 0β ⊗&u!AαVLrQQU¬*& 5F@
D
23UεG(⊂
dSαT90 UIN@(βID4!Q hUY→e#≠∧εB*JT¬'1⊗→____εEαP 
RST UINT32
	H∨-∃∩A)(αa""α""'i g"∪βH
A
%→∃αLrR-**%-¬AQ M∀z@λ
Jλε⊗@1
∪⊃I$Aβ$β∩¬ $λ¬∃
84J⊂%⊃,¬c"U!`λ IL¬)∃∩VBQ∧2V 48¬∩)@g
	SK@∪!0A)(~(∩A"e⊃αεI∀	2αR%~εI"λ¬⊂hUY→e#≠↔!∀E∃)z2¬,_j$j@,*∀¬⊃,¬`iVdεCHRLπ≥∨+LA∪≥$*JJVα
@hPα2TJ:α⊂ ∃IL¬(h`4⊂λ4*Y∀`*h	≥αh∧RZN @λ@1λεβββ∧¬P@!(∩TJ:α⊂ ∃IL¬(f@_h ⊂Lλ∧TK&P @,-1(FXP!~∀%≠⊂≡Z,Iα¬2z∩%¬λBHKαs0(d 	NE @%%=$⊂∀(Lj0≥Q2(λ⊗⊂λFXP)~∀%≠⊂≡Z,Iα
EP%λβ, ⊂)
∪≠=(
⊗%∧
IE1hε"DV⊂λ∀CE	MOT¬'%∧
IJ∧bB≤IHbβ"β
#!∧d ∩R AR2A,VMERRλ
∀∪)%'(AU∪⊂~Q εhPβ"U)→β*→YNα	LDB TT,[110 $β↓A1HKPK\)~E~β%`EVKHλP⊂i"P!S i`∪
λ∧∪β≥⊃∩AλX\h
\$KYE3∃P%@_P i⊂P!`∃BTYPE
λ∧∪ "≥!αV&u!eAλ¬∃¬⊂ ∧]c⊂h∧CHIH
)I%+!"α~V:≥"&<aQ MD8¬λ
Y3P
≤LT**)		0↔'Aπ&λaα"ε≤ZL4*Y∀`*
∞A~p¬dh⊃bP ∃IFRM-DQ @$hP%αN-"0≤jλ¬3J(α`fεBα	PIOL¬β∂β%_λ$↔0
E%JJH
(αVbg⊂a&"P∩dεTERRUP@)L@TTT(T⊂∀)~B Jh∧u*85λ⊗e@)b#_K⊗)≠@0]
∃∪PH∩]≥*N⊗Q¬Y0∃≤Hf"be&pQ ¬∧j∀''⊂ T→ F⊗LD@	;OL¬→2AA%∨πM&A&u"εJJ-αQα_d∧L@Uλ⊃JYβ!`∀ILπ≤A≥=_	6:L`4(∀
D%T∀λ∩dλα".hitPq$λ(⊂	"U*i'"Q⊂+ f∃bP'cλ'$f⊂∩c⊂$jλ&`j*⊂i)FEαP⊂ _CT ARIα∩%\
BBK∀∧LU⊃4J*4⊂
⊂⊃*g!j∩`∂@≤~(∪⊃%%hA(@2,J~J5Xε∩Eαα#"A_p21$
λε∀β⊗(⊂	
	 P@+M⊃∀AαbV&:αFC(hαB2	JT¬⊂**dc)∪UXTλ
F@
	CAIE T,(FLP)
∀∩↓!+'⊃(A @2,J0∃#FaP@!4∩4λ~αibFBα	SKIP@∂
@!
1 R ∩w&2αJ-JZ$`$∃P3
X(∪0*J⊃0	)CE	 MLπ-~βαP∩VM~ε@4∃ααHJεh∀h~β"P$U⊂#'iλ)"`∀URN~∀%!+'⊃(A @2,r∀LhA⊂K](Z5$⎇(T∧dM8~"b∧X¬⊂e@ε@
UIL¬(aCP&"JdIαI2,JN@=5λeEαα#"A→∀TR$
K∀uj1 ¬∧a∪*⊂ ∩1' ≡M\bN@=5P!↔tQ4jItQ(
:αh"ihπRITABLE SP	+
_~∀&≥*∩∧hε∀¬Khε`∃ISP∂&Vβ	11X¬2*:βiU@1]
∃¬≤H∪!∨@A~@
¬D)UHλFBα	POP P →!∧f~(Mα0≥αλ∧εFβ"B*
4r∩Dλβ(λP,RST5M1
∀∪A_∞Aαα¬Bk∩λ∧
!↔p¬g'PβK OFF PDLS AND UIFRAH
X↓'β-∪9∞~(M~V	αα¬E∪;¬0!↔h⊂	`Uα@λA
_∞:R,rRMα|1α¬α4zIαB⎇αε)α∀*2>\hP&Bz∧∧5E¬J5¬≤¬B.j,<⎇≠n2P9`4ate @=@	αNαλT8R3A
≥Yc"A~⊂πh⊂⊃,(⊗"α]`∂LD STA∀E @∨↓+⊂~J,
0 (!~4\M	Dαk
λ∧
!↔p∧c⊂∩`εTERRUP@(↓(∞εNp∧u"∧~;∀`(p∧)'SαOU@&0~∧%∧RJNP∧
TL@U∞≤α]P&jTh∧N'T ATTEMPT TLεA%M)∨%
↓+⊂~J,
0 (!_UD≤αλ⊃¬J3P	"⊂d∧	;W IN USER IL¬)∃∩VBQαBNfNαHTj∧X∧TI@i∀PnCE	
UIN@(βIAh→
%∩∧~ H∃α+ f⊂i&af∪βC@⊗Q⊂R∩%\
2εJl~2>∞X∧¬≤-)_U_hαB2
*H⊂4F(+∃P*Zα#'(D)∩∩m%β≥	=~A'Lr≤E)yd`:αiFEαd))0i→ @,T¬+	!λR$KZ⊗J&u!αN⊗α)∀-_Q!∩`*P3∃(Q ∧DDNβ??

αUINT91:	HRROS UIFRM(
bQ@R∩`.bεJ6≤b0≤≤αh
λ~v3Pi
SsSjZh∧FEαe#!fαD@	;RAH
	∨4A'3≥
⊃%∨≥=+&~∀%')∨4@Q
E↓$$↔8U∀Lh¬∃
P3∃(T⊂ε`j∃ ¬RS)
∩]Yβ⊂∩V(H$%@7wphPβ"@↓Gprr&∧⊂rr&$⊂rr&((⊂ri⊗QH⊂i9,QL$λp¬dYH!`I3@∧A%#%)$Aπ-∩`∩¬∧~.%E∧~.%Fλh ⊂@ ¬!eRX≥∧h∃i`λ FXP →λ4⊂λ&"α*%@$⊃∩)@*#&#CE	CAIHAλαa5DQ!∩∧U*:B∧≤αr,!⊃,¬b"S h	ED USER IN@)∃%%+¬ 4(~	∃∧
X∧q!QPrr&'@∧ibU-&P*SαREAR
CKI2A0∀∪M ∩jhεV 5(5d8Hα.piλαaejH%'dg∀P 	NAPλA$B&Mαα	tL@Uβ"A~q0
-∪P 	NTFLG		8ε∪%M ⊃ααJEHLit¬∀4q5↓Q@∧j)∩αE D0h∩%]r`%↓α↓5@0⊃∀αααβ,C!∧P%)∀h∧ CKI3		;↑@∞∩@@Zn∩$@@@Zβ_4*&4qα&R~Z⊃IAeX4(~
U≤Bλk¬αdAQ L@3uQ)∀⊃K∪λd ∞@)λZb%]∩⊗N⊗α@@⊂ε⊂*∃,P#$S ¬S
@π↔%∀1`⊂M99∃∧rλ~#
@⊂r∪JHJ⊃J!Q@∧P%∀)j⊂!RdY#_CE	MOT¬∃ααJBe%J8∃∩D~ %⊃ ¬∧j∪''⊂*∃⊗**)KαC@_∩$p∞∩y`	jD∀Q4hZα⊂ ∀HE FILE @∪↓∪ ⊃αM→α∞Iz4, Q!∩¬$β∪SD
∃∃
Jhπ*,CE	 2))`∀ @π↔%∀1D4!→T`:Q2(
E⊂s∀I⊗c"B
I⊂π"P∃*⊂TTS(
∪≡4⊂λ%αlzP∀,∀
Bd≤β∀Sf1 ¬∧h∃i`λJ FXP,(T)~∃
↔∩eDpλ&N|R≥α→d~.%J0h ⊂M	zα∧T∧(⊗⊃∧¬
]		;END OF IFN ITS+D2@~∧b`⊂∪π2∀∩~<4S	A _9E∀∀i⊃P@(p¬dYNα
∃π-∩g∧t%)%≥≤βXd~(∩A'↔%!∃αα
5L@1C"J*25∀G∧P⊂&⊃i)⊂-TdhλBHT \QUIPλC9t∩wπ≡↓%%∨HA∨+"α~>I¬r` ()_d`$∃0	bS ¬S@&)∪ ∩MeX4(→Ye ((⊂
⊗∩`¬ASK
∪)I_
9ααEB-∧α3 *!αE∧P∩))`∀ @π↔%$λ4(∃b5-≤X¬≠W)&`T V⊗)PhεMAR]
∀∩9' ⊗N-!αmh∧s(~P+
&l⊂∞DNβAVOID TRIPP@∪≥≤A)"*α6εI∧"VJ&t9αRλT∧-∃*	u@"Pri⊗α ]εBα]∩∩m⊂~⊃∧z→α_ib¬-8YD-≥5)∃%_Q!¬∧Lyh∀<→aP@!4⊂
iR%⊂#,∀⊗"`∩RPOP
	P@∪!¬+'
~)∪
≤AU'→M&U∪)LY6~∀!)%≥
↓(XK∧J6εHHA`≤-**∧`:λ⊂λ)⊂ib`∩VES @(4⊂λ%↓u~VN⊗αD¬@5Ts0*(+∀h~β&`i⊗D@
]		 79λA>2α&~9¬*N⊗2-~M*&%_4(→Qe ((⊂ ⊗∀αERRLIST
	H∨-∃~AαYY∪#+∨Q∪≥ h ⊂L*:α∧
HZ$LR,β!∧fgk⊃P ⊂,C2	∩w⊃%β'$B~∧_:DL↓pπ⊂#∪βR @=≤~∀&≤*Rj5¬"Rf>40$(~:E∃"∧∧-@K )(dU)
λJRS@(↓→'↓∃!D∧↔:tL∪λ∀	→βg⊂+Rh∧HIN @%∪9∪ ⊂4Ph ∀≤αr,π∧iedT ¬ INHIBIT		0↔%⊃)+%≤β)≡A≤*JZ&≤)αRλT∧$3⊂6(Xλ∩3JHαi)*T*εE∧λ%))jλ( ∂PXDJ∩∩m
VQ∧r0~∧∧q4J@$abP∃βHENIH
⊃∪	∪ ⊃↓βTαkλβ"B*
4r∩D
λε*dSαTP@*4⊂λ&N-"`∀j	→e$S⊃c!∧h ∃SH P,A
∪!U'⊂Aαb∧4!→∧ddβth	_β$$a∩h∧
	SK@∪!≤AαY∪9)β$~(∩A2-∩Iα⊗m→EL$KZ2>NαD¬-≤X∧@→→β*"i∀*h ∀
λ¬π.K
¬h→Qu *h⊃⊗∩dεTAR(A)		8π
∨$αα≡
αα
$@:⊃0u	_βgεEαd¬OVSM D,(P)~∀%'⊂≡N8ε& 5H~ HKαpv(d∧E THROUGH THE @	→¬3λA%_
R⊗α*%-¬J1P@!(⊂	bU-&P$SαTFLG		0↔)8A!%Y⊂~Q¬"&,→hr¬≤8∧Q*@iP CL@β$β∪⊂~R4b≥α_aP@! ∧DDNβ @≥≡↓≠⊂≡J*α& 5HZ%∃-λ¬∀d
⊃3Q	→β#FEαh*`∪HJ P,UIH
(`4⊂λ&N\JB2∃∧	2&:αH∃⊂@"B(	*Tp
⊂⊂βK@∩c∧~∀&≥*∩¬¬J# 6λ¬XFBα	POP P →α4⊂λ&N-"`∀j	→dDL)~@hPα4∃*9⊂¬⊂(*dg*⊃lεE∧R))`∀ POP@1⊃∀⊂∀ c]X¬3iελ⊂
jSβH2 UUH∂!∀	αVV|
≤@λ⊂
jSβAJC UP∨⊂βα∩¬X¬3iε⊂#"AQTp
a∃*  UUH∂!∧Bε 4IHU∩αα∩3Hd∧UDIL¬≥αα:E∃"α#"AQL¬`∃ULπ⊂t∩@∩∩%]*V :	λ∀`(α&"iβE*`∃OH0:	MLπ ~⊗hεQ2VαZE≥@εE∧S ∧B T,[3 &Db``X0ha:~(∪πβ∪0A(@2≤
22⎇hε3_hαB(	*Tp
5h¬OHAλ$↔:¬∀|(_$eJλ⊂dM8∧λ∧!`f&λα U@+<~∃+,z!I@!_4LHT¬"eX¬3iX4∧εEαP)bj⊗α T,
λ∧∪∃%M(A↓-*0≤C(⊂

E εE*Udπ@⊂e∧pλ&⊗α*$(1α"'X⊂$iH$f#f⊂ 	LGL, ILGHλ~∀%%%∨Hb∩%\b⊗JHKZV 49z%∀0p
 PαLE LISP ERROR
λ∧∪+,zε∞A⊃∪@80p3	A,¬ef∃b#bP⊃'i⊂'⊂βALLIL¬≥α
∩Jε@~1P@!50
gPe!DDNβAJCALL	;JRST VERSIOL∧A>2αε∞εd`4(_Z%∀⎇&⊃⊂K\β⊃4F1,¬f"T)⊗⊂!∃h∧ ALSH∞A¬∩& 5Dλ∀8u35)H5∪tDλ εE∧Qi)'i
D@	;ERIN@($p∞∞z*$,≥H_$d(⊃4J)tH∃i~α λ SIXBIT MSG
λ∧∪!∨_b∩%]αAαi%@%nBα)∀`*λ∪u*D⊗H⊃J)pεP"⊃*εE∧Th∧RTOUPλ∩∩m' ∩J I`≥≤α6⊂I~α⊂ ∪TRING↓)3!
↓_∞VPhP&⊗J∀zIT⊃↔5≤-)→e Kαpsj*Q0uλ_S⊃(λZTStD
p∧j$λ)P
EXP @≠≤84(~It3λα".jJλ⊂
∩⊗∧X@)e!⊗A¬αJ&:αIu-λ∪qDH⊃TI@fP""∃∧¬∀∪∃%%∪∨(∩∩`.Lz*JNαA∪@9⊂24K∀⊃P	'Pα TO GET I,π⊂≥α-∩J>I∧jN≡LhP&NR∃"0≥-A⊃∪@:u∀Uε@DXAS@π∪∩AM)%∪≥≤A)3!∀A∨+ h ⊂@"R1I@⊂⊂∞-UUH∂!∀	5E6αZT`9α`l, WARN [U@+=⊂eαA=+ ⊃α|1αBλ~4-hβ"C!ε@
UULπβπ_h∪!+≤AαAJZT`9β"H∧∧⊂P2j
Sc"JZαg`e⊂β:∪≠=(
∃αα@λεα"%@)bbP⊂i`iεBα	TLNE T,AS<F@0αZ~1xhP&ε>T	αQE`
f!,¬c'T⊂ ∞@+5
-$λ∃∃∀≠~2b∧YjD
∩λ~B∧DX_D-∩4∧#!∧h ∃SH P,[UP∨≥Y→0∀↔8d@:H∪u	λαi⊂ T) liK⊂*`∪E NUMVAHλAπ!π-¬∩0≥-I→d(hαH
¬D8¬∀
)c"BQl!d5⊗*`∃TSP~∀@A'∧*≥¬)t∧LU⊂0JAαE∧e∀)j⊂ ∃h¬TSV
  3αOP@%<~∀4Ph ⊂hαC"APL¬]@; @	∪'Aβ ∩∞@ε0≤r∧(4@∪@~K4⊃(
ZαgV⊂∃) h(∩dεG TLεA&u"εJBα(U$4H∩(d⊂π"aQii`i⊗F@

UP∨⊂βα∪Pα0p)→α"P*'%!`S ε←Zβ→L4!∀∧U∃8¬λ
Zαgd2
α∪~9(
⊗5¬"Q2VαZE%≤aQ L@3uQ)T∀C∃*ZTpεBα	LDB TT,[270 (@`X@1 ε¬hhαB0h→1h∃
E-"↓↔pε$iT⊂⊃!`S&⊃⊂*⊗h"P*UdπS
	 TD~A RR
α∩@MH∂-$A$XZβ	U"R ¬⊂hPα2∧J+H⊂
⊗
_εE*UdπH !∧pλ&6⎇2⊗ *λ¬
Zαgc'βE	TLX∧A(X4b~(Lj0≥4Y∀¬%"β
¬¬⊃ ¬∧f∀d⊂ ∀T,-SEGLOG
	S@↔∪A∂
A%!2NPE"Q$Q!∩∧U*:B∧¬X¬3H_J⊂	)
∪)1⊂
9ααJBe≥⊃Q J∧αTTjD∃0
gR_!FEαh∧LZ R,70000 		8εh`@β↓AA↓βWb∧
X¬∪iIp1⊗λ→_⊂⊂000  :xA≠βπI_
04P@$$↔0λε⊗λλ_⊂≡P≡ AH	%¬	2A	%λAβ+Q_∞2x_@hSαn`≥H⊂# f∪)P ∀HRU~∀4⊂λ⊂w+,z!EααZT`9⊂h
Zαgd1A U@+=⊂g∧~(~∧`-Xπ2α∧h→De~λ¬∩
* εEεBαUUOH1:∪⊂I%4A"a"Q⊃Q LUYZ∧*∧EJU,@rλ`CE	HRZ @)PXQ(R4⊂λ&"α*%@$∃

E εE∧⊂βAIL TT →#¬%%β24⊂λ%α≤
& $T
E"e_∩U$|β∪p(AαE∧Pλ%))jλ*jgdF@
 (→"$cλ%))jλ ⊂λTT)(	+,zRJQe
εJJ
H4(Q*U,@p∧_!Nα	TLNL∧A)(αbN∧Q!∀U∃8¬λ
Zαgd3A
∀∪!%% )¬"Q2ε≤
I"QH@%nλ→d$dTλ4
≤T	t2∧∀
4
∩λXd4L9_T`*⊂ε,FBα	CAIL∧A)(αbε∩⊗ 4(→*%≥λ⊂
jSβH3A
λ∧∪≠∨Y'∩A"a"Q⊃Q LE*)∩¬"β∃β!∧e))U⊂  ∃UAPλQ⊂¬⊂hPβ"U*Yβ`λ1A8∧∪∃+5!_A∩bV@,→JCλhαB5	IQ(∀EFLλλ__εE∧H%))jλ*jgfQi
	PUSHP,A
	PU@' A @2⊂h ⊂M99∃∧q(⊂%J53qI@ε@
	 JRS@(β+ ⊗>,*H (αB2	JT¬⊂*∀ TDB]`∂PEL¬π>$*⊃αNβ→T-P3β!∧d ∩RLεA(YQ(@$hRV@,yh≥	POP P,B
∪!= A Y∧~∀&≤Z&BdλU *∃3U↓⊃,¬id∪βULDTπ
Aβ1→∨.A→+⊂~∞αI∀`9P3λ
@ i$`PαLE@&|~∀&≤
& 2λ¬
~αg!'UdεD		8π3~aα&M∧JQα
⎇*0∀∂c"A∀⊂¬))U⊂*`∃OH3A		8π⊂~=¬"0~∧Y~DD4H∀*X4p
$SβHXAM_
α⊗α*$`:@εE∧R))`∀↓+ ⊗>@ε∧λhαC"AQ@εESP¬$α↓5α~@	j4⊂3@_~TP6!Q@∧jjSβS2A	8ππβ→1∪~≥∧2N@,* 
j∧α5∪TP g0i) lCE*`∃ST:∪+U_∞M@KZ≤II∀`(h⊂	jPαR -IPλO&↓αA',∩H$∃%% 93JJAQ@∧jjSβS1	;@πβ→→%_
≥αe~V
Iαiα&Q=→α¬αα:T*@εE∧Uh¬OS2	;CALLINGFSEBR - IT'S ASP¬$4⊂
VV5~Qh~ZT`:l,απa`f&∩`εGSUBR - IT'S AN FSP¬$4⊂λ&VαYu≠⊃↔483∪∩)@#P&)Ua)⊂⊗H$j∪iH g⊂#∀h¬BR
λ∧∪+,zN
HKZ≤II∀`(h⊃TjXTH$	5	tdλ3H⊃J:αa)∧BU∃+dSα**
UP→(βP&@-Yz3 1(¬a`S& 	N↓≤A'+¬H@ZA∪PO&Aβ8A→',∩H(!~U,@s∀pA↔pp3	I3Q`→Ju0TD¬(∩5∧zh⊂3D	∀p
a∀∧@	**Tπ∪≤T(~∧&-*0≥≠⊃↔483∪∩)@#P#)Ua)⊂⊗H$j∪iH g⊂&∀h¬BR
λ¬++Ppλ&VαYt-E↓↔483∪∩)@ π @'U
I↓hε&@"z4∧@H⊃6

@εE∧Uh¬OS5	;CALLING↓→'+¬H@ZA∪PO&Aβ8A⊗@

 hPα55)@i[∧]PβALLIL¬≥α5~V
Iαiα&Q=→αε9∧*bBHhRV@,hZC@!50
gTYD]aPd∧@→∪9∞A',∩I↓T	∃"th⊂$λβ"`_PRλ
(M*V =4¬α'a`f&∩dεG LSP¬$αZA& ∧u~∧∀λd-Eλ∧C!∧j`∃OEX2	;@πβ→→%_
≥α5~V
Iαiα&Q=→α¬α4*bBHhRV@,h_c@!50
gTDXCALL@∪≥≤A'+¬H@ZA∪PO&Aααα0∀|βP5	@d¬ICFUH4PJV@,F)`K\8→DdLhpλ	Ju0TD¬(∩5∧zh⊂ ⊂∪αO@≥βQ_∞6&≤2V 0β"B*Zαc⊂∩N	;CALLING↓
'+¬H@ZA∪PO&Aααα0∀|βP5	@d¬ICFUH4Ph ⊂@"U5(→α*≥∧R))-&H*⊂UUAH	(r$∩w
∨U_
"λ→b∧
X¬∪iIp1~
St⊃**⊗#"A~α OA R,4@```@4⊂
VVl~Qh∀
Ddzλ∧@⊗__⊂⊂00	∩w5βπ%∨LAβ%
↓∪∂:⎇∩⊗⊃D
4`:Uλ∪haαE∧e∀)j⊂*Udπ@⊂b4⊂λ (*ZT@∃ ≥αh∧@→∨∀A$Xbβ↓AAAαH%n∞b2&:8εε 5α5∩	→β#P⊗H$j∪iH g⊂ Uh∧@∨→=βλ~∀$A∃%'PA++∨ gε∩∩m→∨'
↓∪A∃U' ⊃α$J⊃αεpεε@-IyD`81λ⊂)JQ01⊃ ¬∧h∃i`λ P,A~∀%⊃→%4↓αP∩ααZT@∃∞"!↔pπj$⊃i+diQP jj∪βL@∨β⊂A)"*α~V:≥"&<aQ L@3uQ$
λε*jSβFN
	PU@'!∀A Y¬+ ∩>dzε⊂%\∩⊗@%HZ"¬≤~hR¬∩Dλ%J∧xYu∀q(#!∧h'hλ(⊂A
λ∧∪≠∨Y
AQe*V <iaP@!2TTjD∃0
gR_@		;L¬∨.AQ%2A∪PAβ∂α%_λ4 c]X¬3h'!P*UdπBAK UUBKG1 @+U_∞
-αt¬-3pRf∧∃0
gPαK1 UUH∂¬⊗βAαVV|∩-@*λ¬5)@a%@⊗
λ∧~(hQ`≠[4	T
Jλ8∀dbλ¬5)@a'!P⊂dεDUUH∂¬β,A∨:eIα↑λYbαU*8U"∧α4h	9β'kgβE_;lA)=∧∩∃αiybl@R3λ¬T⊂5Si_∀h⊂hZU⊂2	@⊂"$fRdεG ERRORS,∧~(hRV@,x!d7@∧h'T⊂(⊗*UdπBKπ	;E@+=
.≥¬:&@$∧	d`4⊂pλ'T!
λHRROS UUOBKG	;FH∂$A-*0~∧z[∃~¬I∃"∧8→Db∧α0$
	⊗+β!∧e))U⊂*`∃O@¬⊗`∩lA/"L~!α~J4,@⊃H∀hZα)P*T⊂ P!T'h%εBα
∃+U_∞
εXπ M∧βt
αeX¬3h%cD]UβATCH T@⊃∪LAπ%∨
⊗B4PB*JNαD¬-3pRf@F@

8εvw-*0≤∀8p∞A⊗β"U*XRq`_Nα	SKIPN @,9%' I`≤≤α⊃0i4∃∪h
81(∃iλαj$"T⊂ 	N*RSET MODE
∪∃I' ⊃α¬*V <)8pK]8~d-~λ→Db∧_:3@4∃λ∩λ~h ≡λβ @∨↓β%∂&x~∃+,z∀[w!∀E∃+*2¬-Yx$\8Q*U,@pR`_∞α	SKIP@
A≥%_⊂∀(MαVN	$¬αdβR3λ bεEαh*`∪H @
1αbRP%]α∩2M∧jVNQ∧∩∃αε~α~J⊗αJU∀rλ¬sJYα"⊂+PdεT
	PU@' A~bα¬E⊂Kαh∃	@P!"iU'i"P∃$"f@5'FE∧↓JUM@!≥
AλYU+⊂≡
Xε⊂K\α1H
Gβ_⊗⊂∃$"g0ii`∃ME  , AH
λAQ⊃∀4PJ*NA¬"Q2ε∀:A@%X∧∧
∀z4¬ 93∪λλ"P#$S&"b2dε LAT@$~(∪⊂⊗>4r%α∩ ¬BE"α#"A~p¬dh⊃bP FBα	SETX∧A)(α`4(→
$djλ¬∃¬E∀
#!∧e))U⊂*`∃O@¬⊗p~)+ ⊗>∀YEh~
U≤Bλ∧
&lβ"JZαga%N≥	MOT¬∩AQ(X@5⊂¬∧5E¬⊃P@!2⊂	&∩P**,(@
→ $~∀&¬*N!αα¬E% Q!∀E∃+$¬%"β
_βE	HRLI @)PXQ'αH4(~
U≤Bλ∧
Jβ"B	*30λ&⊃P*⊗*UdπBKT~∀&¬*N!αα¬E∪;↓Q LU*:B¬-Yx$[@εE*UdπBKTpλ&BαZ4B¬¬K2$
λ∧∪_TP3([ εE*UdπBKXpλ&6⎇2MαIc!@ (αB2
*R(∀EHt∪t	!α@
	SKIPL UP∨¬-∞∩%\jεf
*α∩>dzB¬<→jB¬$α⊃(λh ∂PJ
∪!U'⊂AαbH (αB2
*T¬)P∃h¬OBKG
∀∪A_∞Aα5BA2HhP&Bz∧∧5E¬JE @ ¬∧e∀)j⊂ ∃h¬OBKG
∀~(_w+,zN
I¬*V =8 D
53th→P ∃ULπ'∧j↓+ ⊗>≤⊃P∩¬X¬3j8Mh∃*Yβia4 UUOXT0 @+U_∞b~@λ
Zαgl*P*`∃OXCT UUH∂βπL~∀4Ph ∃-Yz4*H¬∧d∪)(
 T,(T)		; ∀T(A~NαX%∩∧8→Dd1λ∪	→q(⊃J:αa)εBα	MOVEH
AαbV@-λ∧uAQ@∧fgUαNI R,1~∀%)→>λε¬ #Fεβββ↓Q%-3tpF'@∧fgUα@∩AHXb$KZI`3∧
4
M4λD`9β∪j1'P#)⊂d¬E HAC@↔I2~*-*0≥≤&7 L@3uQ$
∃
ε↓ ∧]gU$"`∩WISE R HAS -<# OF ARGS>~∃U+⊂≡N⊂εS@!5∪∪d
λε∀(∃i`λJ P, ∩~(∪ ∩IhR¬%EEβ
{4∧j!⊃,¬`∀HE @≥≡5!+'⊂αaα>I∧RJNQbα∀ME`λ∧
q1(λHαc$g∩h∧@∪∨8A∨A)∞ε2`h ⊂MIH4
¬EE∧U∃8¬⊃O(*`∪HJ P,>)
∀∪A+'!¬↓2VV|@4*VαYu≤∪dεB)*30λ#H)⊗*jSβSB7
λ∧∪D~!αQe⊂4(→*5∩¬X¬3h%cFEαbhλCH T →$4⊃++∨M	]hM"2iαλ¬Bkλβ"B*I⊂π"P∃*⊂(Ha0≥Mα5⊂HKαp
$⊃P ∞@+5%∪ε↓∞ε2bα∀ME`λ∧
q1(λHαc$g∩h∧@∪∨8A∨A9∞ε2`h ⊂L→z2¬ ⊃⊃∪@8St@⊂∪αCALL, ENTER AT @≥	I2Vb~(∪'.Mα0∩¬iiu-3c"A~α NE TT,(2X∞f@~H$%@8¬∩λT⊂π'VPβH	∨¬	$A¬%(\@AM
A	∃
∪≥∪Q∪⊂≡d	t2∧8→Dd@εE∧R))`∀↓+ ⊗>E!@ (αB4i@iP ∀T,UUOH
U@+='∧ht%→∩	¬⊃2mMα6∪β¬EBE%E≠PhPα0p)→β⊂ ∩11π)>4ff~∀%∃%' ∧¬-3v⊂jA ∧]fPebP,⊂βT OF UUO Tπ∨%⊗4⊂λ&6⎇2⊗ *λ¬⊗
**∀FBαUUOXT0:	TLNN T,(3 )|ff@$HI`≤≤~Z4*∧Xε∩*D∃∪h	→β"$i⊃aj⊂*∩)*P PβALL
λ∧∪)→<A(@1D↓$4*ZT`;⊂∧j:	EP⊃π A(@2-*RNXhRV@,{
CPα33j@"P ∀T,UU@)Q' _Q!∀l@uQ(
%∃0
i∀hε~∀%∃%' εαVVαJ5 !αEεE∃h¬OXCT:∪→⊃	αIeYIIAα@ε¬λε∀*∃∀h
	;GET IL¬∩⊗β4LYHB∧|d∧:β"B)*30λ"H)⊗↔+2λ
(LBJJ@$
"d¬X¬3h_tk _J)∀D]Rc⊂''Sα-P∃I_
1α<*Qα∞|rR,h¬∀d	qH∃	λ5λ⊂(F@
	AD@λA⊂¬BE%E⊃⊂K\_HB∧Ldλ∀$∀Q4j4⊃R1)HαεE∧R&  R,(TT$~∀&lzP∀,∀
E"bα∀@∀CE	TLL¬
A∩a"↓⊃Q LU*:B¬-Y{∧:α".iX2q(	_β"$i⊃aj$gSα WIN
∪∃I' ⊃ααZT`:pMα!↔pε`eQP,!jλ'c⊂,⊂βT .8X	αxd¬D≥D	t2¬X¬3d
p∧gεBα
∀vβY`~¬H⊂$d(∪qD
p∧"i⊃P*'P⊃$g"5$"P PβS AS T@⊃dA/∀!α>d
U,@h⊃3JJT∧FE∃h¬OABS:~∃%%!&A`XY7αβ	α
∧
IEα
⊃J¬ααZU%≥d
U-∃∀uDλα⊂ ∃URSV F @
%∃βεA-*BNY∧22Aα5BAαNαPhPα6β!*"`∩MIH4P1nVαYt
∃$
U,@thλ⊂∃h¬OS03 U@+=β$dAU+⊂≡:αiB∧R6≠H*jgiLbP ∃ULπ&e
↓+ ⊗>+_4(Q*U,@p4TG∧d&)⊗α R,(T)∩∩lTTTA¬%%β2↓∞ε2d"⊃αI→4*∧∧p
a∀∧¬
	MLπ-'∩↓)(@1@↓$4!→%∃≤@λ∃*Xβi@03
~∃U+⊂≡Lαπ M≤X¬⊗D
∃α↓⊗h¬∃∃λ)ba	λ!`f&⊂¬D LIKE @'U
HQ!∧E∃+$¬∩eX¬3hi@εE*UdπS`Lpλ&6⎇2⊗ *λ∧
Zαh ∪V		 ↔(!∪&A∪LA)=∧B⊗ %∧
U,@v⊂u↓P@∧dLR TT0Q(@$hP&B⊗α9α¬αβ∃¬↓⊃@∧f"⊂α T[270(@`X@1 ε¬hhαB3)@k' ∪ Tλ
∀∪A+'!∧2bAJAP@!4⊂
iR!⊂ ⊂,ARGCHK	0↔'-∪!&A%A>Xh ⊂J	*%≥λ⊂
jSβS0E
λ∧∪!∨@A~bα¬E⊂Kαt@→↓'kP$⊂iP⊗@< εA>2αεJ≡≠p4Pα4∪J∧∀∃↓Q@∧j&∩εN @(0Q@$KZ~VJ$B⊗Iααye∀Z	hT,$X@4⎇$λ4@∪∩3Ht⊂3@_~TP6!Q@∧P%∀)b UUH∂'∧β_4(→Q`*@)`	 TT,TTS<C@≤|4⊂λ&"daα¬1 εHJαu5)@ia≠@4πILL @π→αHA→
PA⊃β→_A∨A∧~∀&$b ∀rλ⊂ε&
B]b'P∩αOT SEPλA$B¬α∞|jB&2,!6∞x@BhhαB(	_βi&@5*⊂TTSAR(T)↓ 6A9	&5≠
A¬!(A
∨HAαAπ¬→→B4⊂λ&6⎇2∃α↓J@εFβ"B
I⊗S@~Jλε∀20P∞f@~@4λ∀	%∃≤@λ∃*Yβia3
∪(1⊂~9ααJBbC+r3~Hβ"B∧	TTu∧
53p*&@∧]g⊂βALL'I@
∞↓¬_	αε∃∩εEαh*ε 54λ4d|( @*%λβ"A~⊃0	dλ(⊂[UUH∂≥4bt¬@4	∀2∧→k∩b¬9	e,@⊃λ⊂HT⊃∪hλ_p3∪↓Q@∧e)∀h∧ @+U_∞N	(h ⊂hαC"JZαg`I≥	TLH¬≤A%!1EAαεhPα(∃	Ip(∃¬E⊂0p)Iλ∧D]SαCALL, BUT NOTH¬πβ→1@z@rαε∞εd`4(∀εR2x⊂
"bα⊂2H`f&∀B]`∞JCAH	_X↓
VQ∧r0≥"	i$83⊃HπWH⊂2H`f&εBα	  4*id4⊗*`∃OHλ
∀∪Q→4A%!1]]8εββQ!¬$e$
BbD¬⊃P@!2TTjD∃0
gTa≠εEβE*`∃OL¬-_t%'↔>%!α¬25A.~0hP&*J≥!αVV|rP∀(β"QI≠
nB)Yβk"P∃;U@+=&a
AU+⊂≡Mαλb¬-YxS∩¬X¬3j8,(∃*YβiP⊃
λ∧⊂∀*-*0≥≠λW M≥X λ
¬∀M`_
X@
UUH∂&@∧1`⊂Mλ¬4i∧⊃P( ∧
	PUSHJ P →'¬(
aLhP& ,zhTJ∧EFhUX¬3hVL¬∧j∪'"P"→	;D 1. $z|Aa∪ ⊃α"∩J⊗α:2∧J(T%∀λ$,,d	∧≤αq1↓Q@∧e)∀h∧ .,h⊂∀!→T`:β"P)~_εEαh∧@→≥8A$Xbβ↓A@4PJBVN@∧¬αeX¬3i↓α@
	PUS@⊃∀↓
1 YMβ →Vhε⊂hPα4∃*9λ⊂λ⊗⊗βP+∨M
c 4hP& ,zhR¬%EFC@ ¬∧d∀&)P*∃∧¬∀∪A+'!¬↓2RPKZ0∀XT∧`8H⊃U)@!j$gSα @∪≤αα2 4PJRJ:p∧∧"c⊃↔3
@L(∂'d⊂ε$iU$g#@ HAS ALREADY BEEL∧A	∨9
~(LRNAααJBd
(zβKαp4Hzh⊂
'H εUNCTION↓_
>]∧z0∩¬λI@hPα33j@ ¬M D,-1(FXP ∩~(∪!+≤B)αAe∩N@%∧∧b'i"ajT ¬RATE  ~A%A!∨M'∪¬→∀XA	≡↓_
-tλU (3∃0*I3sC!∧e))U⊂+g Qi)∧]SβR ELSE CRAP OUT @∨≤ααP≥∀yhr∧uYX$-∩λ~$=_Q*U,@tq,'∧h ∃SHJ FXP,RST5H
b~(∪!>αα~bAd 4(~	u∧Rλ∧↓Q@εE*UdπS "βP&"J∃QαRQbBQ$⊃↔2RR$
5,∃$λ4@⊂ε"bλ& 	KE LS@+	$⊂∀λLB2J@$
BbEE⊃P@!10!R⊂*⊗*Uh∧S@,4⊂λ&*≥↓αI2∧"2εJ8h ⊂Lλ∧TK⊂)⊗*UdπFN
λ∧∪!-~")αα¬D
∀x93Hα.qI@i!bP⊂βHECKIH
∞A=A:αYT(αi⊂'Q⊂ i#TF@
	JRST UUH∂&@∧04(→Yu (αP ∀T,40
	P	2t)αRQbAIB⎇≠→$%@8¬∩λT⊂π!`S&⊂!$U∧¬∀∪¬_∞MααZU%≥aQ M⊂ε''λ**⊗∀oYP∪)		0↔$B∃αiuU¬-9∧	tH∩J*uλλ$j↔  SEE D@
∪9∪ ∩→yb∧|d	$83∪β!∧h ∃SH P,UUH∂:(∪∃'⊂εV@,x)48hαB2J*uλ∃*Yβl ∀D~∀_w+,zaR	¬*V <β∀pD
53sλ→P ∃ULπ⊂∩	 ∧¬-3qU)Aα@

UP∨0β"∪Pα4ri~⊂π⊂*Udπ@→;=0 MEAH
&A∃_
RJJα~J>hε6εA¬~⊗J&-_4(→*%≥λ
∀E⊃ ¬∧h∃i`λJ FXP,SAPk~βλ4(~
U≤Bλ∧λi~f@1PJ~∀%∃%' ¬"I$hP4*VαYte≤'!∀l@uQ3$
λε*jT)k∧]J∃∃⊂&∀h¬BR↓∞ε2d*⊃αI→4*∧β∀u()
	MH∂-$AαY≥%_⊂∀!→∧e∃αH∃¬E∃
#!∧iedT'⊂ ⊗.RSE@(4⊂λ&*∃~QαVαYu≤∪!Q M¬X∧r∧λβ(λP,T	0↔≤
P∀(⊂
* b")⊃iiP'Q⊂ SU@¬$R~(∪⊂⊗>4)αQJZU%≥aQ M¬X∧r∧λβ(λP,T	0↔≤
P∀( ≡λβ @∨↓β%∂&xA~>⊂∧¬-3qU)Aα@
	HRRP∀AHY++∨→_λ%@8iu∩∧~(t9lβ"A~∃0	d∩⊂(⊗ T πCK@~∀&U∩N@"λ¬5)@iXbFBα	MOVE R,T	;WAT@π⊂A$B&Mαα9¬,4iI∀`(h∪qD
Kλ∃¬D⊂3Q∧
50
)Uα!~∀%∃' APY≥!-~!5XKZN&@∧
4d⎇J4∧4⎇$∧$
¬	K∩∧TP3(TKλ⊃*HhπεEαd¬OVE T →+U)',~(∪⊂⊗>4*5αIe*V@%8¬C!∧fgk⊃dP ∀0Q @$hRV@,yH#≠Pα03i(βP ∩1+ ⊗>d⊃P%@8∧sd
pε$b⊃P)`∀UF@A≤JaαNdzRMααZα¬$α⊃(
λα 
	H∨-∀A)(X4h	"QHI`≤
DλT`(λε⊂*λ( ∂INTS @)<A→β'PA∨AQ⊃∃α4JP∀(β"B)Yβk"fH**⊗∀∃∀@	;↓
%β≠∀A'2⎇"Mα~⎇⊃αVV|2V  Q!∃≤@rP ~E∃0
gS!→FE∃h¬OLB4:∪≠=(
∃ααJBc#↓↔44LzZ$*∧βu5∧	1H⊂h→α&⊂'T⊂!`f∪ ε @)e!∀4PJ6 =hY∩¬∩H:∧`:⊂¬∧]H∀ 
AY BE CAH	1¬"fB∃∧J→↓A∧
J=5⊃P@!5∪∪d
K
∀
Zp∧%⊂∀⊗⊂		;FIGURE @∪(αα0≥5β"A~α&'"λ**⊗_L_⊂∧DB]`	T↓≠β %∧b0≤|αh∪	→q(∃hTtQ(λg`∞STRUC@)%_
≥αλεBVNDP4(~ID8(⊂	⊗
%))jλβ<P@+M⊃∀Aαay$↔0
$zλ¬∩λT⊃tSi@#P ⊂LACE, @¬+(AIβλAQ⊃∪&A
β%
U→→2B4⊂λ&"α*"¬∩JZT`9α".j(αj*i∪α ADDR@'~α6@-8¬λλyβP ∃ND@$~(∪⊃%%i~A$_4jQ(R$∩vA$B∃α~α(∀l*D	d`:λ∪uHZH( ⊂CE	HLM @$0ZbQ
a B%]~ε@4T	∀`*u∀U(j 	ON T@≡A
→∨¬¬⊃$A/∪Q⊂∀(Lj0≥4Y∀¬%"β
∃¬⊃ ¬∧h∃i`λJ P,U@+=
+_∩m'⊂≥αα:DL≤αh⊂)@⊂ h(∪,P#)⊂d¬E UL¬∩⊗α$∧
∀z5B∧Ldλ∀`+ εE∧BDXR¬MEMBER, @+U_∞~Vbα⊗BB,~RMααJd`4⊃P	'⊂αS
λ		0⊗A=_	α~β
αb∧→hB¬∧βt∀d	pπ"P∩βF @)!⊂∀4PBB>A∧2bAJA∪@:Q0	j∪βRE T (ADDR@'~α0≤2	J5,∃%⊃P@!33uHT⊃∃⊗
_εE∧R))`∀ UP∨'λh4!Q hUX¬3hj3∞B)Yβk ∪ R,40		;P@+PA~Jj∃αVt"⊗Iαe~V
I∧~ε $ββ"A→∀TR$
K⊂t	@h 
		8π)(AA_∞&:αJ2¬$βh∪λ~uλ∪hd
(∀λIλ⊂	f∪βTS
	H∨-∃~A$X!)(@$HI`≥-8Z2¬"β∃∃¬J@εE∧SdπVEI R,-HQ~@
¬⊂HKαqV
∧⊂∧ iH⊗X# LπAβI∂&|A¬_
"	yd(hαB2
*S(∀EE,j∃
E ∧D]H'j$"T⊂)f'U⊂ iP∃βELL
λ∧∪⊃∀b5α~e↓15ME"Q$Q!∧E∀IP
≥αβ →
**∀FBα	H@%I0	αIc!@ (!→¬∃∀T
"bk%
E"Hβ"B*	tλ⊃K
λε*εBα	MOVEI @$0Q(@$hP&"JdIαI1hε∩E"α#"A_1⊃∩∧
K
∀¬⊃ ¬∧iRdh'5∧¬∀∪M ∩i¬⊃0 (!→T`:Q3 ~%λεZ(TT ∩~(∪⊂⊗>4)αI2X∧D
¬	K∀5∀→XEhhαB3)@hεEMR, ~bαBRQ⊃Q M∧βt∩D
λεεEβEβ≥j`∃OS9 @+U_∞M]¬*V =4¬p$
53tf@d⊂ ∃ULπ&o⊗4⊂λ (*ZT`:n.B*9p∧h H**⊗!Rd∧IST	; ∀T(A→',∩Iα∞b2,D	DL\Tλe≥0TC!*jgiMβ:∪≠=(
⊗%¬"Q2ε∀:B$A↔2RR$	E≥0T@_`f&"Q⊂ IKE C@+	$⊂∀!→T`:Q(∀EFβ"A~α&''λ)⊗_@000
λPUSHP,U@+=⊂∀(LB2J@$
BbEE⊃P@!5∪∪HT⊂K
ε&↔lle⊃ ∧]j∩ ¬ NCAH	_↓	∪ ⊂4PBε∩∩JαQ1DhP&BVα9α∧V⊂λ⊗∃∧¬
	PUS@⊂A→1 @2D→5DQ!∃≤\α4∪D
KP	)Qh∧
λJRS@(↓+ ⊗>≠:∧4!→T`:Q2(
E#"A~∃0	d∩⊂(⊗*UdπBAK
REPEAT 2,	SOS -3(P)	 ↔β1→∨.A→_∞IααJt`4⊃P	'⊂αS ON @
 "h ⊂Lλ∧TK&P ⊂,(@
1αH4*VαYu≠p.B)*tλ∃
Eλ∧*

DPARGPDL Lπ$A∪1∪'(~(∪!>αα~bAe⊂4(→*Tm∧βλ∀EJ53tf@eFE∧∀e`	PN TT,T
∪∃I' ⊃ααZT`:mrβ!∧d ∩LI TT0ZbQ%!$4!_∀$∩(∃
E*∀¬⊃ ¬*jSβS7Hh∪⊂⊗>4*5αR ¬Bk
⊂	∀CE	MOT¬
A%!2m∩
αB2f5∩ε ,Xπ#!∧fgk⊃d¬ @)PXZbQHR$↔8∃¬∧β⊗1J(31(λIpπ"FBαUUOS4π⊗t∪5_∞Z⊗hεQ2VαZE≥C"B	
TVH
%∃0
gQ'
	PUSHJ P →βI∂⊂∩∞Xh ⊂L**5"¬X¬3j6Q#"A~⊂πh_k∀∃↓Q@∧fG∃αEI A,0
λJRS@(↓+ ⊗>DJP (!Q c]X¬3j6P(∃*YβiP∩ UP∨&I"Aπ∪1∪'(AU+⊂≡Mα_⊂hPβ"C!*jgiL X
	HLRP∀AQ(X@" ¬⊂KZαJJDλ4TP+∀⊂p3	Hαb&∩ebP#∀h¬BR
λ∧∪≠∨Y⊂∃ααJBddα4p*!α@
	MLπ ~⊗JαI1λ¬∃¬⊃ ¬∧fSβP
∩↓)(@2L
BεIλh ⊂L**5"¬X¬3j6T#"AQU0
gTY_
	HLRP∀AQ(X@" ¬⊂KZαJJD
u0TDλp3∪λ_λ∪∩)8(⊃TjXTC"A→∀TVD
K∃5)@c'εE∃h¬OS2Q2∪≠=(
∃αα@εFβ"B*I⊂π'5⊗_X_∧¬
	PUS@⊂A@Y++∨ ~∀&$b0∀*묬	Pp3	E εE∧T*id4⊗-`∃ULπ≥-→t~∀&≤
& 2λ¬	_4⊂4F⊃ ¬∧h∃i`λ P,L@∪'¬$⊂∀!~¬-≤αλ⊃K
λε**α]i`∃BR ADDRλ
∃π%→∪' π LU8∧λ
Jλε$f∩ij∧]R`∧IST @
∨%Q+⊂~ε$*2eαα8∃ (αiP)βE	PUSH@∀A@Yβ%∂
⊃⊗~∀%∃%'"αV@,z6$(hαB2J:λ⊂	,P@	2
∩≤4!~∧`:λ⊃V
¬∃∃α'h)"iQi+"P∃⊂#'iλ*jga∩cFE∧PβAINTT →∪¬!β$b4⊂λ&B⎇↓αAII∃≤
!Q LU8∧@~Zαga%QF@
	MLπ ~⊗JαQ1
JBHKαpQ*@`i"PH& ∂OSE S@+	$A!∨%_
R⊗α!P@!2TTjD∃0
gV$jεEβE*`∃OS1A:	HLRZ TT _QPR∩`-RQ)αε∃∩εeα≤
22⊗ ∧∧dL8T∧e≥X* hPα33j@"fP*∃⊗ ISAR~∀%≠⊂≡Z,IαQI_∃∧
&⊃∪@9⊂24D
pπP$SαTE@%I+!)&↓(∞>dzB¬≤8∧Q*@P*`∪
λ∧∪D~!αQe*V@%8¬C!∧e)hλ)⊗("∪ i#DNβSAVES TT
λ∧∪∃'HA++∨	↔∞∩w¬→'=¬~ε@4X∧h
Jλε⊂ Sα@λA<
0∃%4	d`:α$$g⊃P ∂NP@	→&4⊂λ&2$⊃αI2]"RN∩Li12R%~εI"αJBMhβ"B)Yβk"P∃*⊂4@~∀&$b0∀rλ¬∃¬F,λλ_βE	PUSH @ 1+ ⊗>@h ⊂MIId*¬J@¬	Pp3	E εE∧T*id4⊗-`∃ULπ⊂~Zeh4(→Yu )R(∀EE∀J#!∧a`fSα R,T
∪∃I' ⊃ααZT`;∃#!∧h ∃SH F@1@Y⊂4PJBVNDQαAJ8∃ +c"A→αgk"RP"⊗→βE	JRSPλA-*0≤+!Q hPβ"@4¬"4PJBVN@εA2~β
HKαr1D	3H
J*q0
3dπDE, MAKE
∪⊃I→~A
1 X@"αH$%@4
Uα∧→`-P3λλjP31$¬∀q1$λαk fβE	MOT¬∩AXQαR$∩vA
=$A
∨I≠β(AQ⊃⊗J,z→$Q!∀E∃+$∧%
β!∧h ∃SHJ @ 11π>u_$%@9ZU≥λ⊂si@)P ∃P @
β↔∀Aβ%∞β)≡AYβ⊂⊂4PJBVN@εA2∧hP&"JdiαNAbBA$Q!∃¬-9
αe4HU (3⊃TH→αb`≥
λ∧∪≠∨Y∩Aααa"
⊃Q%-3tmJ↔@∧h*Td⊂ ⊂,TT		;PUSHHπA
U_
∞RLz0⊂hαB3)@hεEI TT →∪¬!!2Hh ⊂L**5"∧α3∩*:αεEεBαUUOS110∀∪5_∞Z⊗hεQ2VαYt4pα".e%JH⊃J:αa)0βALLED @→∪-
A2≥*∃⊂β"B)Yβk"P∃⊗*`∃TSP~∀!∃%'"αV@-4∧,λ⊃ ¬εE∞β;;	EL¬	π∨⊃
A7a!$Azα~NV∃∩d4 C]X¬3j6h⊂
jSβS4AUP∨`dA+,zMα⊗αYt-↓∀λ∃*Yβb`_4 UUOS10 @+U&baα4⊂λ4!Q%-3tlg∧f"↓λ**⊗-L≠X∀00, _hβαt%@5%"R∧h[¬¬∩λ8∀ddX@dL8T¬≥0TC!*jgiM X
	SLπ∃≤AQ(Y+,z~-!Q%-3q6ε'@∧f@OT¬∩AQ(Xb∩ p
))Rα~-λ∧∀Dλp3∪λ↓b⊂&$RbP#)Ua)εEαb(!5*⊂[H`
AQβ↓11Q¬h4(~ID@x(⊂ ⊗
_⊂⊂⊂00
∃+U_∞MhM~.&BλεRQF@↓⊃,¬U∃
⊂ ∞ONAP	∨≠ 
≤5Y`83∪⊃(D⊂ε$eQP ∪@+	$⊂∀*-*0≤-α∀∞A→⊂ε)-λ**⊗∀∃∀@		:*** EXPRA
β⊂∩2,!α2→0R¬≥X* hPα3⊃λ⊂*⊗-L≠X⊂∀00, _hβαt4*ZT`84∧~:	H∨-∀A$Xhβ$%@8→Db∧βqH
E∃∃⊗∀⊂+df∪⊂!"P∪'i`∀!
∪)10
9ααJBbk⊃⊃∪@93P	bT*⊂"l∀)⊂' SbP$cλ+`iP⊃h( ∩
λ∧∪⊃∀aαRQe⊂4λ~ID@iH⊂	⊗X_⊗Bα	P@+M⊂A YU+⊂≡ hP& ,zib¬"β∃β!∧iedT ¬ @,9%' h ⊂Mλ¬4i	H⊂λ⊗∃h¬OB∞@ε~(M"2:∃¬⊃1"h8∀dbα#"A~∃0	dλ(⊂[UUH∂≥4bt4!→%≥αλ∧K
Zαgl4@∧~(MαVN∧
αe%A⊃β@:∃0	dλ εUNCTION
λ∧∪∃+5!∃ααEDL
λ∧∪⊃ ¬∧fSβVEMT,U@+Q' _4PB"J2RαI2VαZE≥C"B)Yβk"P⊂T∧1(R)
∀∪)' A"bB$IiTXhαB4
Zp∧⊂( @		;PUSHARGUMEH
(~(∪β∨¬)⊂	αIbq5L4PJ6 =hT¬"eX¬5
:βεE∧R))`∀ IAP@!12∩%\
BBK∀∧5,d
D`4⊂4Qj1 ¬εE∃h¬OS10:∪~=(
⊗5¬!2VV|20⊂KαjJE$⊃P	jPαR CALLEDLIKE SP¬$4⊂λ&*≥↓αRQd
J=λI@HUX¬4f⊗⊂.B(→βe'5⊗*`∃OF@$~(∪!>ααA2∧hP& ,zj4J∧EF#ββ↓Q LLz)R¬"β
_βE	M∞T¬
A"bV@,xi`hPα2TJ:α⊂ ∃ULπ'¬$4⊂λ4 c]X¬3ε)H⊂
jSβS5 UUH∂&,	αVV⎇→V	ααZT`:m0c!ε@
UUL2N 4%'↔&∧	αRQc!@$↔0
E%H∪Si@ j'fRac ∃N CALLED LIKE LSUBR
UP∨&Tpλ&"e∩`∩¬J@¬
λ∧DDNβ*** EXP@$↓∞ε2d*⊃αI→4*∧β∀u()
	MH∂-
↓(Y+-"N@0Q!∀831q$
λε,!KdεACS
∪∃I' ⊃ααZT`:m0#!∧e)hλ)⊗("∪ i#FBα	MOVL¬&A h ⊂L**5"¬X¬3h[
β"AQU0
gTX¬A:	PUSHFXP,T		0↔	¬≠⊂→α≤
N∃ααy∧-∀T
t*∧β54jAα@
	PUS@⊂A→1 @22rJN⊗αA⊂KZλ∧s	_⊃(∀jJ1QH
Zλ⊂
$⊃P "&∧¬∀∪5_∞@4Y∀¬∩bα⊂λ∀BDX DLπ∪≥∞β!∩2tj-≡M∧
Mα↑*α≡ 8Q!∀U≥∧
Bduλ¬4i¬,k3H_tj`_B]i'gSP#'iλ f&⊂⊂aiP!∃h∧ A0A!2-→↓L4PJN.~λRαDhε∀¬⊃ ¬∧e∀h⊂ ∀1_
BVα9αk ∧D]Ql*) H)`OTS FOR *RSETλ
(Lj0≥Q2(λEλ∧ ⊂)
∪≠=(
*λeBk
λk¬αHβ"U*YβiP∃B8∧∪≠∨Y
AαX!$R$KZN :λIr∧ID¬$DT
∧$dβS2dzc"B)*tλ∃¬J⊃∪∪IYc"B)Yβk"fH V∀"
F@
	SUBI R,1~∀%' ⊗
Jα⊃1DhP&ε>Taα2JZT`:m0C!∧d ∩L TT,40	∩wQ(A"
→α
⊗,qαNε4*⊃↓T	∧
~λi`hPα33j@"fP*∃⊗⊂λD$∩∩`.α8∃ (αP#*SαCTIOL∧A¬1_∞@:λ~$=~λiu∩∧α04
	⊗#"A~p¬dh⊃P⊂λFXP)∩∩mλA'⊃=+⊂∩⊃¬α0≤Lh¬~Ih⊂d⊃i"P PβS ARA SAVED
	SP¬∩↓λXj∩$p∞~>⊂∧αU∃8ZBb∧β0
iU⊂)`k⊃P*$"H a`∪ UH
	HA)"*α~Jεl)∧4*(U∧05→ a`∪-1(λ∪≠=(
⊗5∧⊃- 5*λ4`*λε↔)∀!`∞@(5_
ε∞α5∧"Hα.th~β"P S&⊂&`T%bb ACS BUPλAα4⊂λ&6⎇2⊗%ααJBe∪YP*	@∧D]T)'k$Q ¬ FOR RESTORING THEM
∀∪5_∞@4YPλ
Jλε⊗@1(@λ@$HI`≤8∧h
@bi"P∀`k"bλ*g""T⊗⊂''U⊂ ∂VER, @)!
~(Lj0≥Q(∃
E
α!↔h⊃TH→αbP$Sα CASE @∨↓β⊂→α5∩⊗@%X∧SAQ@∧fgUαE F,UP∨⊂$∩w6
J∀(∪Q(Xλ⊂	"U*i'0b")"TiP ∃ND@$~(∪ ∩2t)αRQc	AA@HI`~¬IλR∧
(z2αDα1H	@'j⊗⊂∃ibP H!h'h∩∀@
	MH∂-$A→2≥α0≥∧αC"A→αgk"SP#⊗⊗SαAC@&4bQλR4⊂λ&B⎇↓α5α∀λaαE∧e∃d¬PE F,U@+=&`⊗HI`≤l≠_$*∧β3tHTλ¬))Qh∧ HAIR0≡~(∪!+≤Aα5α∀¬λβ, ⊂)		0↔	U!→&≤
R*	jTl∀X∧H	@c⊂ i⊃iP'gλ εP⊃ 4⊂λ&6⎇2⊗%ααJBc"α⊃∀BDXTT P@∨∪9)&A$yαRλT∧4MhTαU∃8ZB¬≤β∪u
1 ¬∧fSβP
~β)(@1hε∩DV⊂λ∀BDXPLLπ A∧z& 5HZ"∧Lh¬∪d
⊃∪λ
9α'jεBα	P@+M⊃∀AαbV@,xjT`Hα.thZα⊂ ∃P AP@!13
%β5
@@"α	u¬~λk¬αHβ"B*	tλ⊃K
λε**βE	HRRZS (TT ∩∩$p∞~2-~!α∞α	u∧R¬Pλ	_4⊂λ&⊗P+df∪⊂!`∩EAP	
A=_
∀Q!∀U∃8¬⊂∩`h ⊂LY
∀~)+ ⊗>≠*≠Pα4∪j∧⊃P(*∧D]SαOW FLπ$A$B∃α_~¬∧e⊃Q LU*:B∧L~
∧eHα".jZαgc*S⊂+`G∃)P ∀WLεA)⊃%_
≡M∧z0∩∧hε∀¬D∃r3	D∀∪t∧	pπ"FBαβ≥`i#PβH@⊗A¬%≡H92∧
(x4[
λ~$<≤αl@_~Qprf∧⊂4QheZ⊂ T πCKLAβ%∂
⊗`∃α
∩≡B∩bαεJ≡β↓αεJ=↓Eαα$bεJ≥¬αε⊗J⊂∧¬∧∪⊂ →βE

λ¬β%∂
⊃⊗t∪
β⊂⊗≡*αQ2b~j0∀8∧b'a`λECK @≥+5
⊗I∧z→αε∀:MαNαZ¬∧dα11↓Q@∧e)∀h∧ @!¬%$∩$p∞IαD
Mαε$z5αBα)e∧4U⊗$	⊂∧ijλ( ∂INT@$~)β%∂→
⊗t&≤Z&B∃¬10∃∃8Z@hPα2TJ:α⊂ i⊃a`2
λ¬β%∂
⊗b`(Mα0≥αλ∧
Jα".hitH∀jλαbb, @	≡AQ⊃β&AIβ ∩"-⊃αRλ→`hPα2TJ:α⊂⊂⊃(TT ∩∩$p∞ε>~↓"A∀εB>BRαA04Ph ∀
(x4[∪αB4i9βj*4⊗)`→		;R HAS @'e≠¬∨_↓⊂∞Iαα8∃⊂@ ¬∧e∀)j T πCKT∩∩`.m*N@"λ(R∧
λ∧p*!α@
ARGC@⊗`h∪⊃2∃QαI1E⊃$4!→∧e∃αH∀EF*⊂	)
∪∃U≠!
AHYβ%∂
⊗b4PJ2$$
E"e4∧ _LXX⊂⊂,,RP~~(∪∃+≠A_	αR ¬D
∀x93_hαP4Hxp¬Z:	H		∧β)(@2Xεββ⊗εαbe+QP@!33uI@$P ∀T,-1(TT)~∀%∞ε6pεQ2R h ⊂L→z2αE¬⊃P@!4∪t	$∀β!∧¬
ARGC@⊗fh∪⊂⊗>4r%αR ¬Bk
λ¬∃¬⊃ ¬∧aPd¬LE T,TT
λ∧∪!∨A∀A X4⊂λ&2$⊃αRQeYAAEλεβαbβ∀W!Q@∧a`Rdε @)PXnnn$∩vnnβ9α&M∧*~4X:DMQ3⊗$	3QR)@$j,FBα	JRST POPJ1~∀%≠⊂≡ZtIαRQbiE"R ¬⊂hPα0p)Yα⊂ ∀,TT
λAH∂&@! R4PJB>BRαA04Ph ∀
(x4[,¬∧f⊃!⊂ ∩,Xπ))'⊃∪⊂∃1e"RNε⊂¬¬∩Mβ#"A_3rP$
K⊂4Hxp¬ZεBα
∀~)β%∂!⊃_t&d"∩¬EK3∪;∧¬ε¬λε~0]	0↔βI∂&@@hπb¬∧IDααl9jCkrλ¬β!∧fgk∪αS @(4⊂
εJ=↓Ah→
$eRλ∧K
AαE i⊃h_]∧R*f`⊂E R,(TT)~∀%!+'⊂β YαQHR~(L
0≤∀)`
∩bβK _CE	JRSPλ@QQ(R4Ph ∃∧IH∃∀nB0h→αcbP∃⊗,!VSαAC@&4⊂
Bε-∩Ih→HU∃∩λYU≠a↔4l@tQ(
I⊂3@⊗T⊂4Qj1 ¬∧e∀)j⊂↔
XUg PβS ⊃(αH$*J-α⊗εQ∧rε∞MeZ≤|βPh
*u∀@⊗↔≤∧A-DW⊂~ε≥→5 5*λ4`*∂K∞A~⊂πh⊂∀⊗ V@1+H
βπLZP~J∧~0∃ Q+PhUλID∪αB2J*uλ

% εE∧SdπVEI @λY#M+¬%π¬→_∩w
_∞ ,T	∧-∀T	∀2¬8¬0J(p3∪∧¬∀+UE@∀P#gU⊂_⊂ T πS
	S@∨∃∧A(@2<rε $z8PhPc]8¬∀JIu0
⊂⊃i(⊂⊂E @% AA∃↓B¬α-∩∃∧β∪pdλαi≠h∪'aP"T(_P"T(~P"T(~`@0i(⊂↔A @% \A⊗Jβα⊃α⊗α*β∧~λZ%β~λZ%β"λZ%β2λZ%β4∀λT`(⊃P
gβE

λ¬')%Q_∞VQPh ⊂M8¬0I∀∃∀jJU↔k&6b".hi⊂1`→@'`∞-ZERO IF S@)I(nAπ¬→_~∀!1π⊂β(Y+-"N@0Q!∃¬-9
αeX¬3i↓ ∧]h∃i`λ REP	+∀qαε∩%⊃α4z λλi3P3∧λαl$jβE	PUSH @ 1α~(MαVN	$¬αe8~eC(β"B*
4r⊂⊃,(⊗*Uh∧S@,4⊂λ&BαZ4B∧hε∀¬Fβ"A~∃0	dλ(⊂AR1
∀∪A+'!¬↓2εI∀λ4(→HD$⊃⊗f&lλ
_⊗⊂(FXP ∪:$p∞ε
βV∪ 4⊂εb`SαS @+M
A6≤:~&2-→0⊂hαB0h→3H⊃¬F-c"A∀⊂¬))U⊂"`∩P0@λ~∀%'↔&∧qαεIλ¬BD
""'g$f⊂∪b`g)H*ibP⊃ ¬FAULT @= TT,'↑λ
(Jα*JNα@-∃∧¬β!"i(~Nα	ADDI TT0h`~∃∃% kαβP&BVα9∧R¬¬J5%∃K→phPα2TJ:α⊂"i∀_@

λ¬⊗Jβ:¬h→Yu *p∧P"~~_≠L_εE∧R& MD,E@%	!→>~B~bAHh ∀-*εs@!23⊃λ⊂**,ERBPLLπε@"5BA∧↔:5%∀→hr∧∃α5⊃$
⊂πdg∃ ¬R IS S@)=%⊗⊃∧z0∩∧hε∀↓Q@∧e*Sh"P*∃⊗"`∩P4∧~(MαVN	$¬αe8¬∀JK3c"A→TTu∧λαi(≠CE

λ¬% Aλt&≤Z&Bdλ∃∪
JiU≤<i→D-_Q!∀U∃8¬_ZTλ CE	JRSPλAI a
~(~∃∃↓B
hM~.&B*αεIEe"εB↑∃ 4(→
%∃Rλ~#
@∃Su*Hβ$f"TF@
	JUH!≤ββ$bY∃% a4⊂λ&N\JB*λ¬∃→βc#εBα	JRST E@%@h
∧Q!∀U∃8¬_ZTλλ CE
ERP3 4%∪⊂∩∩⊂εRQHZ$*⊂ε'aJ εX@ $∩w#+=)∃αλε≤D~!P@!2TTjD⊃0	(
F@

ERP (βP&&2$⊃αRQd*J
Bdz~Dhε∀¬⊃,¬agSαTROLLIF@2↓αAπ⊃¬$⊂∀(L
∩$∀
E"cF↓P@!5∀Pd
∃&εβ"B(`dbP∃*⊂↑M
∩A)%'(A∃% kα4⊂λ&BαZ4DRλ∧
:α)*,Sβ
∀∪5_∞Z⊗JαRQKi hPα2TJ:α⊂"i∀~`FEβA"`∩P4∧t&,r2>∞\H$%@8It`((#"HZTλ Nα	POP P →βHeα4PJB>A¬↓2εIλh ⊂M8¬0Dλβ, ⊂,R70+H∩w
→U'⊂A¬e)∃αα
E∩∧→hB¬≥J*Czλ⊂	kRh∧CH
λ∧∪!∨@A @2λH%nJ-~R>J*α∧4!→%∃≥D
%≥⊗λ
DNβRE@'Q_∞J∃∧rV ,_:2∧h@
∧⎇	!P@! ¬"g⊃ εUNtzP→5α⊃∩`*q1(
:v4uλYαD]g∪β @≠∨I
A
,r≥$α3sJ4⊂Q6)@dεD HERE
;@→∪M A2M~AE]∧b&"ε~α2&NαεC_hαC"J:αa**∪∧dg$U$`f⊂∀h∧ARTUP COD@
~∀4⊂	mmβ0`)tS )D∧¬c@4h∧ARTUP COD@
\@Lπ≤A
%%'(AI+⊂→1¬""*λ→Dd|4
∧D
8T∧9pεbiH$"`∩E8ε~)Xπ3@4∃∩⊃*(α`c*⊃i⊗⊂&∩ih#gH!`∂MES @⊃I
A	∪Iπ)→dXλ4'0∞gP#bP⊃'P''U⊂ λAVE DHE USE LπA$B∃αα$bMαVu"&"λ¬∩λT⊂p3	D∃∪hλZR3R¬@εE≥Nβ; @/∀A∩=∧r0≥λ∩⊂*@"P ∀HE U@'∀A∨A
_∞:NLr≥αxd∧@T∧P)SβRT UL¬)&bαR"∃∧~ε $D
D`4⊃psJ*λπεEβE&$iT≥	MOT¬≥∩AQ(Xb∩$p∞ε>∀R0∩∧βs@∃V(∪⊃(~β"`∪ XεbXXA:A>pε¬α8⊂&↓αE∧`SβBJNTT _\αYD$↔0λλ*j⊂-L,¬ ON A  KL @∨$αα.$Q!∀l@uQ3$
∃∩h⊗,⊂λεBα;CLEAR AND DISABLE IH
)I%+! εNfNαHDhhαR1I@⊂ 	TS,[
λPAON
λ∧∩]≥*N⊗Q¬Y0∃≥	~%~β∀F@X.FEαTεS@+M ⊃αβ0J91Pλ$T⊗⊂R\a0∀4PI ∃≤X∧q*D⊗kTIh*$gSα, →)Q:~(M"2=ααJBd⎇λ¬∩)@*⊂OPTOPC	8π≥:jN@%→HR∧Lh¬⊃**U0λ*∀P g"λ''P(⊂β SCREP∂β∂∀~∀%u~VN⊗α@
@5Tst
I3s@⊗**.FBα	TLNL∧A)(αb0≥¬H*$XHα.r(d⊂πjiλ)j`⊂ERIOR↓∞ $→→U~¬It∧DhID*∧*(T]5AP@!(∩TJ:α⊂&$Th_[DB]P⊂ Sα@λA∪_A∪(A
→β∪≠LA)=∧Bε@4T	DM≥∧z2¬≥→X$`9α⊂ ∀A@¬→
~(∩P~
∀*ε-↓α⊂EKhπ↔)∀h∧P,,TT]	; VALREPλAαααN@%)→d:¬It∧850	bH
S⊂*⊗h"gjU⊂ 
ODE
∀∪M↔∪!∂∀A)(∩$p
αRzα∀(⊂	VQl(⊂*⊗h"gjU⊂⊂λAND ⊂⊗J↓)≡A¬∀A'#+=0
∃$hP%↓h¬P)J1(⊗h~pr6D¬enR(d⊂π⊂≥∀lf`∀YP P%
λ∧6@!p¬e$X∧↔↓QKKU
λαi.
Lh@
.,¬)β≠A9 J~(6R`*5↓↓>thR2&Nαε∪ 7@εE.BDXEND @∨↓∪
≤A%)&~∀4⊂
&~pε⊃EASaE -8→∀c@Kα2J:λ⊂
,D10@'∃(⊂∀& ∧Dα2Tj∧∀K∃	@,)bjαDP⊂⊂λ≥b"aRb"P+R ad3βPS@3L@ZA$*0∀-αλ∪j$∃∪t
6Lβ"A⊃ ∧DPλ⊂⊂⊂≠AH
λA→∪0A-↓αBε<)αε∞≤*NN_)∀dMK~0hT_ib¬-8YD-≥5'DM∀p∞"_∨⊗⊂∩)h⊂*)`λAREP  7
_∞ 59_D-∩λ∧rλ~R3Qd
⊂1q*4∃r5	∧⊂πj$⊃i⊂%'PαS

λ∧∪!∪=_λ%@8Yd∀HT∧L@U⊃4J*4⊂
)CE
;R@'PA∩←≡↓' ≡~H4D4c"A~q0
-∪P* h∃βRT		8π ⊗↑∀JR*λiD:¬e∩Hβ"B*85⊗S$
∃⊗3hhβ		;TTY OUP	!-!α4H_rαEh¬`∀CE$c'λ%'a(Rdπ →64⊂
&Q I0∀∃∃⊗!⊃ ∧]iPlP ∀HIS JO@∧A/β9)&A$B∃αR%I1αJ
""-!Q$M	α(	(β!f∧BDX THAN LEP	)∪9∞Aβ≤αα& 4hZ$L@tH∩λ~β"P$U∧¬∃∪PJ∪/βI_	αnα(U%∀_Zd*¬JK∩∧TSs$	3QQ*)3t@∨WF@
]		;END OF IFN JO@¬#∪≡4⊂λ (':$-≤X¬_jQ13	~u∀h
Ih⊃Sj(q(⊂$λpε"`Sα GAR@¬β∂
↓∞>IHT:⊂∧ggβE)"h⊃`j⊂'⊃ ε,	SEP	5~β
~MX¬e∃∧9j@K]8ZB∧TQ1)I4p
)H* ∂ NIHλ~∃%
≤A⊃9↔⊂∩>8¬4$∀iH∀:\8ε⊃IH1kλ	Yβk ∪I A,(SEP	4R4⊂
&~pε":.dz≥ %1Q M∀X∧⊃(~α⊂$'∩d∧OG,bP∩lhP$&N\JB9αDrN≡I0
e@)(!g∃∧@	;HAC@⊗AQ_
αε4z&⊃α≥∩⊗εRLr≤4!⊃∩∧lzhTj∧∃Hd4BαkTJλpπ ∀		; @+9_
,XHT"∧α∃3I4∀q1iX3P
)CE	]		;END OF REPEAT H@≥↔1⊂∞≥4∧#!,¬	;EL¬λA∨_A∪
≤β⊃≥↔→=∞~*$⊃⊂&N\JB9α$∩N≡I1⊂K\I~E$zλiu∩¬xY∃∀λ∪U)X4R0d
⊗4⊃*1 ¬"↓	∧P&gUαEM A,@

λ$∩w)⊃∀A'%Qα
& ∧∧L@H⊂
$⊃P# ∩EEH	∪'P~∃πB &N9~∧`$⊂p)Qd∧@⊗∩$p
αα|J0∃$X∧H	X03Dd	5λ∩*4⊂πe`VP*'FBαCX$	 MOVEM A,FFC		; HAVE NO FR@
A
⊂∩2~αεMαdz0∀:λ~0hTK	↓~p¬dh∪α DXSGH	⊗∩$p
αit∧`9Q(∃
)10	P∃'P!gSαS ONE
∃λ`H∩A≠=(
⊗5∧	24hεC!∧ibj⊗αM GCTIM	λ8π%≤*Qα≡~αR&6*↓"N→h4*∧*Ye$LXT¬¬∀x(∀)⊗(⊃i@j⊂ ∩D¬'(}$~∀&≤*Rj5∧
2<8a⊂K](Z4-λ⊂3	Iph⊃IH1`$	p¬`lH* ∂ G@εA:⎇84(Q!∀U≥∧
Be$β∃TJ:b".j(αibjλ+ i$SβUS "TOP LEP
_↓(
εJL
∀dX∧hAQ@∧e)T⊂ V"T$g$lαDXSET U@ P@	→&0A%≥"0≥∀T	U,@Qq1∧λα j K⊂"g PαLE IL¬)∃∩VBR_h ⊂hαNr)@$j$`S$h
E D@
βU→(A	%%⊗∞αI`*+(∪P)X4c"D↓2Tt∧
λε((∪αUSNSEPλ~∀4⊂	nR∃IαRt	u∧3H∃	λαP ∀D¬%≠∪≥¬_Aβ&↓β⊂→αJz0~∧HZdL≤QQ M¬X∧r	$∀∪j	U∃⊗!Q@∧P%⊃!`

0↔!∃%~>∀iα&:M"&ε1∧:εJ
λλt*∧9yDd0p
$SβN (BUPλA	=_	≡⊃∧∩0≥$α⊃4D
⊂πP!SβMPACT ARRAYS)
λ∧∪≠∨Y'∩A"aEEEλε∪λhαB4
Zp∧%⊂∀⊗#ag∀*εE∧↓PUSHJ P →+⊃∪%'P~∧`.Lr&@$_⊃DM∀Tλ5-∃(Ye"¬Yi∃ @"Nr)$j$`S$h
E P¬β%∪=+&A¬%0
εJ⊂)αRz¬Td5Q3∧
P4Rλ_Q⊃4aP@∧fG∃αEI T,IN@$X	@hαB3)@k"f@5⊗+ ∀TSR~∀%≠⊂≡Z,Iα¬2λ¬`HJαr3I~α$`Fλ+ f*QP ∂F * @∪&T⊂∀(Lj0≥4YP
@∃KC!∧fgk⊃P V+⊃i)&$Th∧		;SET UP FOR @-β0O∪≥∞β⊗JJdJN@ Q!∧l@uQ3$λ+∃R*~αgj$QdεT
	S@↔∪A∂
Aβ→∪∩J h ⊂J	*%≥λ∪∀j
Q0
εBαL@∪⊂¬
h~8U$|β(⊂(i3∀Q↓⊃,¬d Ri(	 HAC @)8A%β⊂XA)⊂∀A~&∃~Qα∩Lj∀4!→T`:Q2(λ∃α*)*U$∧D]H i'jSαD _A→%∨5¬""*¬iDM≥¬`
Di~BJ∧i→D(hαB3)@k"f@0T∧TAPR@λ∩$p
"N-"Eαzα∀¬"Hβ"B	*Tp
⊂∩ abg∃∧¬∀~)∪
≤A%)&@2Xh ⊂hαS∩*:
nA~q0
-βE	SIXBIT↓1'π$
RV@AQ%∀4⊃0*D
+λε&λ⊗**∧D∞βIGNOR@
A-~⊗ $X∧tdλβ`i!⊂cbFEαX∧0 $@``@1e"P$↔9T≤α∩3HT⊂π fQF@

]↓∩w∃_
⊃α|1α&~pε&@%1Q h∪⊗∧B¬<→:E%KαH∩J*u⊂∀∃∀@

λ∧~(1nBα	e-≤βP	bU⊂*b$T)b`∀ UDRS5 UDRS4 UDRS1 @+⊃%&cαβ+	%&E	αV%∩MIααXDM∃4¬H
X⊂∧i)Mβ EDIRS8 UDRS 1∧A+	∪I'0A$rbN⊗αD¬$uα∀uε∧∃∪@,∀h∧2TL¬1'#!αRk∀jF(⊃_L)b`∀
λ∧~*≥*∃%ID¬¬∧βU4i@)b`∀ UD@∪%M ⊃ααIeE≤X¬λλε,⊂	bU⊂εEεBα
∃!A_
VNu~⊗@#$↓P@)1S@_ε,⊗aPTp ∩Bcb`∀PPN @)PX∩%\2 ≥∩λ¬∪J
h,hfjV⊂∃ibP#Qh∧P@!8∩∃'αα(%α(h4`Hα".d¬⊃q5
4⊂⊂λ'λ'c⊂!Ui)"g∃⊂ 
OB)
∃'∧H∪'Q0	αR ¬@HKαqSj$∀p2)Eλ⊂bλ(!"c⊃i⊂")Rh('εBαSA$	DS@↔!A_	αR ¬@HKαh
λ~h⊂	bU⊂!,P∃$"P S$`iP⊂βO@≠≠¬_
⊃⊃Q L@3uQ)T⊃∃⊗∃i`∞
	H∨-∃~A	(αbRRfL1I.→uαB8Q!∀l@uQ3$
∃∃
K3qLE8KPλ(∪α
∃:$∩w≥⊂A∨A%
≤Aλβ	@()_d`$⊂∧j)K-FE∧↓MH∂-
↓)(@2M*N 0Q!∧l@uQ3$
∃∃
K21LE8KP	g∪F@
	MLπ-~β)(@2%"f <`∧JheTsS!QTεDD∞βENDHπA∪→⊂	α~J0hPα2TJ:α⊂∀*
F@


α0↔∪9∪ ∩&λb&J∃¬""*	h∀l*	xb¬$α⊃(	X0r∩)@"P$gλ* λE F@β)U%⊗M∧b&NPhQ`≤Li~DLI≠$*αα∀uλ~α*`∪ UD@∪$αH4(Q*T$M*8U#Pβ"R(iH∩5
5α-FEαTεCALL @→∪M hf∩$p∞≡⊗αJ2∧t→PR∧|d	∃%~¬λ∀J@λ∪0eD⊂εf⊗λ ∧M) I@A% 4(∀¬e (3∃1!Q@∧ibU-⊂ @,		∩w
_∞:Z-∩QαRzαε@$yY∀4∀pfPαO@_~(∪⊃2∃RMαR h ∩α∧ε&JA¬A12nI261dj~@⊃∪7!Q@∧a`Rdε @)PXQ'∪a
&Q¬bb`"α#"A∀⊂εgk⊃dP @,Q!P≥
    TERMIN λ
(M~.&Bp∧∧λhαB(¬@+ f*QF@
	HRL@~A∧Y'&$*~P$KZN⊗Q¬*A↓λ∧uλ~α*`∪ F@β)U%⊗MJα~>I¬~&@$T	d@1#"KQ ∧]bSαD OF IFNIP	&~(~∀&lzP∀*λ¬∃¬HT⊂	dαDXIF BPEND SOMEH@∨.4⊂λ&∞j≡∃ααJBd¬h*∧,@Qα.d	4h∪λ~<MACLISP =M∪ ∩∃u"bRrhh ⊂Lλ∧TI@dP⊂⊃,Xπβ'π%0	αrdJNAjeh4(~:D$5B"!↔p∧iP∃$"`∩E A LISP: DEP
∪π∀}~(JαN.~λ∩β∩F1P@!2⊂	)∪βI  $10∞εN≤J`∩¬II∃≥β*9∃$+P
,∃,∧]
UDRS58∧∪⊃∀b`∀J∧+¬λβe∩iR*⊂GJ%H∂→λαH4(_rDTSB#!∧P%)∀h∧ @+⊃%&d~(∪⊂⊗>4)↓MF⊃P@!33uHTλK⊗gF	wlf@∨∃gc	i".DB]`iaRdP!,U ¬S
	H∂!9⊂∀(Jα*JNαD¬,%*6∀λHα".j@df&⊂∩ k"P∀dπMETH@∪≥∞β∪→α!P@!33uI@$P ∀,8LPNBUF- "xU¬ &%~P≤ Q!∧l@uQ(
Jλε('⊂αP
UDRS (h∪¬∪≤4⊂λ&*,jB*∧K
X∀Tl!⊃ ∧]d⊂iP⊂⊂2`ε $↓ ≡"⊗pε*V6α	∀`(c"B	_∀⊂@⊗%∃∃β!∧`ge∪⊂*⊗*Q))P∀
λ∧∪⊃β1)_4U*∩JMα↔ L@3uQ$ε+c!∧af'Tc
λ BFCL
α∪∃I' ⊃ααXE∃~_!P@*1∀Tf_(
∧fSβVE 1,3
λ¬%→*4p4(∀	$4≤ββ"JX∀Tl(≥	M∂T¬≥∩APY¬ &%~P≤ Q!∧L%λ ∩eJA⊂K]λ_D"∧βu5∧
p∧j$λ_∪iFBα	AOJL T,.-1∩~(∪!+≤B)αAeα0∀∀h~@HPα2∧II(⊂ ⊗∀dj"c∃∧¬
UDRS2:	SETZB 1,2
λ∧∪'Q0	↓M`h ⊂LYzd,Jλ⊂
_α$ihβE	M∞T¬∩AλY#!∧p4(~
U≤DαH∀¬JQ34
)tβ"A→⊂TS@RP⊂F-Piadmλ↔`ISP:/]
λ∧∪'$"ε@0⊃⊃β@94h∃	λαi"P⊂P ISP: D∧P¬∪π
|∩∀%∧RJN↓@λ∃(I4Tv↓⊂¬	M↓8
P∀,⊂ε∩btIb4T⊂α".I_H⊂	gK⊂#bjλ* λE LOGIBA@λA%∩ε 59H∃$LyaP@!2⊂	)∩βI $10∞εN≤J`∩αβs∩
:λπnFBα	MOVA  &YA⊂

@hP&$iZ5 @"B(	*Tp
⊂
ε#2
	JRST UDIRS0~∀ 
6 =hY∩β
AaD@*p	`→
λ∧∪⊃∃∩ ≤J∧K`iadVα  ∨→!# @>hh ⊂LYzd
α∧k∀	@!(εEα`∧NMSTλ
∀∩↓∃%'"αV∩~*5@"U1	~Th≥αd¬OVE @λY!9
@4PB6 =hT∧2e4¬~≠X⊂⊂,,T]
	SE@)hA(@0hP& ,zidJ∧ 
!⊃ ∧]h∩a` UP ASCII FOR REAL DEVICE IL∧A(~)+	&∃→P≠Pα23λHH⊂
* ∧
	JUM@!∀A)(YU	∪%'`~∧&≤
& 2λ¬∃¬DL¬εEαP 
RST UDIRS8
	IDPB TT,F
∪β9∃_A⊂¬E,$α4Tf@F@
	JRST UDIRSX
UDIRS8 4%∪∩∩⊂εRQHAP@!0p2(T∃∃⊗λα<
λ JRST UDIRSX
λMH∂-
↓$Y!≥	 ∩%]~"V~4b∃α∩⎇:0∩¬IλRα∪β∪ (f 	SP>" @!¬%(~∃U	%&@D	`⊂L→HD$∃∃⊗⊃∧¬∀∪)+⊂⊗B*αRQJXDM∃8εβ!∧a`dSα TT0@	xQ!∩∧U*:Bαr4∧c!∧P⊂$Q(!⊂*∃⊗)εEαP⊂%)∀h∧ @+⊃%&qα4⊂λ&BαZ4B∧hε∀¬Jβ"B)Yβk'$H*⊂5
λ∧∪'Q0	αR ¬@hPα21
λH⊂
*)		;FILL Lπ ⊗Q¬:&@$αλλλ∀∃stHD⊂πc⊂∪αULLS
∪β=∃→
APX\Z@λh ⊂Mλ¬4i	H⊂λ⊗∀'!# U∧¬∀∪A+'"RαA2h9t`*c"B*
4r⊂∀⊗ FEαh ∂P FXP,PL¬¬+4⊂λ&N-"`∀jλ∧∪H*c∃@1
∪!U'⊃)¬↓2Bh(d
β"B*	tλ∀¬H@εE∧T*id%λ(⊂COL¬&~∀%'↔&∧	α	2λh ∃,I~%≥C!→T`:β"dP⊂α,Q%AL@λ∩∩m⊃β&@!!&A≠¬∞ $~:αJε≥`λ
≡λε⊂ &or ded¬CkYβ!β∂πα8	!Q@∧ieRh"P*⊃dεE@1@∩∩`.⎇⊃↓"∩≤Yα6ε≤b&NAJβ⊂⊗␈$λ
]Y>⊂≤βystems
	 MOVEI B,Q%XALD
∪≠=(
,∀λ∩eI~5@"B3)@hεEI @εY#!A_λ (!~¬-≤α∩H
¬∀⊂
j∀)'hεBαX
∩w∃_
"	xb∧Li`λλFLβ"A~⊂πh%λ(⊂

~∃%
≤Aλβ⊃A2lhRR:@λ∧q*G@∧fgUα@
Aααb`≠⊗ ¬F,7"!↔pεjiU⊂!"P⊂βALLED WHEL∧A&u"⊗JJ-αRMα
∩∃αxh`hPα1q*J⊂0@_∃αεE∧H%))jλ* ∞@1M(r$HI`≤@⊂πibH$c⊂+QP!`g∃⊂""aRb"PFBα	LDB A,[Dhbh`@XYβ:$∩vfA→_∞IααHT`(αhλ, 4 FOR T@∨!LZb`~(∪'+¬$AαXd4⊂λ&∞J∃α¬cλ4(∀	T`:β"dP⊂T∧@≥∪0~∀&lzP∀,Tλ∩e$YhUEQ!∀l@uQ2$λα⊂2			0↔π
_∞
I∧∩&@%4λd`:H⊂∂/CE	MOT¬⊗%∧⊃2FR⎇αMI@hP&*Vmα∃α¬bq-L4PIα6>4*%α⊃cλ4(∀	T`:β"dP⊂α,QTEL¬⊗@↓Q L%λ "e4∧ _→_⊂⊂,,CCOCTεe 4Hh ⊂Lλ∧S	T⊂K∪j
v1U↓Q@∧d)∪&P!,SITEFT	∩wU	∪%'∃(A'⊃=+⊂∩⊃∧j0≤$α1V$
⊂∧$iCE	MOT¬∩AQ(Xc>Dh
96α8T=≤α6Q%6 εE∧R*f`⊂N A,TNXST0 		0↔αααN@$α3∪∧	⊂4h
Hαg"l∀∧¬∀∪5_∞@4Y∀β
@Pλ)∩dgεEαi*!d∀∧¬∀∩↓%∃≠@A):β
5#Q!∃≤-IyR¬5J6#¬Q*D`+∀p
_∞α	MOVEI D0Q)(R4⊂λ&2≤Aα"β4hXpε'cBD@	;GEPλA≤*≡ ,YjB∧uYX$-⊂β"B)	⊂ε⊂")j∀"
F@
	TLNE D,ST.⊃_
`4PIα*J≥!αRhε∀jF εE∧SdπV@'$AαX]→⊃'20h ⊂Lλ∧TI∀⊂+
λE ∧DDNβGE@(β!β∂
↓_
V6∀*H (!→%≥αλ¬⊗∩h*`∩E$	∩∩m≠β↔
↓' ⊗J*αBε≡*α⊗B~:E_hαB0)@ ∧ B10∞B¬-∩⊃.Bλ∧U :Jpλ Ibhλ+PA%C@!e:~(M"2=α⊂¬BE∧∀Z$"λα""'f"`∀ IPλA¬∀A%β⊃β¬→
4⊂λ&Rdr∃α⊃e~Q:2~ZN@"hkα]≥Ehdb]8¬H#`∞
	 TLZA B,(PA%EX)↓∩∩m	∨: ε⊗b⊗≥*R*λj$`9(⊃⊂*H(⊂4HX4c"A∀λ⊂
&∪β B,(PA%EX)
∀∪Q→≥
A⊂Y'(]A+$4PIα*J≥!αRkα5#⊂β"B*I⊂π"P⊂α, ⊃∧	⊗∞αβ∃⊂HHα.ui(⊂gUd∧D BLπ)!¬α¬⊗∞α∩∧h@
∧
X¬tAQ@∧P*∪- P!∀( @%Tπ$R∩$∩vA¬=)⊂A¬∀A∨9{y|4!∀α¬$β∪@'λ!⊗∀(⊂Rki)		0↔∪_Aβ→%∃β	2A]%∪)¬
2∃bα∩>j@l8QP@!(λλ
I⊂πP!∀( @%@π!2R$∩vAπ=!3β∧1
~(LRJNQ¬"0∃E8¬
↓QU∪V
:α→≥∧U&-⊂!∀( @%@π!2WAαK/$αH$%@9iu"¬z)∃$00SλUα⊂$cλ P⊃(∃i"Q4 cbFBα	SKIPN @!M3' ∩$∩vA¬~fNA∧¬↔4≠x2\αr`∪I∀~∀%¬"2=α⊂¬BE∧∀X5¬J⊃Q%$uα∀uεG@∧ih⊂aiFE∃'(λST10∀&≥*∀Jλ¬∃¬Jq1ti≠Q#"A→U34λt∃∃⊗∃'(λST0~(LRJNPαBI$Q+PK\YhB∧|d	∀4rλ@F↓αEεE∩c'⊂"X⊂
<1-SAIL>,[
D10@'∃(t4Ph ∪X→Ye ((⊂
*-RaaU,h ≥	8π↔α@D`A-~α. "y9∩β∧πphRαb1hZα* @B TT,
λ∧v∩A)%'(8V`⊂$KZ∩=αα*T`*⊂∧fbλ*"`∪T IF EL¬)%2↓_
>Q¬""-(QP@'b(821(
Jλε↔↓PβKAX
λ∧v∩@A≠∨-∃∩A)(αa@ ('1∩α∧αTTjDλπ∃@3
0⊗∩@A6⎇20∀Jλ¬∃¬F ∧D]PdπBJN O@≤@4bA2,
P∀-43
↔$	pπ⊂ H%`X@0
0⊗∩@Aβ∨	∃≤A%!19-α⊃⊂KZλ*U"¬4∧↔$	pπ⊂ H⊂ L Lπ$A↔$~∀`,Lj0≥4YP
%"β∩`&⊗∀β"AP@∧ibU-&P&SβNL6P
∪'∃)5~A
≠ ⊗@hP& ,zhTJ∧∃J∃$⎇λ∧l&αE∧d∀& 
 A,OP@'e
(~∀m≠β &∀)αNyXT$
α(∃hT⊂su)Hα⊂#$Qh¬RE Lπ+(AQ⊃∃α
∩B¬αDzN@"	h∀l*	λU∀/ooaQ@∧d	∪&P @,SITEFTλ
∀∪5_∞Z∃∧	2m⊗≤r6 5KQ⊂K\xZB∧lyi∃$⎇$
EM∧T
t`:Qβ"A_q0
*⊂a⊂ @,
∩A5_∞@4Y∀∧
@λλX__∧DNβAS@'U≠
A$zBMV⊂∧	1H⊃hZα* Aλ ¬N@)I2A:⎇!αRλZ$(hαB3λHH⊂ ⊗⊗β.BP @π≤K≠9(Yβ:$p
E↓βT¬$⎇λ∧k&⊗λε⊂→λ≤¬ ITS(λ@@~↓uαR,r⊗aDεbβ@(⊂
'T)P
2@~∀&≤z**λ⊂¬@∃YDDNβREAL T@∨!LZb`AM3')4XA%αQ⊃⊗I¬""ε9¬~& -YH∃$⎇'qP@!(⊂	bU-!⊂ K)c`g⊂d¬∩∩lA∨9¬2εJ&⎇*MαNLjV $~I∀`9TkλλIpπ*2df&⊂∩$ibcCE	 JRST (T)~∀%≠⊂≡Z*α¬ %4X4`*Q0	.CE	GETTABA(λ∩∩m∂(A5_∞ 4~Iu∩∧β⊃5HYα⊂'*Sa"`∩
λ∧∩A≠=(
N∀λ∩c(α"#!∧f"!λ V-@1406  @XYβ:4⊂λ&∞J0∩∧∃F`hPα(∀hZα'f@3dπNL6Pλ
∀∪5_∞@4Tλ∩eZX9d4l⊂∞FBα	GETTAB A,λ
(Jα6 =hT∧
@⊗p4hdh
 \@π⊂⊗Uα⊂KαFE∧PβAME A(	7βM∞&@$D9αjP⊃A90∀4PIα*J≥!↓"QHh ⊂M8ZD`9(⊂s*Zβ"B)Yβk"dH V(aSh¬~∀%⊃%→~βαP∩>¬~f~PhQ`≤l≠_$*¬9yT,$≠∀¬ 8(⊂sjYα"⊂#∩cj`∩E OU@(ααR"∃∧
JB¬∧B0≥≥D	d@1(∩λZQ(∂←OF@
	HRL@~A∧Y'&$*~P4PJ*JNα@λ¬
λ∧FE↔DXEND @∨↓λb`TpbP⊗NJ1`0β"C!β≥`
CLSET J@π'(hαα*∞Nα@D	Pp	j
P 
CST1 JCSPλf~(~∀4U~V
R$`&*∞bα& 4~I∀@⊂∧m U$gg4'j`∀IL¬∀Q!P@&L	α*@`i'6βD20 JC@_␈t~∀4TJ~9α ε∪αe1Q hT(9E≤-G!∃≤-K$∧"`Q!∀l@uQ(
%⊗h
4070  0Y'*≤b∃,e0+Q ¬)`IDi"iPβAN
SA$	RESCAN A~∃MαJ%∧~ε&∧hRN¬⊂JαN.~	b∧λβ"B$∧⊂¬))U⊂ 
CST3
IFN @'¬∪⊂⊃2XH$%@9	u∃∀_@
≤→D¬ (3∩1λ~α 	ON C@⊃
⊗~(LJ0∀≤α⊂	)H!		;TH@∪&↓∞J>≤Yα"ε~αR=αα:D
∃D
tM⊂∧⊂'Sα@
A∨_pλ4!→%∃≥D	$:ub!↔tO∀jπβ⊗)*K⊂)"Vλ'i⊂)U⊂εE∧PβAIE @∧XE$$∩w)≡↓
∃ααh∀dLAQ J∧8→∀`$⊂KλN∧¬
	JRST J@π')$βλ4(_8∀L*λ ∧)FE∧H!`dgλ!⊗⊃9CE	  @πβ∪α4⊂λ&*∃~Qα(:5%_⊃↔4d⎇8Z"b¬xY∃∀λ⊂	j⊂i*εEαdg!d∀)P!εBα	JRST @∃πM(f~∀%∞ε&*α∩b*AP@!(⊂p)→β⊂!, ¬h~∀%∃%' ε*∞Nα@
↓Q@∧e)∀h∧ JCSPλf~)∃π'%⊃Eh→→d9∀Thλε@
	JRST J@π'(f4⊂λ&∞J0∩∧%FC@ ¬∧e∀)j⊂%⊂βST4
λ∧∪πβ%
A∧X	*~(Jα≤→`%λX
FBα	JRST @∃πM(h~∀%∞ε&*α∩b(QP@!(⊂p)→β⊂!, ¬J4PJ*JNαD∧T≥8¬
↓QRPtjJnB4i@ ¬AKS B∩∩m'⊃& ∧∧
∧*)∀9hε⊂+R j⊂'∪βW???
∩A)%'(A)∞NQ_h ⊂L8→∀`$⊂KλE↓αE∧P∩))`∀ JCS@(LVd4PJ& 49
%~∧!Q J∧αQPiAα@
	JRST J@π')&4⊂
t↔8T`(λ∪qD	1S@~823β!%!`∪T4:∪∪9∞"J~α⊂hαB(	*Tp
⊂∩!i`∀3
∪π¬∪
A∧αbz4⊃↔4L2∧π⊂j'β⊂'iλ≤∧ALT> @∨π
+%&A=_	α∞|j6ε: ∧4(∀λ4Ldλ"c≠1Q Jα	*%≥λ∩Pj:α→DDNβBEFOR@
Aαα@	m	bαR"⊗pε ∀z	(4`@"B0h→;SFXTBL SFXTBI PROT@∧~(hRN@,*JD`L→jD-∀h→B¬∧9J5∩p∧g#H)'jj∩dεE@&4⊂λ (*8eE$)G HKαp
 PαLE OF @→∨
β ∩→ye~∧iz"¬≤hε→λ0rc!∧f`aT'`OOP @≥≤2~e+)RbPβ"C!)c _T@¬∩`(HI`≥⊂0SλT⊂πc⊂∩dεS@)I+π)∪=_
MαtzJ6εdbeα→`
$Dβtq$	⊂πa`U$gg)CE	MA@π%∨→=_∞Aαu~~
K+$`%λ¬εEβE( ∩OTB0∀∩$p∞Rε∀b∃αxd∧L@U⊃4J*4⊂
4)'j"PβP	∪∨8A∪≥$*JZεe_4(→X∀:Ss∪i@h⊂'(∀'PPRLεX@(hP4(Q'3@7h⊂
 PαLE MUST BE ANEXACT P@∨/∃$A>2αR↑t	∀`$⊂ε"g⊃h∧@⊂AM_
α≡*α≤aQ#@7nh∃*8(⊂	jT ¬R-WI@
≥∪9∞A¬∪9β% %¬~⊗εJ≤Aα6⊗αI∧`8λπεE∩ gf'⊃P OG2NP@%<Xp⊃9mαJ>R⊂¬Spβ"C!)"`⊂EAPλ@@c
} $xpI@()'←dεP@%<Y6A∪9)∨-baP≠;vp
f@F@
]		;END OF REPEAT 8λc?1_∞≥JqαJ=ylrBJ<hP4	@70∞d	5λ∩*4⊂πa+∩dπU@'12A+≤*2-8∧h
Ih⊂
iQP  ∩OT@π"α6ε∞α)u~∧([∀`9β"⊂*∩$iP(∪βIN@(αp4)@4εndλαhλPUL¬≡&t9α:Bα)r¬<α3∪∧λp54hT⊂3@_ZTStD	1H∃	λαP ⊂RLπ)πPA≠βπI_∞Mα
∩¬α⊗α8T "Q6

3Qq$	T⊂	'CEβ≥R$kPdj⊂$SαTSFX S@@/%⊂	αNα
tLL#"AP@εE≥Nβ;	PUSH@∀A→1 @1$JP≤~AP@'nh
P⊂βALLED F@%9~A/∪Q⊃&9∧	α:>∀jε "	→e$4TU*
λ∩⊂)@" ER T@≡A⊃π&  4)@70∞d
p∧"j∩ ¬R IT @∪&↓'β
↓)≡A∪M' ⊗∃∧	αVN-⊃α&:αHE∃∃X∧∃¬@ε@
;lp
αy`4→JU∀+λ∀jH0rtd
4λ∃	λαP$g∃ ¬RRUPT AND SKIPS ≤~(p
mm∧
Mα~⎇⊃αV&u!A1α ε≤|βU)→β)P*∩ ¬ INT@%%U!(A	∃'π¬∪A)∨$A]_∞J⊃ph ∪[4εh	_β*"i∀*h ∀S MU@'PA¬
A⊃
∃∩,#4
∧$b	zd-∀iIu 4⊂εjiU⊂!"FBα;; 6↓~ε∀bε⊃dεR"∃∧~0≤uHYe%~	xb∧Lh¬∀λIλ⊂λ'RdεTS TO @)!
A&q"B$DλT`*∀V#!≥]P≠ FOR TH@
AπU%%≥PA∪≥$"JJVα
Bb¬y↓∀9λ⊂si@* dg∀P"$"H)`k"Q¬
;lp
α∞|rR,h¬∀d	qH⊃∧λ3Q~%Hλ⊃K
λ∪5*:α⊂!"H$g⊂ H*i`a∪ ¬ @'Qβ ∩∃ph ⊂hαC"DH5p2*G@∧dε∀-⊂ ∩,L¬∨#+%(∩%\J→α→`<~βλ∃hT⊂4Q$	3H⊂$λP1~:α j"CE	JUMP@≤AHY∪/'Qβ⊗∩∩lAβ≥λααN :	ZU≥λ⊂	j⊂a` TH@
A∪9)⊗J∃*BP4PJ"JJRαI2→jE∧⊂εεEαa`dbH)⊗$g∃("&∃S$h ∪AT∧∩`.4zIαhZ5$1λ∀	∀⊂ε"k⊃d∧ (E,¬∞@9¬α∩1α⎇2⊗J~dzP~JAQ J∧αTTjD⊂∧kiU eDDKαSEE IH
)1%(∩`-∧
2Nt
5$90
$DT	∀`*⊃0	)∃h*εEαd¬OVEI R,(SP ∩∩$p∞&→¬""*λ∧tλXp⊃∪∧	4h∩)@⊂)gfQF@
	MLπ-
A_XQ'αH$%@4	4L@Qλ∪hd∀p
)⊂dεGE SP	β)∀@Q
]≤Xλ (!_4@1(∀EKTplA⊃,¬P$SαTE@%I+!)⊂A∨+"α0≤2λ∧tλXpR3HE εE∧H!`fgλ ε,SPSP$KYαRλYb∧mX∧u∧λα ∂ TH@
A∪9)'
@ε"ε∞Xh ⊂J∧	%∃≥D	∃ 9⊂πgeCE$g*∀c(λ 4%≠⊂≡Z*α→2nα
U≤DαH⊃K
λε)h∃βIN@:4⊂λ&6⎇2N%αα%Bl@TqPa⊃+P	bQP)c,βE	MOT¬~A_Y↓'
a)¬_QHR∩`.≤b0≤∀(Z"∧dβpp*I3sTd	04RhXλ⊂V$
qP4dπ
	AH∂¬∃8A$X\αiD$↔0λ
8T∧ ⊂RLεOλααJ>VαI∀`((⊂dS&⊂ ∩DTURNTO @'A(∞&8hP&"J∃Qα2I→e%∧IA⊂K](Z5$⎇(T∧~z5B∧h@
≤
hQP@!10!R⊂"⊗$T)b∀#
@@	;↓∪⊂~R-∩JVBα@$4ptI~∃∪tAQ@∧fgUαE @$1∪!'∩B→$Q!∃¬-95E¬I∃¬≥λ5∧2Hα.qhZα⊂ ⊂C ANDFLAGS
∪≠=(
⊗%∧12&Bα8bDJ#"A~∃0	dλ εP⊃ 1⊂∀!→T`:β"P#∀#∀FBα	JRST 2,@-1(FXP)∩∩m∞>h¬∩)@*bP+R j"k⊃i⊂ ↔E WE@%⊂A∩y→d8hαC"G]]P)⊃h∧U@%8A~J|iαN~βD90D∧∀Su*I3Q(	λ4h⊃	@dεE  PUSHJ @
 "αbNB↑Lq0⊂@ ¬εE∀h+dg∞α	MOVEH
A1ZbQ→1 @$KZBJ⊗α8U∃4Tλ`hPα2∀J+H⊃K	→β*("∪∧¬∀∪A_∞Aα5BA2~
5∧~α⊃J!↔t⊂
jλ(!P!⊂a` IL¬)=∧J0∃%λIB∧TP3(UαεE∧TdπS IPSPC(F)∩∩lA¬βπ-λA-↓αRt
DD(⊂s	@a!"i⊃b⊂$g∀h∧RUCTION
λ∧∪',⊃α5α∀
&l
`→βE	MOT¬~AHY∪!≥⊃"2⊃⊃∪@:p5Q$λ0p	P⊃⊂ g"λ)
	EXCHD,@∪!MλQR4⊂λ&6⎇2N%αα%Bl@TqPaQTpλ+Rdε1:	MH∂-
↓Y'
a)¬∩QHR∩`.∀*N@$z(R¬$α⊃(	Ipp5	→βg ∪ THATPπ
4PJ6 =hYR∧K⊂∀hk∃⊂S¬
J".dλpε'a⊂α@%⊂A/&$A↓αBαZ4DRλk¬αe8∧∃i→βεE∧PdπBJN R,SPTπ∪≤@λh ⊂L**5"∧α5ui→β∧D]UβE HAT¬∃ααyt`! ¬β≥`	WLLπ∨-∧J0∃%λ:@hPβ"C!$kf'SβK:	HRRP∀A_Y∪≥%α∩0$KZ~εNα@)3P4K∀∀q0*(p∧⊂'Q⊂( ∩OT@π h ⊂Lλ∧TK⊂)⊗$T)h!T⊃∀@		; TABLE @∨≤β!εA∪9)⊗J∃*BR⊗ ε~J>hh ⊂Mλ¬4i∧⊃P( ∧
	MH∂-$A⊃1h ∃∀X∧⊃(~α⊂&'QY' ⊂RLεY6~(∪⊂⊗>4)α2J
$`:⊂J`≡o↑&'QY' ⊂RLεZ]∃α≤uEP'gβ∀")
∪π¬∪⊂⊃αα%BDJ#"A∀⊂1⊃	∀⊃+w⊂ε'cL'( ∩N-(
%!
_
QV⊂∂A⊃TεDD∞βENDHπA∀*B,~@d|v)e¬∀qQ L@3uTd
K∀∀I@j!∀"
F@
	PLπ A
a Yλ~(∪⊃%%hA→2LrRB∩`@%n¬¬*N⊗~αYB¬4→JT*∧iz"∧C"B	*Tp
⊂
)∀DDNβG@≡AQ_
ααd
≤*λ¬r	_p∧⊂$⊂dεDLES DHIS @∪≥Q⊗JZ`$(Q'3@7h⊂siX(∩⊃*(αP ∀N∧A≠∨-∀A)"*αB
α4zJ↑ε∀!α>VαD∧@8H⊂ ~
Su⊃(j"b2dεTERP¬β_~(p
mm∧∩eα⊗βλD:5∩3Ht⊂∧g*⊂¬RVENIH
∞A%_
NR∃*≥$α3sJ5β⊂⊂*∩ ¬ ACS ARE C@∨%IβπReH4)@70∞dλ5P2)H0S⊃$λα*`∩IL¬∞A$B&Mα-B⊗∞VαI∀`9Kλ⊃+λq0λ*λ εX@ 8@A)⊂∀A!εA→→β∂&↓β%
~(p
mm∧r0≥λ⊂λ)⊂ib`∩VED ≤@THU@&0Aπ> )α&9¬~V∞∧λ∩¬¬)zD,≤HXB∧Lh¬⊃**P3λ
9⊂πjf⊃∧¬
;lp
αizB¬-8T∧5E∧	u∩¬IR¬∧4λddz5bα∧βSh	*30λ→→β)`∀RUCTIOL¬&A≠¬2A¬
↓+'λβX4)70∞dλ⊂πkbUαER, SK@∪!LAβ%
↓⊃β≥	1⊗⊃α≤zJJ⊗≥"2e8hQ ∃≤XT¬D≥J
$`1 ¬εE∩`εTXCT:∪!U'⊂A
a Y&¬~B
λe⊂hPα16λd⊂",IPSD!R$KZJ-8¬∪j(αP aTP"⊗⊂∀⊗⊂ g⊃⊂#εEαd¬OVE R,IPSR(F)		0↔
1β∂&A¬%∃↓Tr0≥
H∀HZu∪tHXβ"B	Yβk"dH ε,IPSF(F)		0↔β1'⊂≥1∧2bAαM→α>VαD∧`8H⊂d⊂a` (@¬⊗↑
∩∃¬$hP&BVα9α∧V⊂λ⊗⊃∧¬
	MLπ ~∃∧11"→Hh ⊂Mα⊂u∧λλεX@(FXP)		;E@1∃∞VR*αε 2	→e≥∀U0jI3sC!∧P!`R`@
	  AOS -1(FXP ∩∩$p∞"εt"2*λ∧ri~∀h⊂i@i)"aU&,FEα`giPXT#,∀⊂@
λMH∂-4A→2αB~bAHh ⊂M8¬0Dλβ, ⊂,R70+D~∀&A∩Jiα2b&5JλD`@"B3)@k"f@4⊗ 	PSR(F)
λ∧∪D∩!α⊃dJBN⊃D1$4!~∧`:λ⊃V
¬⊂∧h)T!PλF)
∪∃I' ⊃αM:2>y1⊂K≤β06$	Q11∧
⊂πP,⊂βT @'=≠
A≠=%∀4P!n→bE≥M∧	∀`*∀phH$g ∀SYX INTROTI@
)!A
α→bD6T∧⊂$SαTC %dA∪≥$
≥"	→e%%≠L@U⊂0K∧⊂∧g
⊗αAP⊂A%_
R
Yα&:αH$[
	→e$|αh∩*@k`	NIP∂'$
,4!Q h∀→jE≥M∧εB
9βiP'∀ εF@2H∩∩]≤*∃αNβ_4`9Tc"I→β*)lT]	SOS @≥!→
2d~)∪~R≥Jah→Qu (2(∀EJ∀paSβNS
	JRST IN@)	⊗b4Ph ∀Lh¬∀I@j≥∧d∪)(
 R,R∩∩m!%∨)∃∞Qα≤z∩*	xb¬$α⊃(λitS#!∧i`∃BI R,1		0⊗∪I_∞Qαλ¬Bm≤XyD@8c"B
)uλ⊂%Jq1s	cDD]BP⊂⊂↔α. MUL¬π!αq0∩pβ"B)*Tp
⊂∩dεTBK1	∩v%%∨(A∧Y'∂1⊂≡≤4Ph ∀Lh¬∀
λnB2	JT¬⊂))		;PROTE@π(A¬*J*λ9t`*q0	εBα	S@+	∩A$XD∩∩`.∀
≤Zλ¬4∧
⊂πP*∩ ¬ AOSHλA∨HA/"
"ε@4X∧C!∧d ∩RM R,IPS@C(F)~∀%'⊂≡M∧↓"I$HI`≥∀X∧u	@i"P*∩ ¬ COUH
)H~∀&U∩N@"	→e$|αc"APR3UλY(λ:λHLRM@∧Yα∩$p∞6Vα:B¬¬)zD,≥D	D,5D	∧@⊃H∪hd⊂H⊃I@i⊂!gSαS
	MH∂-$A$Yπ=_
M∧HI`≤D→~%J∧αr3HD⊂πc⊂⊂αACKUP FOR C@∨≤L~∀&U∩N@"	→e$∀4∧#!ε@
INTC2Y:	H@→%4A∧Yα$∩w6-~QαBα)u$0p
⊂∪ ¬F@(↓⊃β→↓_∞→α⊂ε~>I∧~0≤u1Q L@3uQ)∀∀K	(g`∞S1		0↔⊃¬∪% %∧Z& 4D	t2∧(_4]4λ⊃I@i⊂!gSαS
	JRS@(↓∪⊂~R∀YD4!Q$L@U⊂0JG@∧d)∀-⊂ ∩,UP)'X∩∩]≤*∃αVαYt≤ββ"A→TTu∧	5s∪i@eFEεBαIN@)Q30t∪!→% )¬⊃2H⊃↔4
∃(→d<*λ¬∪dλβgP*∪β @∪≤Q)3$X↓(∞"_9α¬<α3∪↓Q@∧h*Td⊂ ⊂,R	∩vβ∂(AQ⊃∃ααJE≤
$λ$≤αh∩)@* ∂ T, THEL∧A!∨A∀⊂∀(Lj0≥4Y∀¬∩dα3E
K4B"%)bbP∃,gl!U⊂*,dV!j⊂*⊗da`fβE	HRRZS IL¬⊃&∀JP$∃j4,*¬`
)Iu∪t	@h 

	JRST IN@)	⊗b4Ph ∀Lh¬⊂(l≥∧fSβP
'~α∧$;PAT@π⊂AAβ ∩∞@∧∧`*∃0	(⊃P 	NUM PFXEST SYH≥!α2Nβ_∀d~λz4`*v4qdλβig)VY⊂#iSαPF@1M∞A.tz∩∧αsSh∧¬


S@+	))0Mαε@$9
∀X⊂∧
u∀U(h∧ INSERT0A¬∪(ααRε
d*M "λ→d"¬8∧⊂(bP!`S!jf U$gg)CE

λ¬!β)
⊂t@AAβ ⊃iααbBε$~!h⊃Q L∀Ix4Z¬λ¬⊂j94¬εEβE( cQh¬P
	EPAT@π⊂z@h¬bkλβ"R)@#'i&H-`ENGP	!∧z→αB
"≤Bλ~$,
∧π ≠[⊃0λ U!`λ-PAP	π⊂4⊂λ (*λr(L*;∃≥≤wP∂)	3∪peZu⊃∩	⊃,¬ai∪βC@⊗@4A¬<
J*λ∧Q)Ipp5	→βg⊂FBαS@CTLπ A≥JM "β⊗tk~u⊃3+Q ¬(#IDb`_PUH
∂
↓
Nf≥~≤4)b¬-∃λp∂'Wλπ⊗a∀*i(#O↔h cTdh


10$	$@→∨M∞~∀4⊂
&:αYSkjaQ hPβ"Ng`⊂ ∪TRUC@(j`⊃XHJ& 4~I∀@λ∪∩*:α⊂ ∪TRUC@)U%∀Q'3@7hλλ¬%JJJD	00s	~tλ
E%JJJD	3R5	_3λ∪	~uλ∀jJU0u
ZQ(
E%JJJE%JJJE%JJJE%@εE≥Nβ;  *∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃∃∃∃
∃
;8εv@@TT@QRAπ∨A3%∪∂!(@br``A6
~Nε∞E*N⊗R%→α&:α:DM∃0
"H'c⊂*⊃a`λNOLOGY **~∀lp
m↓α↓)))RQ)αRDJMα~4∧
¬(X∀"lyiEJ∧i→D*
¬λ∀dbλ¬tI~α"`∪ R@'I(
⊗⊃J↓)))RQ)(Q'3@7hλλ¬%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%JJJE%@εEεBα
∀~)' ⊗
%"0&6~J>M∧20≥∩λ:$,
I→d:∧α3R
I03λ	I4p
⊂∀h∧RUCTURE
λ∧~*∧2b-8¬∂'VlL↓⊃ ∧]bTh∧IMAT@λ↓M!βπ
↓_
⊗⊗$*⊃α~⎇⊃αBVα(R∧R6∪JYαiFE∀lfbiU≤¬0~bβ	A@$HI`≤-8¬∩)X5⊃1∧	3R5	_3λ∪JYαa"iλ'c⊂&∩ih⊂)Vd¬BOLS
∃→M3β→εtzd`~)∂':≥JN≥uβP∂
;314jEtq1j94¬⊗@1>/SEGSIP∀∩m∂ ⊗⊗α:2∧
D
DD(∪U)XQ0	3βF @'e~A'≥&A:,*∩,AQ$=≤βP	lL≤¬= 8q'3≠M(Td|αZN⊗≡≤J`∩k↔`j81tr+∧XGUESS AT TH¬ NUMBER OF SY2↓'∂&↓_
⊗⊗$*⊂ (αQti@(# _SG=0~@eα~b⊗α:B]≤Xz4MRT∧/E@ibciRm	;GUES@&↓β ⊃ααI∧*∧βU3( ¬R OF PFX SEGS NEEDED

λ¬≠β3	
A:E2≥≤wP∂*λ1r3HuLLε¬tq1j94¬εEβA↔')U πWD		;@≥≡↓' ∩>∀
≡∃ααyu∀∀h∪j@"i⊂&Pai'P⊂ ¬FINIP	∪∨9&~(hR. 4x ∂'⊗α".i*fa"T⊂ ∂F Lπ¬∃
)&A
=$A>⊂
JJεHh ∩uα⊂tHXH∩sI@a

λ∧~(hP4THXdLQ(∀
Zα'a0F@
REL λAβ⊃	∨∧AqαP∃:α)C
@↔∩sI@a
REHλJA¬	∩>⊂εb¬2dZ0∀|!Q%$4S2)@ε@

D@
∪9
Aβ	⊃_∞	αλ¬D`! ¬""Q$g"P∪βB!N
λ¬%_⊂@]%_DWα4U∩⊗"Tλ⊂hUHZ$lLaQ$\@Sp@≡Oe`∞OB+1~∃Q%≠∪8~∀4SY`≠Zλ∧uλ→β" I⊂⊂# ∃N@π)&|qα6ε\*JL4Ph ∪[4εh	Yp5↔J⊂π fQTπIN∀ARNAL-H
β≠⊂	y1r¬∩0≥αβ3P)X,π⊗≡∀h abKc'i-Q →β	⊂⊃ycbεJ≡~jBJ>βp4	@70∞d	2p5ε∀∂∀∪H→αb@≡,<PBOP-H
β≠⊂|Xy'Aβπ
[→⊂≡I6α⊂)H0Q3πe∂∩3JHαi' S⊗g fQ←⊗≡ T πS-PROP <4⊂λ4(HT4LhT∧l\~@
@⊂K⊂eHαεE∧∀Pa⊂∩CE	A0Y≥∪_4⊂
J6αH∀C
λεpKX+∀∪IE,K⊗h≠1∀jYβ!'jSαD _bβ↓@ (*HU∀l→aP@! ¬""Q$g"P∪e`j1 A,B1
2⊃d(4(~⊂λ(⊂∩FEαb⊂,NIHλ~∃I≠ ∩ε@ε∩¬\8π1¬J⊂π&⊗L⊗-`nQT∧S@+9
>Vt!1EAαh ∃$X∧S)→βεEεBαβ≥aW. C ≤AA_
1α2p4(Q!P@'nh
@3e`j2 USED T@≡A
%⊗ε$)αεVαIdd|_@
∪s4aQL¬]@; MKAT2 <ATLπ~[≥¬≠
`9cb∃∀_Xbl@P31%XSt@⊗Ph¬TOLLπβλ[A%∨ @rar2ε∀"16~⎇⊃6"⊗"⊗I@aQ h∀HXdLQ(∪)85@_∃α"⊗!CE	QAUP	∨→=βλ@J4⊂λ&F4a ∩EED`)3β"I_Ts@≠anV⊂∀&j dP-P.Pβ,PNL-2,KA](	',r∀⎇YhBc∧¬P@)1P	bH-a`≥, RM@)¬⊂bAZαv¬2∧r15IeZεu2≥*0∀∀zYd"c⊗εhUHZ$lLaQ hPβ"Ng]P&`RbP gλ j'fH+`	TH AU@)9→∨βλβ!%∨!∃%)2A→%∨5∧	αNλ~$"λ∧∀I@h"`∩TY @→∪M(⊂∀)Xπ3@4∂∀∪H→αb@>0xd[π!β$[∧b&NQlJ⊃@2GH%∀LXeTL@U⊃4I@ f⊗g⊂d¬E<αar:=p¬T`8K04HzoC"HHαc$g⊃P 
KAL A,D,C →
4⊂
&~α9b¬\8π ⊗λ)&`∀AH1 @6↓;ε@2 ∧∩$EK4
lUJ5,@PSu)@ ∧,1@`⊂∀*L2N∃αβ85j@λ⊂	&U d⊂⊃ ,,D!⊃β⊂⊃K8∃l*J:T`(Su3HE,↓QU⊃4IY3C"APL¬]@; SAMD AS MKAL, @¬+(A]∪ ∩!∧	αZεe*∃α∞,b18Q'3@7hλ
(TR1(dH∩3JHαi' S⊂ ∞AME @≠βdA≥∨(αα∀(∪s)~α*"bβE""c∩dεE MKALV A(	λYY∃24
0 (αTS*H2λλP⊗β ]C,D!$AL,[A]E,V!C,100
RMTVC V!C,T¬β_~))⊗JlJ0⊂hαC"G]]P&Peb`∪ AHAβQ_∞5ααy∃$Bλ⊂
(3∃1$λq3∪¬D⊂U5∧	Sh∪jI⊃0	⊂∀)'h"T* 	ES
0⊗vβYα6.
1↓`%	h∀l+βK∂	H0Q3¬XSt@⊗UαCELL>,<COL¬)≥Q&P⊗>2jP∀≤YICrcIH∀(3!I@i⊗d"Pb"`∩>
~∃⊃
∪≥⊂A≠↔βXA!9e2≤bβ⊂kλAαE$c∀dε @7⊃:P⊃αα)U$∧∧(P.b,,[PN],C ≤XD``~∃%
'
Am	0∃1¬∩6@$→$¬λε⊗-T'(
,C,∧Xb`@~∃ε\αquu8hR2>
∧→0⊂hαR1J9β⊂ ≠V@π→:X@A-π0pλ4%hTe≤UDαα¬d~∧`'@εE∧Rc)g6βC],	@ε~(Jr⊗ %8U@HLi→B@"PkGW+C"IIph⊂e@↔
TERMIN
~∀lp
mαl
.⊗M∧	α5Yh5$Ly`
 95∩_∀∃P3
X(⊂q)Iβ"Ng]P&eQ+⊂⊂≤PL¬β≠
xXp∩→jD-∀h→Bl@P31'e∂∀∀I@h⊂
NAME0≤Xq∪⊂~&$Jε "β5P)J1(∂⊗∞ i#iKh)'h∂∧¬

D@
∪9
A6\2P∩¬	`λ⊗!V" ¬~∀%"Cε@∀~∀&⊂¬Bdt→AP@*S0
 R_P ≠ ]B,PNL-2,[PNP≠
1(	ε	c	A@4U∩6@%h4¬ $0K⊃↓QU⊃4IY3C"AQL¬]@; STRIL¬∂&AQ_∞≡⊗αI∧-∩λ¬∩λT∃stHJh∪qDλ(⊂λ'⊂d¬E IL¬)=∧	α2~:@hPβ"QλXR3Q∧λ4∪@⊗∀'
	(@\R¬%⊗B,
Q↓qbr2,hzDBπβPλ'∨α8V@#q0≠*T∧ ⊗⊗β%~∀!\V]I!π: ¬3
Mβ#"J	S∂ ≡Kαλ
∃→=
α→ph ∀
89∀JπβPλ'∨αλ
∃8zz\~)→∨εAA_
04U"⊗J6Lp4(1nBtaαMdλ"`$⊗VHλ∀⊂kC!∧¬

8εvvA5β↔~α¬↓
≥JN@$YPλDλ5∪s%@⊂⊂ ∃SUSALLY @⊃βLA≥≡AA%∨!I)∪~p4)@4εnd	4p ⊂∂$g ∀ERNAL-L¬β≠
xXp∩Bt
6∃@aQ hTHXdL@Q(∪*8(∪∪EJ⊂πεE∀&j dP-P.S'⊗⊗-T'(
,SUH
¬∨U_
"F⊂ε↓αE*"T&dgεBαλ
∀~(p
mm∧jε.∃∧	↓
Jr∩>Tλ∃$|β(@∃	tH⊂*Ipε`∪)
~∃⊃
∪≥⊂A≠%αβ!≥&~)∪% AA_	1K:∧`*w#"IZp(∀	@⊗('εBαTE@%5∪⊂_4U"⊗J6Lp4(Q'3@7h⊂hπT∂∀tλ_q(∂⊂∪b`g)H* λAT WE SHOULD HAVE A LA@¬⊗1∧20≥∩λ¬∩λT⊂∧"`Q ¬R
8εvvA⊂A∪&AQ⊃∃αd
∀3λ	Yβi"P∪βR LESS _A%AεA%&Aα@q'!βπ∀|⊂∀'0∞gP(&⊂∩iP#&⊂cP#'T⊂( ∩OP@%)dA→&≥!0∩α	_b∧uYIBb¬IλT`$⊂π$fλ-↑P_↔P#bj∀PεE≥Nβ;    AS@'∃≠¬→⊂X	↓α4zIαY8∃"∧8~4*@λ∩5∧	50	jλ!"P⊃∀'&⊗@2 ∧XA≤J0∀≤T
DD(⊂λ)∪βPE@%Q2@~∀lp
m↓α↓α2~:B¬<α3∪∧λ3∃p+~h∩⊂*@"P⊂∩@π→→LA∃+≥!αBJ,~⊗⊗∩Lr≥αRD)αBh→T*@3∩4jAα@
;lp
αBpε&MααI∧*¬	h∀l*λ∧u
)3Q`⊗λ∧¬∀vβY`~∧~ λ
I⊃(⊂*(βiP(∀'h"i∃,V⊂εBα;; 6β(	αRD)α2ε∀*1αxd¬$DT
d@∃1(λbf&εBα;; 6ααV
αM→α4z λ
I⊃(λHdπM@!%→⊗⊃l~0≤$UYd,,J5Tl*$λ$M∀h$ε,λλ⊂∀`h	S USED↓β&A
U_
∞RLz0⊂hαN`≥Nβ 					∩@@h`AMβ3&AU'λA%_	αNαJ%,≥JZ$-_Q!P@(α"c$SαE @%5)β⊂@λ∧∧5α"⊗(∪⊗(',AR,V,UC
PL¬_z@h¬`hTIx2¬~βC"J
5∪pD¬@εE$Q)bP-Pβ] , Q!D:
λ∧∩&⊂¬bbe	AP@*hπ⊂≥tXλ (αS∪hP!↔εBα	UC\4ε`≥]⊂εβαbβ∃C!∧P⊂⊂λ''⊂`T⊗⊂PNLλ
*⊂¬ckjaQ$d|4
∧`)β"P*	H⊂
h∪αX
~∃Q%≠∪8~∀4Ph ∪[4ε`~(αfgj⊃P+ f∃bP!bS&⊂&`RbiεEβE""c∩dεE RMP	-ε↓αP∩hR`∃Sβ(∞WβE&'aH!P∞
A:~∃%
'9¬Z≥jA_0hRhYE≤*A⊃∀`)3β"HW_
=8~∃→∨A5 (hRR-)Y∀`! ¬εEβE
;8εvAβI∂&A$yα&Jβ∪⊂→α=∩0≥4⊂	P∪βF  (↓
∨$A∃β'2A
_∞V:αI∀`(c"C!$i(⊂∀T∧ →6β↓11Ec⊂4)Mc!1U1βλ4)E⊂¬C∪~β ≠→[εE≤⊂1\h
]F 
f@[P02
13,30λXfTXhj~(`f@1⊂εrc≠uFβ @"Lmf@[P1];$XYlbP⊃Ac⊃1L4S!1U12aEAAα!P@&Lλλ→K→X⊂⊂4,20  \Xh`@β84)Eβ	E #&p
f@V→P↔74εXb`@f~)⊂εββ"β
_~V~006,5006~∀D``hXL`b`XP`b`XD``j~(hnnnαaIAE¬h4
:p∧∃kβ4C!*"`∩MIH∩∩m
∨$A	∪¬∨ ↓β%∂&↓!%∨!∃%)&-_4(Q  SYMBLπ⊂⊃αD*ε∩⊗α 4⎇$λ$L∀zπ hSαh
]H* λE MAINH@β	∃$A>2α¬αNβ→T)pε⊂$TP P)RdεGLE W@∨%⊂A∪≤AM3⊂⊗
|aαNB~∃ 0β"Ng]P ∀HE RIGHT HAL@Aπ=_
RεLrMαRD)αBJ⎇α⊗JRJα2&Nα@∧λ3Q⊂∃$"P&⊃c*⊂$⊂d∧F
8εvvAA_∞&:αJ2¬$βh∃	λαP ∩ESPλA∨_A)"*α",_HU∩bλ¬r	_p∧⊂$TP 	NTHE IS2 OR SY2↓β%ααp4)@4εnd
p∧g!QP*$"H)"`∪T OF TH@
A⊃∃β	⊂¬"ε2≤yα∞εdb⊗⊃αλ¬∃≥→X$`9α⊂!&∪βC@⊗DαIα6Vα:@hSαn`≥H& 	E Lπ≤Aβ8A⊗Z,qα↑z(B∧∀zYd$
+∃B¬$α⊃(	Iuh⊂I~α⊂'cλ* λE L@
"α"ε22α0≤0β"Ng]P ∀HE @≠β%_	αλX∀$4H∩*4⊂π'i∪`f&,H-"`∩O,∧A)⊃%&A¬∪PA∪&AU'λA	2A)⊃∀~∀`-Xπ2∧p4PH_q(⊂i@f ECTOR FLπ$A≠¬%↔&t9αBVα*∧`:q0	Vλ g"5$"g4 ¬SET T@≡Ai%≡\4⊂	mmβ4¬$DT
5L@0Ss∧λS∪pi4⊂∧iP⊂+gi⊃)P&'SαG:
8εvv∩$y-β%%_∞VM∧∩&@%4πK¬Gα('dSαTE@$↓)≡A4
2V∃∧~⊗ $GaP@'nh
DB↑ i#TP( ∩OP@%)d|X@1eα0∀XT∧dM8¬∂AQL¬]@; T@⊃
@
Zε∀J0≥-4λ$M∀h@_~Q(
εBα;; 6$h\`%hε2`' ∧gg⊃iP∀#∩βR NO PARTICULARLY GLπ⊂≡⊃¬∩⊗εN|q$4'0∞gDYW9	ZE@%<@Q%M%-⊂A~>⊂εNB⊗≤Jε "λ¬P)J1(⊂hYα&↔f⊂h⊂$ PβK ∩~(p
mlK→0∪@⊗⊂λπWH⊂	lSa'f⊂⊂αL@∨π,A≠β2↓
∃αα
U∀(
∀hX(⊃piX4R`∀CE_;h∩f@9αq∀`9Q(∩(hβ⊂!gSh 	LED CODE @≥∃	&A$B∃αNβ→T)pεεE∞β;;	3,∧l&|r∃α_hb∧≤βs4	→α"b @π⊂≡∩*αJ,hZ$,@Pq4dλT∧P'U$"`∩THAN@πβ→_↓+ ⊗<hQ`≠[1⊃∩DLX∧∪	_4he@≠P ↔HIC@⊂@)≠ ⊗Nα@
Dλ3∀sdλQ(∪i@∀@
;8εv∩f8jP∃Mpε⊂MTX∧Sd¬∀shλ`g⊂$SαD@∪%∃∞QααI¬∀⎇Xyα¬$α⊃(
@gi"5'P#bU⊂+ f∃bTFE∞β;; TH@
AβI∂&A¬∩0≥∧X∧U∀⊂∧iP∩dε @)!
Aπβ5
A
∨I≠β(A→β'2|
⊃αVα8U~@β"Ng]P ∀WLεA:Lr∃ ,)~B∧∃α5⊃*4⊃⊃0i@b"b0iP#'S& ∂WS8∧~)Xπ3@1 ∧X⊂∂←⊂'$S∧¬
;lp$⊗p
f@P≡P≡ 4εnn@!


)∪-12A&t2&4~K∩HhαN`≥Nβ	∪≤αz|A≤αiE "	``)uλ∧	tH
f@[FE≥Nβ; @)!+&@@β↓AAAαdβjαα∪R)Dλπ⊂~JT∧   @h``@*↓u↓ε4α`$
+∧λ3Q⊗εM`≠Lβ = (1  ≤@\h
]⊃Q hPβ"C!ε@
SP@π¬∨(ααNεHhP4*∩,"NεIPI↓↓↓α`X@2"⊗ε⊂HI`≤$X_B¬≤~ 
E¬)zD,≥HXB∧∃α(⊃hT@
		P	)	∃βλ~∃⊃
5@!∀ααα∧εαbd_HD ⊃↔4$01_& ∂CK MARKER~∀$∪ ∩R$*ε⊂4T∩NfN
⊃uu8HI`≤∀Xy∀`)R3Qd	qHλJ;4p
"SQ⊂ i∀ h	 PROP@&Q'
↓'3'αH4*>∀
JJεKP&εMβIt(*p	l
ca`⊂>,,@∪∨	β$b∩m_∞
ε∃∩εdQ!⊂M∃∀oε_λ¬ag∂⊗⊂IO@¬β$dαBRQ⊃Q%∀01∃λ_S⊃.A_4h∞)⊃*⊂FX>, →%M1)∧b$p∞J⊗"Rε
d(4(⊃~E%≠F_B\≤βO@⊗)!`∀!)(@$hRBJ∩$∩1h⊃_∃≠e(JB\5αλ∂⊗))`_T@∧d%]αVJ∃¬∩⊗ε∩$
∀dQQ HMJJ3cE84`'K∀Hj_∀*∃∀@
TTYIFA8∧∩&
→r4→E5≥Bαqpjπβ⊗⊗*∃,dc_B]j*,H$g ⊂UT FILE ARRAY~∀$∪ ∩R≠aF⊃89B\≤βJu↔K∃
K21LE
∃
#!**,gQ X
		AS<FIL+S@0αZ≡∞Aβ`¬J∃⊗3hf ∧]j∃,P'jU(*`∀FILE ARRAY
∩∪Q)&xc⊂Wπ1\~0∩]K∃4L@oK
J⊗3qF%∃∃∀CE$g$Rc ]∧B`iP≤FIHλ@.α;α\<8∧∂EE⊂∧g$Rc_D]R`εIT↓
∪→
↓β%%βd~∀$M"RMq!.∞G`¬I3R2(fJ⊂
*
F@
ESYSARtzP_Q!P@*t⊂u	@h⊂ ∪AR,@∪→LY7'βI:~(1n
p∧∧+∃Ptht⊂V∃HicP"UαCSGSY2AL@εA)%U)⊂A
*0∀∀zYd"¬8ε0)Hh⊂	Wλ ¬S@35∂&~∀4⊂λ ('0∞gP!"cRdεS OL∧AαAM∂6,rQα
⎇*0∀⊂4V%D⊂Q0h~αibP∪βF @)!
@E'A∞@$z∧¬≤
$!P@!αE)h⊂βBOT↓(
4T→0∪kβ+B'f ∂CATION@π⊂≡Vu"⊗Iα4zIαZbV∃α≤*21αα:∧≤QQ K[4εh	@'j"P∃$ j5αALUE CELLS FOR T _A9∪⊂⊃1¬*0∀∀zYd"bλ→d"¬X(∃∩Q!∪@7nh⊂*(αP$gλ(*`∩E @
%∀A')∨Iβ∂
~)
2x92β#∧¬P@*q1u*∧λπεE⊂αXVCSG=0~\4⊂
&~p∧∧`+∃Pthuα-FEαh cbUhεE∧PαXVCSG=0~\4⊂λ&2|→↓9.uBP∀≥8p
J81tr+⊗XFEαh cbUhεE.CE"`⊗CSG= :αp4(Q!P@*t⊂pI@h∧ IS2λ
*≥IJε2≠P4*2|→↓9-α 
IJv03λF@
SP@π)>αα&MIdJ2MK9∀m¬X∧Q$
v30I@d∧ BLHππ.hh ⊂hαC"AQTpλ!PαOT SYH
4Ph ∃%*ZDCPα)∩	*)*j∩⊗⊂NIL	∩w¬)∨5∧B⊗ε∩-⊃α4z 
 @ ¬∧h∃h∧@∨∧β)%+$@4*J,a⊂&ε$"0≤∩¬PJ)*sI→α⊗.%SαOB
R@_J!β		∨λA≥∪_19↔:|⊂4)@70∞a_tSpi4∃∪h

5∪pD	R3λλgi)"PβT@→24⊂λ (*~T`(Su3HG@∧R$$UNBOUH
λX1_
&0KZ& 5HZ$`(3λ∃)@!'jg⊃⊂ 
ARKER
SYALC8∧∪¬→=∞-αe~fε2_I`≤4z λλ→α OC
S.tzP_%\b0≤≤~I∀`9H⊂sjYβ*"iλ εOR↓'3≠¬=_A'∧
≤(β"C!)bcjT⊂!)lSicUcTdεS@3M∞U'≥'∪ )hε⊂hPα".hYβ"⊂'Q⊂)`→M@¬∨1∧:V⊗Nα1P@(4pfQi↑P≥8~∃!β≥ ⊗@hP4(1m⊃ ∧E%∃X¬∩∧∧α∩∩*SαBOUND B.IH
$nβ↓α&Bα	c
∧α4∀	@→⊂#↔λ ¬PFXGS BPURF@&↓!/&|J0∃"∧@	
Yβ!'jSαD $⊃_
&1¬20∀LD∧B%%*ZDB¬h¬λ
@*)*j∩⊂)`∃N@¬∨+≥⊂~∀4Ph ∃≤X*E$bλ∧uλ~U∀hλitH∀k⊗Kλ∀λkλε⊂ SαD @!→&A7¬*J*	I∃≥↔(∀jλ0q4aQ@εE_L⊂∧	$HISEG
λ∧~*≥α≤∀z@
≥K!Q""	∃∀JZα$~	4εnnf@`X@25"JVR@h ⊂Hα,¬Dα∩*)∃h∧H
$ λI+9
>Vt!`⊂Kvp
f6
:αg!'UdεD
		0,,$ 	+≥	_∞V: h ⊂hαP@↔∂↑W∧]S'a`j∩`πN CLπ+≥$"Iα~⎇⊃αNfl∩0≤@λ⊂S	↓a` SPACE
λ∧~*≤*≡@-∧λ%≥K*8r\=9j5K∩*8T=≤α6K&⊃ ¬εEβA
λSPCBOT PFX
α~∃%_
I]βP&I]h ⊂hαR1I@⊂"_@0,[
IF@
A≤
& "K1P@)4⊂λ']		.		0↔∪9∪ ∩&λ	B¬¬	`4⎇$	DM≥∧z2α∃8ε4d⊂""k∩abFE∩h('28∧∩%ph ∃hα.q)@"⊂'cλ$c"P∀`dfεBα;fo@HA'β∪0XAoJ↓QCm
↓i@≥β&yβ@&Tε&.m_M≡~;p↔λ0s:2\α "MA@εDAC9H@E→M DACIJAIKα3';↔ h ∃hα.q)@"⊂'cλ$c'0_XεEβA
F,∧z`5pI`≤dβpp*I3s@_gjg*⊂i⊂#'T⊂( ∃RE FIXL¬+≠~↓5αVα8T"∧iz"¬∧βP3(Zh⊂3HD⊂∧g
SiFEεBαSEGUP BPFXSG+GSH
!
a'∞@*≤*≡N≠%SλhαQ4λk⊃to'Uβ

λ∧⊂∀(hRNB∞∀zQαB5_4*
¬*J54π/%@∧@	;BEG@∪≥9∪⊂~≥∧z→αBαZ$*∧h∧h¬λβ'i IH
'I(A
∪1
A!β≥
R4Ph ⊂hαC"AQL¬]@; @
%∀A')∨Iβ∂
AM)+
↓)⊃β(β∪&A≥∃(
-$λt4q1⊗λ''i DARE MARKED F@%=~@@"tz0∩l)_$`:λ∧FEβE( ↔ILπ∪≥ π"∧t→A⊂HJ∧¬`≥<α5∩	@jj⊂$SαTE@%I+!)&↓'!π%β⊂⊃αα
U∀(∪∪h`j$gSα
∀~(@@∩Hα"V 4)zT`(∞C"A⊃ ∧`h∪α UNBLπ+≥λ4⊂λ ($∧J"Ii∧cPα""'h ∞AME FOR NIL
λ∧∩&
α0∩∧βR3↓Q@εE+∪αIL:	L¬∪_∩m_
&1=→αZεe*∃α∞,b1α~4∧L@H⊂λ#∀P⊂
 THAT WAY @3=*Aπβ8O ⊃αα8U%
	~@hPβ"H∧↓)	∃
*5∩≥αDXPNAH
A=A(~(∩∪β!8A(~∃Y(t4U2RJVαIβ@!5∀U*Iα.s	→q0dTbP!`Sα ∂(AM ∩E¬ 4(Q!P@'nh
@4h∧ANDARD UL¬¬∨+9λA-β1+
Aπ∃→_@ZααB>→jD,"λ¬∪DλT∧P S&⊂ ∪YMBOLS W@⊃∪
⊂⊂∀'0∞gP"'g	h∧ HAT¬∃ααI∧,M$	u 9β⊂ ⊗ALUE CEH	1p∧∧`)u⊃.Dλ3∪λ
:αad SYMBOLS ARE
∀vβY`~∧α⊃3	→βabg∃)$aWλ&j`∪T HAVE SUNBLπ+≥λααε
>4)α,h@λ	@c⊂ ⊗ALUE CEH	1∧
J,⊃Q#@7nh$
q1(λ{4pλ~PP g"λ)i`→ST@~\4⊂λ ($∧M≥Yh$`:αg":	QUNBLπ+≥λ4⊂λ ( c]8∧th)&⊂ Ta)&⊂∀lia)∪⊂)a)∪⊂(cI∃&⊂$cTa+⊂(S)j#↔⊗⊂( ∩M@π→&A	'3'β@A#
_9$AHIβ_AE
_@:D)α"∃$
1αF4a0∀Dλ∀b⊂3λ
_SQ∀⊃⊗)λ→α⊂ ⊃FL.LE L@
Iβ0A#
_9⊃~A⊃4Iβ_AE
_@:e!α2Q$
1α⊗α;∃≤
↓Q hU8¬0JJ⊂ε∧dSαITIAL P@+I
A2M~QαNαJ%,≥JZ$(hαC"J:tpTIG@∧h`T) lP	F@
AS@¬%_t%#β+$z2>ε ¬∀4!Q%≥M8*$cPα40**P6+¬JpTS↓Q@εE)PαRL:	QSUBR  
4PJF~NαX%∩αQQ MJ:T*K∪I→αεEεBαQGRTL:∪"α"≡J⊗
!12i→@HKαj∨
P#'iλ*ci"Ph∧

λ¬∪∂'	(	h→x$
∃(≠∩be(X∀%$_)D(KαqSj$λQ4J)AC@∨~α↓∀4!⊃∃
∃EDM∀~H$`@ ¬∧aλR f≥λ⊂(`jU'`OAD %
		QFL,∧C∧X1_
&0hRRεJlJ0⊂@ ¬εE∩c'⊂)Pdf⊗-CE	QFL.E@$βP&&J~6 *∧QP@! 41*(α`b,,IRAT@¬_~∀%$Iβ0p	↓αα_∃-∧βs∪h_λ	#!↓ 41IEQ0	,,NIL
λ∧∪#
0X
"∃β!∀M∀_9tjαQQ HM→λTeαβ∩*(5⊂S↓Q@∧d"I f≥⊂λ(`jj∪βH	>!↓∧Q!⊂MiEdD+∪I→β"W!Q@εE$Q'⊂$j∀T-FEαhc&↔⊂d∧: IRACOM  
4PH&Fεdb~&2-→12~(∃$∀AQ LDH∀cR∧
∀
5∪s	@`b⊂∩CE		QFL.AL,,@≥∪0~∃ 4KZ⊗ 4D	t2∧α1SD	5∀c!$c' USELESS$[	
∪#→_]	2h∪∪%β
_∞ *∧QP@! ∧hb∃d¬PARRAP∪&0Y∪%βQ
04PJ∩e∩a`⊂M_~U$|β∪p(D	#"A⊃41S¬@ ∧Y,,L¬∪_~):∩$KZ⊗ 4D	t2∧α1SD
4q3λZtc"AQR1SD	SpT)→βn"20,[
QFL.LE:∪∪Iβπ>h∧α(hαB4)Hαb$j⊗ 	RATBL
L@
Iβ0p	↓αα_∃-⊂πf'Pb⊂∩FBα	QFL,¬→
X1_
&0hRt4)_d`$⊂¬'a∀dgV-CE(c&αH@~@PJ&Jε≤z5↓∀hP&F"αYT)⊃+	~P5⊂IAα@
HM$AL:  QAUTLπ⊂∩x_Bα ∧D]Yαh∂dA!+⊂⊗
d(4(~_dbt	P¬IR3β!(c&↔∪*≥∧dT agfH⊂¬∩∩mH ?$	DM≥λ¬β!∧hf$Th*⊗⊗∩i j!∪∧¬∃→PIβ_tA#β+Q_∞2x_Bα εE∧Tc&↔&∃⊗⊂NILλ
*hH%n⊗t!α>→∧J~9αTz∃→qP@!α@
ESYSAP==($KZ⊗ 4D	t2¬8ε4jHαfP Uh∧@∨→=βλA¬∩0≥∧X∧U	_4c"AQ@↓Gt)0)Hα⊂ ⊃A%DDDIRATBL @∪%¬∞ <Tλ$`),Lp$λSS →a⊂!'α1A BL¬,eαβ# ∩I~5"¬→J5∧⎇X¬λ
→α)`⊂OUPλA
*P≤@λ⊂λjT&⊂&#SβR~∀4⊂λ (*⊂	(→α"≥∧BDX"AUP	>dzε⊃XHU )0q(ED⊂U5∧	Su⊃$
)0 S ∧ BELOW!
λ∧d`J%#	'⊗αJ~)⊂εα"~~¬~αQQ$M	λα
→α$ih⊗ ∞IL
20$	QMACLIS@ 0Y≥∪_4⊂
&~pε⊃EAeX4(∃`
f∃α⊂NILλ
(LJBBd∧(∧Q ¬∧dT( ∞20Y≥∪_4⊂
`(↔8T`(α⊂'cλ$c'1_XεE_∩⊂⊂∀RhλALD: @#⊃'⊗@1e	⊗ε2 ¬3λhαC"J_)1⊃λG@∧di⊂a`∂M0Y≥∪_ p∞εVαItd|_@$1P5)Jλ⊃⊃*@$abWQ$i"aU'i,P∪$i`∀
λ¬∪%βQ
1hM
~εNba2:&`h ∀M(_4`9,¬∧hS$i`⊂,,NIL	8π')β9	β%λβ↓⊗ZL~∃<I~$,≥Iz%J∧iz"∧
X¬∪IIp1_i3⊃4d↓α@

IFN BIG@≥+4Y6~∃	_
5I≤	`⊂L→`∧∧α@
	I@bX1_
&0hR∀tT∧Lh≥	IN0 %
	IN $0Y≥∪_4⊂

9pε∀Pα23F¬l+	@$fεE⊂αNV %∧pλ&
q1E "Ii∀`@"W"!↔q3Q∧	qH∩(iH⊂R(yβ*fFBα
∀~)# ∩I~5#Pα5∀JZα λ,,L¬∪_~)∪
≤A%)&@2Xh ∃J:∧`:αj≥∧TTεLISP. %		;FOR ITS, ( ≡]1∪' ↑8A∨+%αV@"α#"A⊃43u*J∃0
,,NIL
λ¬0∀$HI`≤,h@`8H∩1I@⊂ 	TS
IFN @λd`104*→E≥∧βu5π∧hf`PβH	∪'@@@∀⊃↔44⎇$λC∪αβλ
	X0s∩*:λ∪u*J∃0
∀CE		QLπ+)!U(X@2tJ0 (+Q⊂HKαq3HD⊂πc⊂∩c'⊂"_εE≥Td∧S@!=+ ⊃α≤z0∃≥J*T:⊃1_~α⊂ ∩UL∧A)∪5
A
∨HA⊃Eh ⊂hαC"J~αkf≥αhj`↔RIP	
X1_
&0hRF@-)G M
X∧Qλ_λε⊗'∩d∧
LGH∂$t%#∂=α(4λ~~$
∃0	'⊗ ∞IL
;QN↓%→'%↓αFR≤*REαα≠¬≤-J⊂
∃→J2α∀3#
:α⊂ ⊃SJC@_AM!π:j⊗Mαα
U∃≥λ9d@10	P∀ ∧LN↓¬≠&~(∩¬#≥%→'%∪@!44q*J(	"!↔qStD	R2α	D⊃0	)∪βR MESSAGD
α∩\αYE"Ia∧`@"B3I→α⊗ε'∩d∧

λ¬#)'∃)"@(M
N⊗Rλ¬∧$⊃↔44⎇$
d-∀~H∃~∧X∧TIi⊂&b∀i`cb↓
α∩\αYE "Ii∀`@"B5
*5∩⊗'$fεBα
∃#a')"βP&FN-"E↓∀HH%n~⎇⊃αBVα)∃$
4λU∃∀z l-8∧p(x εE∧Tl)bjP∧ →≥%_⊂∀!Q$
∃→J3@!404J(4∧P∩BDX(ARRAY ?)~∀⊃#⊂⊗2≥!`⊂M→P¬IR3α!⊃,¬f$Th∧ OF A @#U')∪=_	αX~$[R¬∂e⊃ ¬εE∀i`
CL8∧∪#'Qβ ∩Vα4α(Hα.`∀∀h∧ATUS @∃π0R~(M
*∞EED`)3β"AQTpλ!SαAMES8∧∩$KY"NR
"VMαα:∧9β fbTT@
	QSYMBLπ_@J4⊂λ&F
∩Jε@∀∧PhUλ¬4J:⊂sP)X4h
∧αDX(STATUS PU@%M!π:j⊗M⊃Q MI~5"αQQ$L4d	∧`)pε'cK-FE∧T b$lλ_X↔εBα	REPEAT HL¬↔2|9-E1∧~0≤@Ph∀)
3R`⊗↔↔)(!SαT _X0X	-DhP&Jε$Ja↓`hRt%@8Yd"∧βqH	_SH∩	@%`OG
BG⊂∪#¬∪≥_
V5α(4*∩@∧@MJZ∧d4∧⊂∩CE!`_⊂∪#π∨5!→@¬∀4(H" M_Iu,∀HTα(hαB4(i⊂πg*SP∩FEαhc$l∪αUM ,,NIL
λ∧~*∧"2:εl*MhQ)∃∃¬4¬Be∃K5∀1h⊃ID⊃P4h"anCE	Q¬10C!⊃_X@2L2N∃αβ;∃mZλπ6e@∃XnFBαTE@%5∪⊂_4P1nJ%
R,!Q h⊂β"TjXU∃∪↓~P3Q	@d¬ @'e' ∩⊗lJ~∧~Itm_Q!P@!αE≥@; +@∪≥Q%≥β0ZP≥≥ljε∞Jz↓*6Vα:BRε,Tε -<X	zλ4p∞ @QQSfAβ#πLUBε6β|@⊂
)j J∃iP ∪YSP	~αP	99Hh ∪[4
∃∀∀5⊃$
<h⊂∪~y9z<βy`≠E=XAKq
KahAα3?IααJ%-∩λ⊂⊂[2⊂ ⊃UL¬¬∨+9λ@@5m∩P≤XQ!P@*Q∀5λXHεiα∀h∧E		8π)"*α0≥$α⊃4J4∃r3DλQ0p*Zq(∃	λαl@ T ¬ ,↓∞"ε∃_4*&∃↓αaEK5∀∀5⊃(⊗)"	Qd¬I,RDVBA∩,RDDBLQP≠20Y76OtY6wjb`∨eUK2+4εFEαd¬KAT1 [+IL¬)∀rε "β6+)X0p	'Wija)-P ≥X,0
TERMIN
∪≠-β ⊃DαZ& 5HZ$`(35
K4pp)@⊗i`∃BR,S@+	$Y6Au))3¬UXf~(∪⊂⊗.
!E↓9→e$4SP)E4π(@-MAC@%<Y'+¬HY6Al~RJ2λ¬C@"@α	Yp5_H∃`	NTERNAL-↑S-MACRO,SP¬$αb`~¬X:E∀e5FhPα32h~α_@∃RdεTERL¬β_[y	6
∀*ε-J:T*K⊗`⊂↔a`∞.B@∧Xd~(∪⊂⊗.
!E↓9→e$4SP)E23s¬XTQ0)5α)`∃BR,[ ]I@∂→∧αaD4!→T\
F⊂
\Lh¬⊃
)P3*ZQ01¬X3qQI@⊗)`∃BR,[ ]UREOF,2~∀%≠↔β(β	↓.→jD-∀h→BlLh9E,$UXT`8QS@⊗∀h¬BR10
αvLr≤,xeC⊂@"B3)85 ∃93P
"∀' f⊗U*,Vb∪αDPAGEFN,SUBR,[ X))e≠⊂≡Icλ4(Q!∧l\~@$¬p∧g*⊂i' fU))bU⊗a)"PePSU@¬$Y6β3π∧XD~∃∪%@A0@1eZV∩→e*∃2JzD
@∃1u¬Jpπ @,GC@_Y→βπ:~(∪⊂⊗.
!E↓9→e$4SP)E4∧⊗a∀ ¬AK1' ⊗
⊂¬E@4↔0⊂Pα,1
T@%≠%_λ4!Q"α→Y4
 
i→β*"i∩αAL-PDL ≠¬Iββ⊗YM+¬$YlA0⊗B$b∩c⊃Q"α→Y4
 
i→β*"i∪αAL-G@π≡@6∃∩⊗ε-e~V
IeYα`,x9t%#"AQ@∧fePh∧1 +IH
)I_
ε1l
V@$yIt"β∀u()⊗-@ ]IALB
~∀_w#¬%∂⊂~Vh∧∧M∀ptj$⊂∧h(∪α1 IPPN2

0⊗@Xπ2∧tzHR¬<YIB
πMRπ∨α;8M⎇λ~→,≤α2y9H30∂`$4⊂	mmβ0λ↓⊃3∩4jEλ⊃R+	U3 ⊗λ εLONUH
XA⊃_∞@,)HRb∧9yU∧dXε⊗λ ∧U@!10@1∧∩&≡h¬3%Aα@
;lp$~;∀l∀yEBβ@⊂∧ ∃NKS>, RANDOM(λAβI%β $hQ`≠[4∧αε@=<p~λ12P !lh	←GαS↔⊃∧ε6/∂\XNM8;⊂⊗≡T∧ i@8A`∪#∂!β ?,LW%H⊂
g≠z2P !lso @QQChAβ##'LhQ`≠[4∧αε≡⎇n7'⊗≥_ND≠x %p¬P∪παλd∞α42P≠2|: cons@Q`π≥nBπ≠{kKTλ⊂
4~yP4`3 so @QQCh~(p
mmα↓β∂↔↔#π'dλM}=~0↔→yP @9←iCE1rA4
11βneβGαX
,={_P→4yx !tch @QQejAα	β@&≤-F(hαN`≥Nβ   @=H	βK|εW&NβY0→K⊂4w2→|2r by the se@Ek@↔l8	$
β:vq→y⊂7`& TYPEP of a fo@IZP_Q!PD≤βs3(Yβ*⊂⊃H(f$iU≥⊂ c∩l ∞@+4pA#
1≠⊂~ViQαF∩⎇*
2∃RαF∞yZ∧d
α
H
_∃0∪λ[∞C"A∀λ⊂0I_sU3'$∀4v)XSs∞D
2∃3I6∞HEeH⊂2
YR{FD∧∀4P)h⊂πf@: QARRAY2 #
  		MKAT LAST,LSEBR,[ ]
  		IRA↓
∪!≥U~~∧@∩∪≠∀	α~2|rV4∀T"↓$LjJ¬α$zV
2(h"∞a H&&Jλ∧∧\X∧∪λ[β"Q∧α"3*((⊃∃*	⊃0εB!#R∧Bdi @ @¬∪∂≥U~~)α$&6α(∩¬≥→X$`9αεE$Q'⊂$'∩d∧GG104	α↓↓αε∃↓αaEK3αc∃F"c~β
⊗
T∧6,7,8$9]SZ,,[2,4,8,16,32,6$0bd`!c⊃U@2FV∪∩c⊗ε#%@ εE∧H⊂⊂⊂&T`P$*SαK!X1⊃+≥⊗α
NhQ!∩αα∧	∀4(R**⊂sU¬Y⊃Rs	@cR⊂↔∩ij'hβE⊂⊂⊂λ*"`∩MIH4Uh%n⊗t!α>→∧J~9αDr. $xqPBα↓⊃∀l\~@λ
(3Q∪iU⊃∀u()⊗-P↔X_FEβE→P≠≠ NOTE WELL! the sqmbol hea`	KeLAMOd4∀vvvα$&ε∃∩εe1¬~V
Ibα~NV∃⊃1α2≥*αI1∧*bBIbα~εBα
"b∧X_5∀zDλ∃-∧βs∪h_β"Ng]P⊂⊂≠zyz be allh∂GCcons@Q`π≥nBε@⎇Y0→≠0x9P≥42P 0p¬KGKα+∪'lp∞≡}n8
∞0p	nt p	←↑9:@A&C'MβLε2π≡tλ

=β"G]]P∀∞α42P~w:2`2p¬kahβQC@;&c↔Iαneβ#∂3∃βπpπ↔πOL∧W$≥~0⊗YT∨TFBα
∀∩%≠↔β,↓β ⊗R|b ≤EJd
5⊃SEJ203λ⊗ jj∪βL@∨β⊂~∀$Lj.~Y∧*JJN-!2-**4-⊃TjXTC"A⊃32p*@⊂⊂
RSEPλ[%∩εAJee%∀~¬E≤%Ee∩uJ↓P@! ∧fePhε GC-DAEMLπ≤Y-≥∞∩ε,j0≤pβ"B!→αe`kλ πC-OP¬⊗J4b0≥:β∃QhgPQG@π∨∧Y≥∞ 8Q!⊂L@2p5D
⊃∪)@k"`∩FLOW,VP@	_YE!∩2⊂¬E∧∪β"J8)α")Yp5H
823)X23)→β*"i∀*h ∀,T∧]≠β%∪⊂~PhP4
6α(∩¬]h→E,*IH∀l∀H⊂λJp¬V)Vd¬,SPLICING(	'∪9∂⊂∩∃d*P∀H~$:@⊂T∀eJt⊃0i_3↔#!∧¬
	MKAV [TTYSCAH[≥"J&:<*JO@KZe%≤8∧tEI5∀pj:K∃∀hiiεE∩h∧SCSR:∩\αYE "β@∃L∧¬∀∪%_	A6peE⊂∧g0+15		8εPF↑l@\@Gq∞I$hP% 24∧ ⊗↔∃P∩
λ∧∪∪≤β↓-E] ¬BdLd∧
f⊗βZ∧]J⊃P∂`8X	↓
|πBHhαB+E6+∪I→αεE∧Rdε0+PdX@2LqA-Q⊂H%m∧5r$λπ⊂⊃Kβ")

RMTAH1 [ X
K∪M~P⊃E9∀`*⊃0	'⊂d∧ ≠'Q%∪≥∞αj6εJ\*I1J:T`(Su3HE,↓QTS5λ→(⊗dαR!gSh R0Yπ>mα2I1e~V 4)zT`(α⊗_@00λ
)Xπ2π≡\T¬∧dβ∩4j∧~;@⊂≥y0	`)∃CE@3*β⊂↔⊗\Tπ>≠x	0Yβ`
4U∩6@$→$h⊂∞f∩ih⊗(∪& 	SP,L@∪'@XY',r∀⎇YhBc∧∧β!∧f`∩A [BIBLπ @24
N "β∩PiE⊃⊃∃Q ¬∧fT`P∩cS'a f∀lfV#S'a f∀lfFEαd¬RAXπ⊂∩ε∀*12~αYd
∀{QP@*p)α)ZP(⊗iX0p∞FBα10$∪⊂⊗Jλ∧¬@9α)`⊂]
IFN SAIL,[
IPP@≤@λπSmX_0hT~
∧`&LεP≥QLSP
8πgKJ↓aeKmαK?WM∧∧F.X∧w4]4p∂ns h∂LA%!!;Jβ⊂⊗␈$λnM→<@≡|yz2[yFE.B]bg"λ'c⊂$Q'⊂ ∪AIHλ~∀4⊂λ ('8F}r|¬λ=_;YlT≠x	2→y⊂3 2om hep¬JAi<@@~J-~RY1∧¬W/∨DλλLT_{p↔≤β`Gkβ#'[∃∧εvO&∧∧d`:∃∩3i@ fεE∞βf`∪eMhAC]⊂@@~J-~RYβd∧↔>λ→P↔\α DEFUHAi<A`∨?α-2`!α@

	IRP PN,,[Lπ!)∪=_
ε1e∩⊗NQd
VaJy∧`9α"`≥
λ∧∩&m~¬↓∃
α0∩bd~∧`! ¬∧j⊃i&dgβE		MSA %RSP	1b2J-8¬∪↓Q@∧DfT`P∩i∀h∧V,&R@'%04(Q'3@7h∪SjHαP ↔ELL! @QQJAgβK7⎇DεF.≤LW.h→P↔\α
∀vβY`~⊃~$,=λIBb∧iJ∧$bβλ⊃K
⊃∪∧
t⊃0jλα 
8εvv@AP↔W≤εBε⊗Tλλ-Mα7q`!ted @MKckKαsS'πd¬GJ@λ~0↔λ8∧hat h∂eI∃`	9↓¬##'M∧¬↔4≤{h∞M_8
εBα;; 6α@Agi¬i`↔M∧ε&␈/M_L↑hε⊂ !nd p@⊃X[@?αh	.30o@\Ae@?α↑FNv↑4εn∂∀∧&NvLX∞∧⊂7s & p	QJ↓P∂'lAP@'nh
@(⊂7s⊂≤26⊂ "ei`≥NβiC@3↑+⊃βπ⊗{WQaQ hPα"3*((⊂
i⊃ch"& εLPDL,F@1A	_@2≥α⊗∞B$bt4 cXQ!P@! ¬≥@;8εA:,*⊃α∞⎇α&⊗M∧z→α∩⎇*∀dUD∧9pεh&⊃l⊂ DUP@→`XA¬∪≥_
V5∧*P∀,d	∀2¬K~∧-~	iu"∧α34	Hαfbg∃ ¬D
,¬'
↓→∩ε$*H ((H"(Hα34H∀⊃∪u(&"FE⊂βX%		MRA CLπ≠!→∃0⊂∀(Kα(Hα34H∀⊃∃4	Hαh∞E⊂αG%		MRA BIG@≥+4~∃⊃≤α($&6α(∩∧EYi0hPβ"Tλtα"3*((⊂λ Qdg#FBα	∪≠IαA!∧p4)Iα!$→Z$
¬λ∧c!$c'2h∧S,[
∩∪5%αA\JRMH→∩dlEIT5α"&nCE		MRA EXP@%∪5⊂~R`4(⊃→U∀
¬iDM≥¬aP@+αD]bSαD OF IFNIP	&~)∪
≤A⊂d`@2Xh ⊂Hα3$H∀⊃⊃0f&β"B!→αi`@5'h ∪20,TOPS(
d`4⊂λ$→R$
¬HYd-@Q+PK\YhB∧|d	∀4rλ@F↓αE$c∪α D1@Y6~∀$∪⊂⊗Jλε∩,0∧,↓QR⊂	RBDf`∩A O@≥M∂6,rP (αHλ∧∧⊂∧c"H)`df-FE∧Bd¬RA@π≠*~(∩∪≠≤	αRz
3αβ∃∪j
hεX@0
    X
∩∩m⊂~⊃∧z→α_hR¬≤→→@hUβ".hYβ"⊂'Q⊂ 	FN @λb`4⊂
&~pεVN⊗d*NMA→U∀
λ∧SiX3C"A⊃30	 H)`dfβE$c'λ%'a(Rdπ _∪5%αA∃=λ (αB")ZP(⊗hi3⊃+λXp∧'V⊂βH	αY%≠β∂
1
2x92dtX¬r)@T∧OUTPUT,S@π%∨→1:~(HJ6J¬∧jε∞I~5@"B")Zp(∀HHαgc⊗∀ ¬AD5⊂≡_hP$&6α8∩∧≤βKPEKwPW!Q@∧DfT`P&@,Xε␈:~(∩∪≠≤	↓9:lJM %5%$lM8∧r)@ π ≠βI∞TU:4⊂λ$→Z4
∧β⊂ ⊗⊗β←]
		M@'∧A1!∀BN!H[¬¬∩Yλ∃≤@Q!⊂L@4P ⊂⊂βALLI
~∀lp
mαtzR*λ¬q)Iλ(⊂~~2P9`9mb`∨X↓QKCI∃`Mβ4¬w!α@
;lp
$Lz∩%¬D∧-P3∧λα"`⊂OSIT, EXAMIL¬∀Q'3@7hλλ
↑<⎇⊂_2P0v≠4πcate`λAgα+GW↔w#'πMH∞%D~;@⊂≥40p∀↓←eIKβ⊃0∩αλ¬~
≡h~0→H9wP 4hat
8εvv@AaQJ↓[CGQ%]J[Kβ∪@⊗@|H⊂∀[8∧errupt @!C]IYα+@∩ε\∨∩α⊗α;Y←λH⊂↔Yαf the ki@9H⊂∀'0∞gP⊂⊂ /d∧AS]QKee@,επ"ε,X
-lh≥_-My9⊂_q0∂`+β!0⊂@ ¬εEαD@		.SEE UIH
(fH~∀&lZε@"	xD%αβ∀u()⊗-@ ]1~∀%≠↔
2α⊗@4→ED`85P3¬I∀p
a∀⊗ ∞IL,12
	H↔βPA∩⊗α	u≤MEJ5,∃%K2¬@,C"A→αe`jλ ¬P⊃β5∪⊂~∃e~V
IeYα`+⊃Q hPcXQ!P@*u0U
Iα05	@d¬S FLπ$A≥*∃∃1Q hSαq∃)Yαh	 ATO@~AM_
αRD
Qα
ZRJε≤)αBJLrRMαα9tl-I	∀`(βP ∩EAS@∨≥¬
2∃∧J0∩∧8Z%$→`
≤≥(Zr∧≤~8U_hαB3)85 ⊂∀d¬ARK,SUBR,,QMARK _`4⊂λ&6\
Qα≡~bN@,* ¬Fβ"B)Yp5_H,εG,SUBR,,@π ∩Jd91@4Ph ⊂@ ¬εE∞β;; NLπ ∩∃¬:⊗ $βλ ≡M→(⊂→↑vq7`, headers @→←d4SY`≠Z↓⊃∪f∞β≠λ∞M→(⊂⊃Xy1r9λ3:w1]4p∂ns>λ
)Xπ3@4λλ⊂⊗]yz⊂ "e al@1←GC@&+⊃βO,ε↔.;]~,≥≠_Vλ4p∞ @QQJA↑β∪∪↔I∧ε6F@⎇{@≤,8ε7`78ε@Eπ¬$DA[U`∂Qβ⊗(4)@70∞d∧λ≥~T→Z0→≤β, and "CDD@		$α⊃β@&Tεf∂>@∧∞βtp∀h h	CE∃YfAMα{@∩ε≤¬λ
L88	zλ2pq`( h∂LAβ##↔O(h ∪[4ε`∀∧≥_wKα  @)!SfASβ→βO=∧εFF∂Dλ

(
r)@*"`∩NAHλ@6≤
J∞∩∃↓β≠Wv≠S'⎇`∞N∂∀λ	↑→<[-≥Y(β!≥]P≠  whetherpπ←[Kβ##'lpλ
≡h_ ≤<<Xp∩≤α o`!α+@⊗∂M_md_XP_p∧d`%∃`∂Mβ≤¬voε≤∧Z.ww↔εBαλ
∃≠-
,Aπ¬$YπβHY'+¬HXXb~)≠↔
2α≤%%H4%∩J:T*K!QR4T∧λ+⊗h``i,@πβ	$αb≤$~ λb"),@πβββHYπββ⊃$Yπβ⊃β$Yπ¬	∩Id~∩εε⊂¬D8⊂1∀EHq⊃⊂*%⊂q⊃λJ@εE!P```i!```Q)⊗!`Pb i,@πββ	⊃$Yπβ⊃ββ$Y
β	β	HYπβ	⊃β$Yπ¬	∩∩⊂¬D8⊂00*%⊂q⊂(_∀K⊂hH1⊂4AQPq⊂(Hα)⊗!Q ∧AAR,CDDADR,CDD@	β%t~∀&lZε@"λ⊂
:αa),,1~∃Q%≠∪8~∀&lZε@"λ8D$⊃∀@⊗∀h¬BR10
αuα⊃P@! ¬∧fR`j_@*dg ∀ERNAL-@πβ%π⊃% @2≥*∃∩EI∀81∀T¬F εEεBαIRPS A,C,Xπ
∪1@A~2|
RAαα(U%-)`-P3⊃J(31(λZTQTH→αbV!∩ch⊗!∪βUNDP,L@∪'Q∪
 %∧r0≥ Q(∃$|β(∃~⊃0λ⊗⊃h(&'Q ¬ MIL¬+'αbB2Vα:αduYX$-∃∧$-∀z¬DL@U⊃4I@⊗ A∪Tλ
∃%∃(
⊗J≤)2:J-2⊗JN*bJ,_ADM≥EIT\βP3%I⊃3QjIλε A∀T∧MINUS →α∧"⊃E2≥*∪
HiD@85β"Hi⊂5∀i~Q(⊃IH5⊂hλ~Qh⊂i@iPSQRT →→=∞P∩⊗β
αe≥	λ∃≤B	itL@U⊃4J*4⊂
⊗∀ ¬MOB,SYSP
MAKUH
¬∨U_
⊃I→U∧dβq⊃%I53Rh→αV&`RdεUM1!+%π=!2A∧b&NQ¬~f ,X¬P)KαFE∧∪e`j0T∧S@+	$Y7πtb~*$"J6&ph ⊂hαN`≥Nβ @≥∨Q
A/1_BAi!JAgsαk >D
\9→0→≤β fO↓H~∧`-Xπ2Hα4U)@* 	M∧, TIME
∀vβY`~α∧λ.↑⎇λ⊂⊃→P0v ,oca`)∃HAgKβW.nM⊗∞fLε+∧
8π⊂ 4hat@=`∪↔⊂¬bα¬M
↔4~8	P≤βo that
;8εv@@the @¬YC@Kn≠3 >90∞ .8π1@4ion @5Cr@E%]IKpα⊃β >h	H∞M→(⊂∃Zw2⊂ /d∧ACYα@⊗j∞,W∂.α<Y,E@εEεBα	MKAT1 @%U_
R→XBe≥X""eZλπ)
*3P
$↓ME,0
λ∧∪≠↔¬(bA$B6∃2≥*∃∩K0
@T∃∩3(Uα_εEβA$i(∀P V!K-c$l$c$l ¬X@!1_∞∩⊗~α0∃,IED
≤9→∩∧IIt5⊂π!gSαS →'1 YM∪⊂~thP& ,8~C
∧∃J5,∃%K4;)λ0%F εE*⊃i&dgβE$i(∀P V!K-l!gSαS →∂∃)π"
∩0∩dxZB¬∧βQq*KαFE∧Se`j1 A,SU@¬$Y7
:HCααaH (*HU∀l→aP@!32p*F(⊂λ*T$c →,SP¬$αa1%λ¬4I_T∧V→CE

λ¬∪
≤β+'→∃'&@0Lj.εQ∧Bε@,Iyd:@∀p
a∀⊗⊂1
λ¬≠↔βPbA'Lj∀|β∀
:αa),, 'Lj∀|β∀ε⊃ ¬&ePh∧1EXP@→∨⊃⊂→2≥*∃∩K0
J"H[¬∧dβq⊃)@⊗_FE∪e`j1 ARRAYD@∪≠LY'+¬HXYβ	!≠&@1λh ∀l8~C
¬8¬P)J1+0hYα&⊗f∪βCATILπ≥ 6α:T*K∃H→α&'aK_@

λ¬∪%!LAαYε10∞NV∀b&Mαα(Dm¬)zα¬≤X¬
*⊂ε aPT∧RPLACD,NTH →≥Q⊃π	$αb∩&Nα	D≤UAP@(αhV#∀ ¬TURL∧Y
∀*RJ@∃HUE¬EIT,@4+∀hZα i#H&bfa⊃i⊗"hU`f⊂#Qh∧L,ASS@∨ε1β''λ¬@hU(YTLhHU∩d~H∀`%∀p3(Z⊂π fQh⊂ALPHALESSP GEP	π⊃¬$Yπ∨A3'3≠	_∞ "J	e¬-EAP@(R3∪λ~TP6$	TQ0i@g!V)Qh∧PLISP	:~(∪⊂⊗.
!α¬2≥*∃∩K85k⊂β"UλZS23AQ@εE]
∀∪5↔β(bαα¬ %8¬0J%λε∩!A(λd~))⊗JlJ0⊂hαC"I~Tλ⊂%E⊗s∪h_λεa,U ¬,DEPOSIT-BP∪)∀Y→	∧αb∩B
l⊃12ndzε∩	d"⊗Bx 	Hα!⊗"∀!(
C,,[3,4,2,3]
∪≠-β ⊃D∧	2NV∃⊃11⊃⊃24P@∀l\~@$¬H0 ⊗∀h¬BR0X@∃ε⊂¬D1 ¬*"T&dgεBα
∀∪5↔β(bβ<Y',∩I1K
¬$L∃F hPα32h~α_P/	⊗)`∃BR, →1A)∩HXH~∀4PB6.ε ε∩∧R6∪JYαVdb⊃dεTITY(	',∩I1Hk∧L$Y`ε⊃ ¬∧fR`j_@1& ∂NUM(∪	∃_
R~K∩e≥X*"bdiI∀$3K!Q@εE$T()P K⊗-b$Q⊗(jgWF@
	MKAT1XεUβ;M+¬$X0X	ε¬c⊂4*R-∩6&8hP4*&∃↓α¬1eYE-F⊂+XK⊗h_⊃ ⊗∀h¬B1]
∪∪I AεX10
⊃KXBbe4@	≠ εE∧Bd¬KAT1 [A∧Cπ;≥*∃∩EK4"
_+SλhαB5λZS23AQU⊃4IY3C"AQ@εE$T(⊂ @,,[>,<]B,,[GREAT,LE@'M:~(Lj.εQλ∧∧
@∀p
a∀⊗-P.I⊂a⊗→βE*"i∪dgεEβE&e`U_P⊂≥1' ⊗
⊂¬Bb⊃0λjPd∧ _d4⊂
6.
!EαnβKU≥0T@⊗)"f`RdεDER,2~∀4⊂
&J¬→α¬2~b`≥≤~:4`8hε)`TihV)Ua)`∀ SETSYL¬)β1t~∀&lZε@"λ⊂
:αa),Xππ:@_h ∃$X∧S)→βεEεBα  	MKFV PUP	!∀zA2BαZE¬∀z¬E≥0T@⊗∀a)&⊗F@

P@∞HA5↔β(bβ→⊃`1e~V
Ibb2"Z∀
I1HhP1l4Ph ∃≤X*E$`_~D`94h⊃I@i⊂#)Ua))P⊂dεD LSP¬%L~∀4TJJBM∧	2
K84`9Qλ∀
)qh∀*Yβj"P⊃'P""PβH	β%∀A!%∨≥(	04T"⊗~Bα)uα∧8~D9λ⊂
$∀'kP!∀ ¬AK↓∂⊂≥↓`h ∃≤X¬∀$λαi)4dcgλλ)j'i⊃P)`∀ATUS SSP	β)U&A
,r≥∩3sDλp4q*≠ εE∧Se`j A(	
≥*∃∩K85hhαU⊃*)23C!ε@
	MKAT1PUSH1
'+¬HY6Ah∧E¬-9↓P@!32p*F(⊂λ'T⊗# ∪U@¬$Y6ααu∩B⎇4(Q!∀l\h¬HλHαc ∃N,@	
U_	2~α:T*K∪R)AαE∧fR`j_@ @π∨6l*0∃"β⊃TjXTK⊗dαR!gSd¬ENT
∪≠-β ⊃E¬*0∃<α3Q¬Z∀SuλXu⊃J:αa),XεA;,rP≤Lh∧β!∧fe`U_P∃!Ph∧CH1
'+¬HY6Ah¬d85⊂r↓Q@∧fePh∧1 CAP	π⊃¬→_@25~V
Ibb≤
H9∧@⊂εεEαd¬KAT1 CAT@π⊂@6∀
JJ&-⊃258¬0J%λε!`U!`λB
λ∧∪≠↔¬(bAβ9λY
≥*∃∩EDD@Qβ"A→αe`jP ∂R1
'+¬HXXI∨H~∀&lZε@#∀λU (35iλαg⊗#∀h¬BR10
αv-:",aQ L@2p5ε∀λ¬#*SαCTIOL∧Y
≥*∃∩K0λT)1U)@!j$gSαλ
(hQ`≠[4	U-≥D	∧
Q(
	X4∪∩*:α⊂MAPCAR1≠β Y5β!εY5β!π∨8Y≠β!
β⊂→%∧J0∩¬Iλ∃"∧βtQλZ@εE∧Se`j MAPLISPλ@2e~V
IeYα`+&p
f@F@
	MKAT MAPCAR,LS@+	$Y6Atdnnn4⊂λ&6\
QEαl
A2J:T*K⊗`⊂↔R 
AP,277\~∀&lZε@"	X∃∧~β∪∀jXTK⊗dαY≠@74ε~(Lj.εQ∧jεB∞|q22NαX%∩e4S∪;vqP@!32p*F(∪0*λp3@⊗∪)ja)-P ≥⊃≠β!π¬_	1I8εs 1 ¬εEαd¬KAT PROG1(	2≥*∃∩K0λV-m`≠CE	MKAPλA¬∩0≤;%IE≥0T@⊗⊗β ] $β9P≠c"B)Yp5⊂∀)'cg&)`∃BR,[ ]
∪≠-β ⊃α∀z0≤@⊃+∪
:αa),,277\~∀4TJJBM∧	2
K8D,@∀(⊃λYα"`∀E AP@!12A:~(∪⊂⊗.
!α¬2e~V
IeZ≥k&1P@*⊃0	&Rdε~∀4⊂
&Q J6.ε ∧¬≥M88∀dbβ∪∀jXTK⊗dαY≠@74ε~(Lj.εQλ∧∧dM8¬∃&)`∃BR,[ ]LIS@(αq1E]8εphPα32h~α_P!SβNS,SUBR,,$C2NS,2~∀%≠↔β(β
+≥π¬→_@2e~V
IeYα`+⊗p
f@F@
	MKAT1L@1¬⊃6~Vt~ε $β∪
:αa),XεA:K11~
c⊃P≠;qQ L@2p5ε∀⊂4TH≠0p3	E⊃P	jPαR,[↓2Kβ%Iβ3πβ1_⊂∀(Lj.εQ¬~V
J≤
21Hj5,∃%K2¬@#"B)Yp5_H&)`∃BRCALL,@
',∩I2m¬i⊗ %8¬0J(p3∪↓Q@εE$T()P K!P[VAH	%PA¬β↔Q%βπ
↓
ε.dJN@"λxT`*v3 ≠Q ¬∧fR`j⊂ K&)`∃BR,[C]01~∃Q%≠∪8~∀4PJ6.ε ∧¬≥4pλ"Sα@λ@2e~V
IeYα`+∧∧C!$c'5ibf"TiP	MKAT CURSORPOS,LSP¬$αb`~¬T∧aQ@∧fePh∧ @#U∪ ⊃2e~V
IeYα`+∧∧#!∧fe`U_P"i∀'i⊗&∀h¬BR10
αu$*JJ>⊂¬Cβ_Q!∀l\~@<-J:αde8¬0J%⊗h↔&⊗@εE∧Se`j MAPATLπ⊂⊗MdbN@,* P.P⊃H~∀4TJJBM∧	2
K9d9βg!P∀&*`∪,TIMES,@	&42⊗J⊗t~∃ %~Yu$LYjBd
λ∧⊃)@ ∧ @:4⊂λ&6\
Qα¬dbN@,* anFE∃ ¬RMIL∧~(hP1l4Ph ∪[4ε`⊂∪h¬S@(β⊃β-
Q≠β0αb≡J⊗
"⊗JAdj& 2IHU≥≥¬∀∧L@H⊂
$⊂h∧ ORD@$~(∪⊂⊗.
!α6ε@¬De≥X*"eZλπ _Mβ0∞n~(∪⊂⊗.
!α=(X∃$4T	Ju0TEKh⊂∞@24εnn~(∪⊂⊗.
!α6&p¬De≥X*"eZλπ _Mβ77
	H↔βPA→≥~A2J:T*K⊗`⊂↔Y≠[@7
~∀lp
mαLqαRλT∧4|β∪∪j@dg#@, NOTE T@⊃βP@V@1αi1↓%D∧@Qλdλβb`∀ T¬β→+∀Aπ→1&~(hR&JA∧	12mX¬Bj@λ¬⊗↔Wa⊗⊗-T&*`∪,DIFFER@≥π∀Y)&l*M %~Yu$LYjEhhαB3)8UH⊗h≠2(0EI∀p
a∀⊗(dPPαλ
∃)∃%≠∪≤4⊂λ ()~%α∧∃EE@5hε⊗@,*, ∨;λXY7∧bVMHI∀4Q0	"SαCE,TIH~bF@,zI∀,@U↔#!∧fe`U_P ≠A!$]LSUBR,,XεHC¬t~∃)I≠∪≤~(~∀4PJ6.ε ε∩αU(X∃∃∀≠∃De≥X*"eZλπ ↔∀ ¬ARRAY,1\~∀&lZε@#∀¬$
∃(≠∩de8¬0J%⊗h↔$T04TH≠+@≠CE	MKAPλA→%' ∩ε∃∩εe2e~V
IeYα`+⊗!P@! ¬β≥FEεBα
∃'U
RR`Bε@$yZ2∧St@→H4λλh4s⊂*¬λ⊂3HD⊃P4iIp1~Zp1q!Q@εE≥Nβ; @'U
J>-"&tX∧h
Zq1_,P!gSh 	LER @∨+Q!+(@4A⊗J<y1αhXT$1⊂K∀⊂ε HβE_;lAβ≥λβ
β'→=βλ@9∧
2Nt	u$DX∧Hλyβgb∧QiP#'T⊂ A⊂ ANDFASLAP.~∀4⊂
&JβαP⊃2\"⊗ %∃HD,@⊃0
" h ⊂EL¬λ@2$J6⊗Md:J,~@	Hαi`∪,PLU@&1_
∞y`2d
λ∧∪≠ εE∧∪e`j1 *ASUBR,[ X
\C∧Xd4U"⊗J6Lp4*&∃↓α¬1eZBJ&u!2BJLqE %λ∧R)@!PTERPRI,TYO]B,,[@!I(Y!∪	2BJ~bRJAe"f =X5Be[∃F∩c
F¬C
hβ"B)Yp5_H∃⊂`@,SP¬$αb`~¬X λ$E⊂c"JHαi&dSα
∀~)∪% A∧XY7∀*ε⊃J(T$9
K270EE⊗p	"Pb⊂RD@π⊂@2%J&v
bb`≠αβε
αFE∧∪e`j1 *!A1' ⊗
⊂¬E@4↔0@⊂I⊗!FE∃ ¬RMIL∧~(Lj.εQλ¬*-h→Be≥X*"bdX¬P)E#"A→αe`kλ(*`∩E,VP@+I
P∩&pε∩U∧_y∧`(b.r)@$j⊂*∪β @≥∪0A∨$@D@Q&2αBε≡Lr≥αNβ~2HhαHλL@2p5D¬T⊂
i⊃T∧V.PURE
	H↔βXA!+∀∩2>
∀`$(→Y4
 ⊃H~pε H∀bj*h∨⊗)`∃BR, →
M→') 0b~(Lj.~Y∧bεBN-"VC@EID
¬8ZE-αβ∀u()⊗⊗→βE	MKAPλA∧
≡⊗
∧zJ:J:T*K⊗`⊂⊗XεE∧Sec ⊗ TTS@%pY))'HY'+¬H~∀&lZε@#∀
5@vX∞⊗∀h¬BR0Xk¬)]λXb~(∪⊂⊗.
!α<X¬⊃λJ∀pfK)ja)-P ≥D~∀&lZε@"λ∧∃*Hα"*)Vd¬,SU@¬$XXH~∀&lZ~Yα<~BJ>$*≥⊃pj
Sk∀jXTKε!α@
	MKAV SYH¬∨1&P∩Y%~f ,)yE~@λε∩)Vd¬BOLS
∀∪5↔
,A→β'2|
⊃2~
~2>ε ¬D5≥X*"e≤*)@hPβ"@↓Gc"C!)ba*∃&⊂ j∩βMS FLπ$AβU)∨2|
⊃α~,
RVJ-_4(Q!∀m∀∀5≥∀R3H{ εE∧Se`f⊂⊗β+inter`≥C0[@∪?α\&f/≤¬;nL+;8,>Xπ}.Th∧,%IDQM,0
∪≠-β⊂⊃αl
.∃6α:E∀Lhp
:α⊗ε_CE	MKAHλA≥"J&:=↓2NQbaD4!→T\D
5%∀→`rm∧βT∃*E∀p
⊗→
λMKAL *:FIXH¬+~[Q⊂
6∞D
Jε∞αHU∩e8¬¬F εEεBα	M@%∧A7',∩N⊗Fhh ⊂L~*α∧
EK4dM8¬
@"a`∀OR,S@)I∪⊂~≥d∩&@%8π#!∧P⊂⊂λ&e`fλ* ∂-¬αP∩N⊂¬B`*⊂πW!A(λdf4⊂λ&R-∩6&8hP4(→Z$
¬8∧rλ~T∪7!Q@∧fePd∧ DEFS@⊃βI Y'⊂4⊂λ&6\
1αm\J0∃$X∧SH→α⊂
#-MAC@%=;'!e∩∩N
¬C@"B3)83λ∀hZα)`→NTAP⊂[M⊃β% 5≠βπ∀y2N¬EC_hαB3)85H⊗dVi`→M@¬∨2L→6∞λ~$≥HZ%~@5⊂0IHαh
V%SCT,QUH
¬∨U_
 Q!∧l\~d¬@4hεf`PβRO-DAP	β→%' ∩vαdTl$β∀*Yβ!'jSα@λ~∀4⊂λ&6α(∩¬\(_$]
β#"A→αe`kλ! aeTh¬OTE-EP⊃∧
0∀0d⊃dε,V%@¬.YE_∞⊗Z`4(→Y4
H⊂
pT∧ ≠Yα+[↔Lπ↔*@∩a!f∃α,@∪≤β4(→Y4@λ⊂
pp¬xp@¬]IKeq;¬"~(∪⊂⊗.aαo↓dπEl∃⊃Q L@2p3∧x⊂∂Kαa(FBα	MKAL [`,,¬y;¬D~∀&lZε "λε`∃RdεTERL¬β_[[[CGβ∪?`%X*∩dJX 	(eβ"A→αe`fλ-PINT@%≥¬_ZX[5CGe←βbv
EdI⊗
⊗2a@ (αC"A→4Tλλ∃α⊂[LEPλ@2d*Q)2$*N⊗R
j∩bβ⊗sλZα⊂LET.,DESETQ]
∩@@A6\
1α¬db5 $!Q Jα∧∧∧l\→D¬@8(+1+
⊂3QλZK(λnS&V⊗_CE	TERMIN
λ∧⊂∀(Lj.ε1¬~⊗@$eJ42e8ZD0@"B3*8(⊂	j⊃↔(λ,[SETF-XX
4PJ6.εb↓.&:αHU∀t→EU≤-HeUBk∃J42bβ"!Q@∧fePd∧ +IL¬)∀rε "β4q*Hβ⊗`_1'Y∪M)~@¬F hPα32h→α⊂∃dSUH
¬∨U_
 Q!∀l\→D¬@8y<]
≤β<Vw≠T¬var-`	Kaα+;∪↔v≠g`%XHRbc⊃Q#@7nhα)Yp3λ	X0p	'K ∧E,MACRO  	0⊗@[Yα:>$)αRλ~B¬$α∩4d	50	jλ!"P⊃⊂a'k"Hα
∀∪5↔β_Am≠βπ∀yα6ε≥∩0≥lHUBcλβ"B)Yp3λλHαc&`PβRO,DE(		→≠α4PJ6.εbα`≤$XiT≥)t∧l8∧SkX⊃+ε⊃ ¬∧fR`f⊂"⊃c&`aT'P
DISP@→β
P∩∩(h ⊂LY8∀b¬8HT4l_:$`5αb$iT& abH&`ai∪β]DE,,1~∀%≠↔β_↓0∂∪↔4¬V∞∨-uS∂@↔1⊃%E#"AQ@∧fi⊂P-f`PβAID]
∪≠-β⊂⊃α4bε@%HYbm≥→Z2dl∃EC⊂@"B3)83∃Hqpp∩cdrp|]MA,%%@π% XDY)%+Q⊂⊂∀!→T\D6v@hεs 5npp→;5αP⊃F⊃P@!32p)Dλ¬dg∃ ¬RNAL-DUP-P →≠∧XXb~(∪⊂⊗.aαoOL∧F*@99P∪→qz0∪@Ay0⊗6λ¬Bc
↓Q L@2p3∧x{p↔≤βtant-pp→;5αP⊃F⊃P@!32p)D⊃⊃1J930λ&⊃d¬AC,MA~∀%≠↔β_↓	⊗~≤z6BJ)T~β∪0!Q@∧fePd∧ DEFUNFRLπ≠≠βY≠α~(∪⊂⊗.aα$Xh$`:α λMA@π%≡Y5α~(Lj.ε1¬~f ,)yD9pπ!V∪`V⊗_Mβ0∞n~(~∀&m∩¬αnlb6ε∞βQP@!32p)D⊂∧"i⊂d∧D,MM
∀∪5↔β_A%Y6hh ⊂LY8∀b¬λ→∃∃αβ∪3!Q@∧fePd∧ @'∃→⊗∞αJ∩dlQQ L@2p3∧λβ!'jSα@	 Y5~~(Lj.ε1∧"⊗~Z
⊃264hP& ,8→B¬≤X¬∀%Y1K5)@!'jg⊃⊗ 
M
λ∧∪≠↔¬_A/∪Q⊂[∪≥Q%%+A)&@2lh4(→Y4@λ⊂dU$ ∂UT-IN@)∃%%+¬"M $β3#!∧fe`S⊂+dj∩'j`∀-TTY-IL¬)∃∩VBR~b6 (β"C!∧fe`S⊂""c∃αST,DT∧Y	→(
NPhP& ,8→B¬≤X¬∃J:α⊂DV
∪≠-β⊂⊃αα:E∃,8¬*K4⊃4¬Hα+εEαd¬KAL [de@→mgh[QsaGQ-y0⊗∩2a1L4PJ6.εbα`≡→9P≠≤βt ≠Gα{;OSα.V∨&≥xOKαb+⊗→

λ∧⊂v~∀4⊂λ4)~%α∧∃EE@8pR3HE⊂qsiJQ01¬I⊂4
JP0q%Hβ'i&Ph∧,CGLπ→;∧αa2n≡Jb≤:β∪⊂%J∀K⊃JE⊂qw!Q@∧fePd∧ A1	2∧hRR-)Y∧`! ¬∧fR`f⊂#T$g"0,@∂∩~(∪⊂⊗.b@2∧z)∀`(⊃1Kλx+⊃aI@ε@
	MKAL SPRINTAR,GD∧XXb~(∪⊂⊗.aαNαα)∧`&+⊃a¬E,C!∧fe`S⊂!"`Q&`ai∪βIN@-∃%'
Y≥
P⊃∩∀j$4!→T\D4l8∧S@Ql  g⊃ ¬D
gp¬S@;&kπ∂K|πEL≤UEC↓ ¬∧fR`f⊂-Jdg ∀D¬%≥β_5@[O@⊗K;∪7∞≠@⊗␈?KT,*AFh⊂β"B	Yp3λλx5∪"P igh πTY≥ ∩6L"εNz¬CλhαB3)83λ∀i@i*⊗)Sβ,CORT,2
	H↔α0A'>⊃"≤
%J4`5λε→εBα	MKALV EDIPλY⊂X@∩⊗$BP (!→T\D4d
¬X∩l@∩4uXα FE∀`R∧fR`j→0i"`b ¬R
SA$	MKAT2H@→ 1⊃∀4TJ~9ααZ4,@⊃0	iK-FE∧↓MKAL @UM@!¬%%β3LY∩ed"V -λ~%∀
α4c!∧fe`S⊂ OADARRAYS →λd~∃ 4HA`≤,h@@xH∩1I@⊂*`∪EL@'_h ∀Li`M∀k⊗aP@∧fePd∧ ALL@
∪→∃&P∩εbbε $Hi∀d4c"D∧λλ∩**λ⊂ ⊗-`
APAH	→
%→⊗Md"&J⊗≥" ≥∃α+∪(~⊃∩4H↓a`∀ORY]~∀!≠↔β_↓αP∩ε`h ∩α∧εR-)Q∧`! ¬.@(⊂∧D]QdεDOF @∪
8A∪)&4⊂λ4)_d@d⊂¬'a∀dgf"_∧fePd∧ LED@∪(Y1α@2HXDMβ"R(iH∩SH(dgV⊗β
∀∪5↔β_A1∪'↓"b2QII¬
∧AQ L@2p &λ-`	N↓_[	∪Q0⊗%AQ%H↓ ∧]BRε@λA∨_Aβ
≤β∃∨¬#!⊂≤4)~BLY8∀b∧α∃3(&"V$∪T∧H@+5
2∀hR&@"A→T\D4:Q0%λ∀αe'a↔d 

∀4P!l4Ph ∃≤X*E$`_~D`94h⊃I@i⊂'b⊃! f&λ εUNCTIONS ANDP¬β%∪¬
2⊗α1P@! ¬$c∪α @∪)LXA6\2P∩∧→H∃∀l9It9hε f⊂i&af∪βC@⊗YM+¬$X0d⊂∀)_d*∧α5∀eD∃P3λ~S(∞@=T¬≥∪_4⊂
&~pεVN⊗d*NMK1⊂K]IλU≤*	ZU≥λ⊂Q$	3H∃		4h∪j(α"`∩0A~>db0≥<βQ`⊂⊂d∧ARM@π⊂∩x90hPα32h~β⊂!f∩T¬MESSAGE,T¬π2Ja2∞I⊃P@!32p*@⊂ 
AR-BREAK(	-≠¬$X@2l
H (αB3)85H∃
K+0	"U*i',T¬))$αa2RR⊂h ⊂LY8∃ $∀piKb"`j∩⊗+ ∪YSD _YM3'λ~):∩%\*0∀λ∪qD	1S@~Zq3⊃*:c"C!∧fec∃α @≥∨U+⊂≥Iiu-3k∀jXTKε⊃ ¬∧fRc+⊂'∪βRE@(αb0∀⎇(ZBe≥X*"bc⊃Q L@2qUDλαk f∩'`∂K1 ~εdB0≤@rk∪
:αa),,23
	H↔
XA%β⊂[-β0ZT[¬∩& 5EJDe¬)→e"e8¬0J%	#!∧fec∃α READ-E@-¬_[!∀J0∃"β*K
I∃⊃4J
R+∀jXTKε↓α@
	MKFV *-READ-EVAL-PRINT,$TLR@βλαbN@,* ¬Fβ"B)YqQH
(α`b-*-E@-¬_[!∀J0∃"JID-P3
:αa),,1~∀%≠↔
2α≡∞R<	2<8¬∃h∃α# ∪U@¬$4PJ6.~2αεJ≡~bεJ≡~b2NV∃⊃11E⊂h ⊂LY8e $λ¬))Qh∧ _]I'(YM+¬$YQ%+)⊂αaD4!→T\5d¬$`)t∪r)@*⊂.NLπ!>LrQ2NαX%∩bF⊃P@!α@
	MKFV O@¬β%%¬2P∩x(∃∃∀≠∃D
∃(≠∩d|(~%∀
α#"A→2qUD
Q01
H0S⊃%JQ01
H0S⊃%H4TP+∃α)"`Q* a&⊃F@

	H↔βXA⊗J∀zI6
∀*ε-XYe )4SsIX3P
,T¬∃:⊂¬d*@⊂∧ciPαV~∀%≠↔β,↓%∪≥$*J96αλ∀9p1q%Y⊂πgeK+∩`∩PH,@≥∪0~∀4P1l4Ph ∃≥X*E$`_~D`94h⊃I@i⊂'"UβIO FUH
π$J0≤u4λ∀`(α⊂ ⊗ARIABLES

λ¬∪%!LAαYε10∞ 4→XTdM8¬⊗∪αAMESTRING S@⊃∨I)≥β≠∃' ∩JLr≥ %J*T,@P31$	3Pλ*Td⊂PRLπ¬1→∨βλβ
∪→A:~(Lj.εQ∧	2NV∃⊃2n∞βP!QU⊃4IY3C"AQ@∧feQ+⊂""Q jf*⊃⊗""c⊂h¬LTF,SUBR,,1
	H%αβ_
>∩,2ε@,JAP@!32p*F(⊃Sj(q+3jZα( ∃T,SUBR,[ @;→_∞J∞*aD4!→T\
F⊂9⊃04EYβj`∀PUPλ@2≥*∃∩K0λ_pε)'Uh∧,1
λ∧∪≠↔¬(bAπ1β$[%_
BVαEE≥0T@⊗⊗β ]CLRIN,1
~∃%%!&A∧Yε@2\~2>N*α∩,HZD,2	→b∧P4s
∧↔#"A→αe`jP V)Ua)⊗-Pβ]$!A,1~∃Q%≠∪8~∀4PJ6.ε ε∩α]K→re≥X*"beλ¬⊗)@V→εEαd¬KAT1 @∨!∃_	2J:T*K⊗`≠∀⊂πh"Sα,0 $4⊂
N¬ J6.ε ε∩∧3t⊃)@⊗ SU@¬$Y6β0∃∩⊗⎇α⊗ 2Fε@hPα32h~α_P'Uh∧,SU@¬$Y6β:I>-!1HQ!∧l\~@$	3Ps
X⊃1K
:αa),,.INB¬→*X`H~∧&lZε@#∀
$,P31(e∀p
a∀⊗-P.I)"g Sbc⊗→βE	MKAPλAπ9β⊂⊗⊗2bN@,* P.P∩
λ∧∪≠↔¬(A6-∩≡⊗→e~V
IbaH (!→T\
F⊂d3Qu	λβ⊗)jPαR,[↓2I2,r≡@$λeCλhαB3)85 →I4p
"Sα,@→'U
I2Xεe∩I~5$3Kε⊃ ¬εE∩c'⊂)Q V-FBα	MKAT1 @'→αP⊗∞α(T
⊃+∀jXTK
:α!`∩DA(λf~(∪⊂⊗.
!EαN4	6∞εda2NV∃⊃12NαH4@∪βaQ@∧fePh∧1SFAP,SUBR,,SP	!∀*⊃1DhP& ,8~C
∧8h∩l<X¬
:αa),,STGET,2
	H↔βPbAπ
∧[')∨I
@∩NαX%∩bβ∀u
:α'i,3
∀∪5'αA<rA2↑DJ≤Bβ3tλZP5∩)@g)FEαd¬RAFILEMLπ	
~(∪⊂⊗JλεV 5K→⊂hPα34H∀∀qP!Q@∧fi⊂P(' Sb@
	MRA NAH
~(∪⊂⊗JλεBJ>∀"_ (!→U∀
λ¬∃~pp3AQ@∧fi⊂P**,PβO@≥&4⊂
t⊃↔4,@Q∩(iH⊂	c⊂F@


αIRPS A,C,[C@%U_
&Qe*.&2bbV~&d)αV∞dzN∃2,
BB⊗t!2VBα)t(+∩3Hf"b"WF@
	MKAT A,@
',∩I2n≥h4*R-∩6&8hP& ,8jb¬-(X∀"eX∧Q(_λε#)Ua)εEαd¬KFV UWRIT@
Y+]%∪)
1
'+¬H~∀4Ph ∀M*
2∧
EK4LQR3λUα$g)U ae@,Lπ+)
%→⊗Md*≤DβqR)Hαi`≥C,,[@)I+ ∩!ba2`(Q!∀l\~d∧
@⊂c!*"`∩MIH~∀%≠↔β,↓≠'∂
%→⊗MbbF@$I~5"dβ4qhi3⊃4aQ@εE∧Sec ⊗ TYI,%TYI,LSP¬$αbRRfL2¬ #∧∧C!∧fe`U_P ∩EAD@→∪9
P∩2≥*∃∩K0λT4Q0(I⊂∧g"K_→εEαd¬KAT TYIPEEK,LSP¬$αb`~¬T∧aQ@εE∧Sec ⊗ TYO,%TYO,LSP¬$αbRRf|2¬ #⊗!P@!32p*F(⊂λ)∩dεT,LSP¬$αb`~¬TZ¬∀Lh¬ε⊗@εE∧Sec ⊗ PRINDX@⊗Bα %I∀p
a∀⊗⊂1H~∀&lZε@#∀
¬∀Lh5De≥X*"eZλπ ∩T)!V_L∧¬∀∪5↔β(bαα`≥¬)→e"lx)$,≥KYE≥0T@⊗⊗β ]%PRO _hβ(4(→Y4
(⊗hi⊂5∀i≠Q+3h%"aj↔d∧S@+	$Y6AtK
→≡0hj4PJ6.~αd¬$4T∀I∃α∩`∀ERPRI,LSUBR,TRUTH,0 "4⊂λ&6\2P∩¬(X∀"dβtQ(_λε&)Ua)⊗⊗→
	MKATDA%β⊃∞!IJ5,∃%K2¬@)∀Q(_⊂r⊗HINGS,∧Aβ→1_∞
αα(TD9:2¬$α⊃2*$∃P3
X4h⊂(j⊃0	+⊂i")WβE_;lAπ"α(5"∧α4h	_β$j$Pd∧@→2h
]]¬~0~∧→ID`8h⊂g∪α'T GEH
∀
R*λ:"=~βC"APPss)X3P
?⊂+!(∪βRG: T¬¬!9λtA4*JJ2M~QiααjE%KαH∃K*g""T εLOW8∧A-T2Vj@'$¬ (p∧ ∩CT: @-1∪~⊗cQβp4Ph ∀M*∧∧
@⊗pJλαg",@¬!>∀92-*)DM≥EJE%JK*T`(α"`∩FLOW]C,,[@-	!∃Ee2∃β∃EBe@ εE∧Se`k⊂⊂T∧,C,A
∃)∃%≠∪≤4⊂λ4((r LY8∃ $⊗QU+-⊗⊗⊗⊗αFU@5h~∀4T~0≤lXYe"πβλ∃I_P4q'⊂+! TbX
 V%H	4*1iααdTd3Qu	πH⊂
 T)"b: TTYOF@`)¬"εB↑∃!`∩¬9_t`(3∞H∂AαEεE∞β;; FLπ$A≥=_	6
L∩0≥αβλ⊂)I⊂πaP∀ ¬HACKS @-	β'
A¬_
"λ¬R( ibP⊂c*"i∃βARDS,∧~(hQ↓↓αlZε@2	_$
≤UEDL↓L,	_P4q!QHλλ	Yp5Hλ ibV$g⊂⊃0,BASE
~∀4⊂
&~pεVN⊗d*NMK1P@!32p*@⊂( ∩IL¬→4*12Y,b⊗@4YEBb3⊃5HYαεE∧∪e`k⊂∀)$g&⊃dεGTH,V%LEL¬∂)⊂αa1,HYd=⊂π"KP ∧]bSαD OF IFNUSELESS

λ¬∪% ↓αP⊃2]rE %h¬`⊗↔)⊗/ Wa⊗⊗-U h ∩ED,TTYLπ
YQβ!/%PY'&<rε %QQ L@2p5Dλ+⊂C!*"`∩MIH~∀4⊂λ&Jm"ε!Eαa119→e$4SP)E5r5		u0
⊗RdεTERRUP@)LXY!<J0≤Lh¬⊗X_εEβE)`@% 	MKAT∧A67A; ~∩|b2JAe
∩>IJ%αdIyDe∃↓Q%≤
A→T\
d7`*↔0"∪βH	→%@Y#	∨1→% Y⊃_∞ $J*hTIyDe∃∧π ≡Tb ∂LLRP
	MKAV ↑@λ@2<~≡ε≡2a2∞eh@hPβ"Ng]P⊂∀∃dεDF-FNC@)8XA+≥	_
"X¬TH&⊂ WRNG-TYPE-AR@∞X~(p
mlM*0∃≤XYbl<βk5λ_hε⊂+T'#Vg∪β(β%≥&P⊃α<→6 $z:4<UD∧4→ET≥EAP@'nh
DRdπ ≠→=''β∂∀RA6-~Qα
*α& 2λ¬∩λ~α⊂'i⊃ ¬R

IRP A,,[UDF,U@¬,Y/QαP∩V=!2↑h⊂λxpε⊗#⊂an`⊂N,,[@+9	→64r≥∪K∃)@!'"-T¬%¬_4⊂
↑Jt96@%~λRl
(p
Yβ)bbSα-GO-TAG,WRNG-NLεP⊗ε∀:M $x5Td⎇8∧p(x+⊃P)→α⊂
ACTX
4PJ6.ε2αB922
¬ %∀_∩∩H⊃P@*⊃0	&Rdε~∀4⊂λ&6\
P∩∧α3k)Itp	`QbV+$SβL →#%_∞ $%I∀`9αεE∧Se`k⊂⊂βH∂6α	∀d4K4jH5⊃+
@!`∂MSTλ
(Lj.εY∧jε∞	→d*@10	)∪βR,VMERR,,MERR
λ∧⊂∀(Mα≡@$βtλλ~α 
,[SYS@)∃~Aβ)=≠&Aβ9λA'%*~5β#"@↓Gt⊃TiH4p
1ilik⊂β @→∪Mβ$A%J& ,→`
,@U⊗2)X3H∃)@)"`b∪`g⊂)⊃`b(&Pdε FASH	 AQ∪%!βQ
Aβ%≥→∨εA¬%≡jYPhPβ"Ng]DU∃
∃∃∃∃
∃∃∃∃
⊂"g"λ'c⊂(∃i"P&∩ih⊂∀∪αO@≤[	∪¬∨ $@TTT(TTTT(TTTT~∀4Ph ⊂@"Hλ↓~⊃P	f⊂ij≡@=,∧∩`.=*εJεu"⊗⊗⊃¬~ε~∃∧zP∀4H∀jλu∪t↓QHλλε⊗	λα$I⊂πibQF@
  	H	∨ε↓
 0β"H∧↓10	lThεC :βi0⊂hαHλ↓_4∧ ⊂UL¬≡∃∧→0⊂hαC"J:αa**∪∧i g⊃'`
 BIH
	β	→∃α≤*22LhP4)@70∞d	⊃0	"H i"P∃$ 	NGS WHI@π⊂AβIαA2LZ∃α~bV∃α≤*22Mbα& 2λ¬∩λ~α⊂ ∪PEC@DL
0⊗vβYαV:∀J0∀∩3Qd	50	jλ+`∂RK O@≤AQ⊃⊗5β0*5λ∃	λαlP T ¬ NOT @≥
''βI∪⊂∩dhQ`≠[4	T
∀8XB∧TSs%@ε@

LISAR8∧∪≥∪0∩∩`.d
N@"	→e$4T∀HZα$k"S,V`∪EEHAβI%β %αiαεN
⊂4(Q*ELLX→c@! ∧R"⊃hεICE	;WHER@
A$yα<X¬λλd i PβP	∃→α5)yPhUYjELLX→c@!53U→ ∧]kR ¬RE TO @!U(A¬β	⊗Aπ⊃¬%βπ$*JMααIph∃Yj$,IX∀`'@∧W+1
∀∩$X
Zεe*∀4*(T%	X∀`'@∧W+1
∀∩9(
ε2,(4(Q!P@(β if∀≥	N	L	∩w→β'2|
∩&:8¬Uβc"U	~T⊂5λ↔@∧X∧NβPSEUDO @-¬→+
A
⊂∩0bαVN⊗ εR=α-BR&J∧
R*λ¬∩λT⊂ssJ8451)@*⊂ ∃N@¬∪≥	%_
≥hP$$↔8d@9⊂ε'kR`εGA SE@)@A∩>t ∩∧|βH∪I→α⊂'iλ*εEεBα;; 6@


~α6 <yx%J∧α34	@i* g∃⊂P⊂&Uij⊂$⊂hεE <ADDRESS OF ARGNUH
|@t@p∩ε$"J-8∧h	@c⊂ i⊃d∧OC> +  "4⊂
εJ<b ≤≠!⊗HKαqSj$⊂ε"l∀))P⊗H& ∂CATIONHπAβI∞A

)∨$A=_	αB$`4
ε∀:0∃,PεBL∧@	;HLπ⊃	&↓
∪ "u*5α↑DB≤B	~2α~	xb∧
(z2∧St@→Hαl ⊂R IN AR@∂→∨~∀⊂w¬
Y∞MαLr~Z∞α4¬≥LX∧v)D⊂π,XASG NXXZSG BP⊃0∧
N≥αuBbεN8ε∃EλεTht⊂π,,⊗αSG NSY2SG ZP∀Ai0
iαβ	∧L@U3 ≠	⊂πgUM @∪≤β4λQ!P@*p
a*∃&∧a$⊂αOP STORAπE @!βIβ⊂⊗⊗αHE∩∧8→D:3⊂5	_π`∞S
λ∧~*⊂2@4≥4εC!$g#+⊂βS= ;	1-π≤96
~αh5_hαR1ID⊂∧gβ∀αCS, Tπβ%≤β8[∪≥→ 
∞MeYv@$yt∧lhε(
@ f*bH!bf&∀n@
SPCTOP VC,ILS →7Yβ⊂∩V*α≤,IKPhPβ"C!& ∂C S(4T*bBVt:∃αMpε∩pβ"R(iλ⊃4k→αciVLT¬.,	Tπβ%≤β8\[M3⊂⊗≡~b`≠mIyr∧l→c∩¬≥→X$`9α)P∀∀lfbiU≤¬]@9M3⊂⊗⊗α:BeZα7#!)lfiVd∧= :βQ0⊂Hα".h_∀H∪hd⊂ε IU⊂!`→ST@~AM3⊂∀Q*5∧≥Izα¬≥→P	→α)V-Tlfa'S⊂ λEAD@%:4⊂
&~*αBε≡Lr≥ %1Q L@V⊂ Tc↑@≥@~∀&qBbjN8πS@Vβ"B∧I⊂∧ibQF@
]		;END OF IF@
A∧
≡&:8h ∀Li`
∧y→d:@⊗c"A_T∧,Tc↑P≥.
∪≤a1β'∞βi`+cGH%ED~8r]∧_z4MRT∧/Dj⊂1s*9oK0K⊂4qgetq1j94¬εEαa(λX~SG= ;	11β'≤W⊂~bβλ∃≤:αTq(zp∧m∧NβTAKD∧A+ AM→βπ⊗β!β∂LA¬
=%∃αα;∪⊂@"B3K⊗TqgW,ε!	VY)c@-@¬11U~≥y>≤*≡N≠!P@+ ∧D]QdεD OF @∪
8A!β∂%_
≤4Ph ⊂hαSDk⊗Tq`≡N↑!(#⊗)cVa∀lY)cO↔ibcTdh

SEGUP BS@2I'∞@.u~eJN8¬%≤,z9∃@%,#"J:⊂p
'T⊂)`→2,ILS,Xπ!+∀)αNfl∩0≤@λ⊂S	a`]
λ∧~(hR2>
∧10⊂hαQ6

3Qq$λβ↔εE∩c&⊂"T εP⊃∂LZb[⊃%_
V5lb0≤@U3 ⊗Kα, @/¬%≤Abq."→bTj\β∪sJYαVbh⊃,#iV⊗β=TOO MANY PU@%∀A~&DrV -4¬¬∧V⊃4jGαh
\PFXE@'PY6@&hh ⊂@"VVGW10λ#⊗ πS-8~∃ *UQuu@K+"lDα3U)Uαf'g∃d¬0≤↑H∩∩`-¬"",d
D`4∃∩⊃$	Q0*λ( cbH!'jg⊃ i,FBαX@⊃∪9+⊂∃@WY∧L@U3 ∃VαZP∀∩$p∞∩~:E∀L*ZD*∧→k∩¬≥X9α∧4∧*)⊂P)`⊂A@π
AY⊂~2Hh ∀LiD¬DDα3U)Uα[[@7,X@⊃∪9+⊂∃@WP
f@Xπ	;MAH
 %∧b0≥≤X∧Tdλα"`⊂EL¬λA∨8A⊃&u*5α
,J0∀:λ~B∧dX~5"¬I	∃~∧)_phUα∪∪i@*fP≥u0
i6β	∧L@U3"!↔h⊂Q*Jq13D
⊂πidU$k"P⊂dεD NEGATIT¬∃αLrV -1Q$L4D∧d|βP
fKXX⊗-CE	WARN @7a→∨:αYSmmβ⊗∪	@dεUM10
 "λε3jT∃r3	D⊂q4JH23S∀⊂ε'iQn@
	,¬%$β∪⊂~Vhε2>Nα8∀<(β"W!Q@∧i"T ¬AT↓1→>u*5 "¬j%∧≤βU⊗V& ∂NUM
∃∪8`t$KZ"ε&∃IαBε<)↓"ε¬αJ>bLjε@$YK∩J∧βqH
9α`f&λ εIXNUH&~)%⊗B,
QαbDJ0∃,UDα`*T⊂sJAα@
IRP X,,XεbXdαaM #EFRc2Fpε⊗λε≠@74π:4PJ& 2≠∂)→β_∃lβE*"i∪dgεEβE$g#∪βRM [HIGHESPλA≥1∪' A%_
V5β[UeDα∩3JYα@
IL¬
∨%4A72⎇:⊗NQ∧r2&Nα∧∧L@U3 ≡KnhXLLπ≥+~4⊂λ (*:∧:α'h⊂∀ εP⊂Y%→&@2]αVJ∃∧2&bjYUhhαC"AQ@εE&∪βC @!→'⊂∩ε≥ 4*Nαλ5$⎇∧
∧5~β∩3
5α-`⊂UR@
A→%' ∩thRNB∞∀zQαB4`4(↔0∞gP 	NITIAL ASSEM@¬→λααBVJ*α~2yjTm~λyr∧DX∧Q$¬⊂∧ @ HA!)
λ¬'!πQ_∞Aααλdbdα3∀eKt⊂
i⊃P#&'SαUM@:4⊂	EA I∩2z8T8hα@↓GpV⊗

qh∪K∀⊂	cH'( ∃RFS FIRSTWQXCET1 @≥+9≠%⊗AA→→&≥↓α4X~De~	z¬≥Lh¬λ
95⊃1JD⊃R3λXUβ"AQTp
a∃* 	IL¬∪)∪¬_A%α9	∨5∧J6BVα(R∧TQ1$
u∪tH_q#"AQR1SD
⊂1r)@#P[
λ∧∪¬1a!'∞zβi0⊂Hα.t	@iida∪ ¬ @'1βπ-¬αVJ∃¬~⊗≡XYe @ ¬∧h⊂cb`∃P
∪≥a1!'∞βiuqeX%EEλ∧qgetq1j94¬εEαih!a∪βPλA∪→&~(LrBVJ5→uu@E`((*`∩FS>/PAGS@∪44⊂
t⊃↔4,@Qλ∪hd⊂∧c'λ( cdSαG
.EH	'
0∪'!π	_∞@"	_e_hαC"Hi4Tu
@]

λ¬# "≤*QE@!∃bbdβR3↓⊃,¬c'T⊂, ∪ETQ~∀4⊂λ&:αYdm∀4π ≡Kα-FIRSP	.∩$X
N⊗*α≡∞AαaP@!21Qd	U3S*)hεZ0, WA∩H∧A9≥U_
6JX¬E@75∪sd	03V$
3S0*)p0SλT⊃P	P∪'a`j∩dπN@'t~∀4SY`≠Zλ∧∀I@h"`∩TY @→∪M(A
∨H@E→∪M DA<JR!αM"Mα→i∃$L→Dα*∀∪@⊃λ()'h⊃i*,P⊃'i⊂&∩ih⊂)Vij"fCE_;l@A
∪1
A	∪Iπ)∨I2A'∧*≤Li_4MIyb`$λ∩0↔λ* ∂PS-20 @]←e@3 ¬Bπz;⊂⊗λ87p∪@MSE@3β∀ε⊗(β"Ng]P⊂ 2esetuponeachpπiC@↔!7W@hRB2I~5βPα44
	H	#!_X∩2dεITE2t$hP&E⊗b⊃1Ii∀`@ ¬εE∩h∧$ FEATEX8∧∩&*bB⊗α)∀l,h¬⊂)D	#"Hhα`j&∀]			8π∪≥∪Q∪β_A1∪'(A→_∞I↓E~RεR-→α4X~E-∀X∧j!QHλα!~0R0I@h⊂∩FBαIFN@¬∪∂≥U~P⊂&∩&≡jYRα εE∧Bhc iS'`b)F@
IFL∧A"tZ2>≥`BF"VtY↓(Q!Mh¬3H~Qh	!QR1SD
4q3λZtkα*~Ss0)@⊂∩FEαDhg"∃βIO %
IFN SFA0∪#'
∧@@∀Q&∪αλ∩∀dQ ∧hgSαESEG;BPRLπ)πPA)22α∀dd
d:⊂Th
_L4pD
⊂,hλxt⊂	`T⊂)"ε⊂i#P)Ub 	RF@β)U%⊗M∧b∩4h→R∧dHZe¬∀t	dL@∀⊂	'T)P""SβFFN@@≥	Aβ∂
8A++≥∩":-¬*N⊗:$IαV∞b2%αeαJ>R,~P (!Q#@7nh⊃J)pεP!∀)'j"PβT _A→_∞Iα$JN@$→h4*∧β∀∀I@j"aj⊂ 	S PROTE@π)λβ
eααI∧*∧x~$(1q(λg`LE@π)>⊂¬`h∩h∧q(T⊃ptε@(YεEβ@
BPRLπ)πPpλ4((r Hα0SJ@_V⊗ T πN@+4∩w)≡↓!%∨)⊃∞Qα≤z0∃$YjE~∧βqH∧
⊂∧"iQP!bf∪)FE!⊃R@		 L¬∪_X1β%∂≤U~~*$b→h⊃→dL@α".jItλ∪λZβ"f⊂⊃'i&@+P ∞IL @
∨$β' ∩εt"εJ⊂hR∀ddεBBdεILλ	;ANALOGOUSH	2X↓)⊃
A	%⊗εXε2-hYB∧StS!QUPu
*nB,↓↔h∧∀P∪βR LISPλA∨_A'+¬HAβ	λIβ''L@A6@!(
,8¬∪j*λ⊂"PβT@∨$αj2,hzDB¬h∧Q(e(⊂∞FBαQF #M	h⊃→dL@α".j85Q(λ⊂"*i∩`∞G QF1~∃Aαft∩$`∩%]∩!↓u¬αJ>≥∧∩0≤%∀¬∧J@Q+@_b")2βF @!I_∞≥α4zJ5$hP$$⊃↔4dB∧π(	@"hλTPROGSP	β)∃≠≥ h ∀<8∧∀h~L¬∧DL∧@	;PLπ∪≥%→αRt
4
∩λiu∩∧α⊂4i∧⊂4TH≠(⊃Sj$⊃pk*
Su⊃(j 	ON L@∪'Q&~(M∩∩2ε∀9`⊂Li→@HKαs∩*:α⊂'cλ!`λARS FOR READLIS@(0A≠β⊗9β⊂∃1∧J6BIxD(hαC"J:αb$i∞α	∪≤!_∩%\J0∀MI_∀b¬9h∀l*¬	∃%~α(∪j$∀⊂λ'λ∀""aKXX∀FBαFEA∀URE@&h∪
βQ→&~∀4⊂
2∩4rε +!⊃∀@)3α"πc if∪βAD FI@	
A9β⊂⊗∀hR2$X¬T
)nB3I→α∧D]S$i`∀ LπAYβ⊂∩⊗ ¬T5∀x*2lLeX∃$|β5(&"P*∩β BE PROTD@π)λ4⊂λ4!Q$`)3∀∀I@h)P~	H¬∪_∩$p∞BJ⎇α⊗JRJα2&NαD∧4⎇$	dL@β"C! ∧EOFFN0∀∩%⊂
&0HI`≤$Xh∃,@∃λ⊃)@c⊂#*SαCTIOL∧~*$*0∀%λ_t,4dεB)@$f∧DNβDEFAUH	(A∃_
⊃α|1αBε<!α5Yh5$LyaP@! ¬*jTi$'%Nα	NIL		0↔+M$[⊃U_
-β≤¬ε.≡=_L@P97`5ti`≥J4⊂
VN,r∩%@!⊃∀`)3α"'jyr`2 SEND i`≥i∃`CK,εF/⊂β"U(`f&$Nα	∪≥%_∩%]+@≡<H⊂h→α&⊂ )np	KeA`↔S,ε hPβ"S

Su⊃(j≡P≥hX	6
¬∩0≥$X:@hPc]∃`
 %H∩1hfef⊂∪βBTFS LF@'¬→εA
Mβ⊂∩
¬2∃α∀
d*⊃(λ@2cac,P 	GBFX2 LFWSAL@εA
=~ε $4	dL5x→@hPβ"T%@≡X
QITIMES		0↔β1∪β'LA~>⊂∧¬$DT
5L@0Ss∧¬@εE+α8
u-%)∪≠L~∀]⊃-∪⊂∩D
∀M⊂∧fbTP+$j∩d¬E@&4⊂λ ()_t9αef≥αb"b)Pi⊂∩DB]b"`Q⊂ i"PP j5'h⊂'Q⊂!()CE	IG@π
 !α∀α(hαB2)@$dc H⊂¬∩∩m∪~& ∧∧4LHT∧
∃(≠⊂hPα21hc(λ $0Y≥∪_4⊂λ4!Q L@pU⊃J7@∧a&∪βC@⊗A-_
>	Xε∪KαqTHX(⊂	j∪βRAGE @
∨$β_∞
ε∃∩εeα≤z0∃≤_xPhPα3⊃J83⊂o'V,λλεBα	F@'¬→εt∪	→∨π⊗αα258→D1,¬c'T⊂ f&∪βC
	SPC@)= A&5→2&2~b`≤LX∧∃*(αP&$Th∧]

~∀4⊂λ ($∧M≥λ8$`:α⊂$c⊗∧¬∀~)
:Dλ$`*L.B%@∧X@)∃≠!>∀
J&2JαJBH_4,"λ+∩∧∀h:e$hβ"C!∧¬

T¬¬ @λπ L∀*
5≤8⊃↔4LR5∩(→α⊂ f∪'a`j⊃b⊂ ⊗ALUE FLπ$A¬A_∞J≤hRP∀∃λV∪@!23R)_L+ →α]`	NITIAL AH	2|~ε@$X@
 (3∃1$λβ'i0αPEND
~∃%∂π
@ε∪@! ¬(#I∧X<EL¬	2M~A.B:N&@%P'dβ( cSi` <5∪≥∪→α∩`.≤J`∀*	xb∧⊃01∧λS∪pi1 ¬(#IDX∧DBD@	;WIH	1∧∩∃α∞b≥3⊂5λXλ⊂V$λ3∪∪hF@
IG@π
 !α' L@⊂∧g$Q @					0↔≤J`∀*	xb∧Li~B∧R3⊃$λ4TP+⊃ ¬εEβE

λ∧@@∪1
/'β1
u@T¬↓QHλα(jtp3λ]	BLLππ-∧b~↑Nb_KαqSj$⊂3∪	@aFE⊂λ∧g$c∃βAL=t`⊂∀)α∪'!πQ_∞AαL2a2→J2e\α3$
ZQ(⊃I~⊂π*fWF@
;BBHGPRO @¬≤dfTA¬≥~β⊃M@*λ)dk∪4¬Hλ'+⊂∩@¬≤\@
α2
&=αJ=α∀∩0∃≤t	d)Tq`_,,!)QP ∞XX@¬'∞A	→')∪4A≥¬∪Q	αjRα∃$)I5~∧(h%$∃4	d*⊂p	cH'# _PSG NFLPSGL¬!π∞β_
Nαα8r∧uα⊃V

qh∪Kλβ&()QP ∞X⊂SG NXSPSGL¬≥ "m~≥αik∧m≤t%@+λ⊂
-⊗⊂)`⊂DLORGP@	→∨I∞A
→A_∞J≥∧2bBz(r¬UαV≠-(λ SP@	→∨I∞A!	1_∞J≥∧22Bz(r∧V⊂λ'T π

λ∧∪'∧~∀⎇D	∀4`Q!β
@Lα.i@"bb0h∧ LEAST OL¬
A∪5!+%
↓
→>q*5αN,:6⊗:αAP@!4pλ!U'h⊂$Q&⊂ILS(	7∪5!+%
↓
→>q*6tQ!P@)1S@_$cg*ST∧[
	SPCBLπ ⊃α∀p4*
∀B≡BJ{P$%:α8T*∧x:β *,b.j
Su⊃(j"b0αIGN∃MS
BL∧df@+P%AEH$`),Lp!QPSS&&m 
∧KXV⊗!∪αM23A
BNM2364$ZbXY	_
5I≤⊂4*
q1Ih⊗¬Bd∀h¬LH⊃ ¬!πα10∀∩@XY¬≤αqF∧Q)D)1t∀I@↑X
.5

&=αJ<4PBNB∞αIuα∧)`	_α)V-PαIGNUM]~∃t∩∩@.,r⊃αxd∧L4dλ$L<βU3!Q@εE$Q ¬ BIGH
+~αb`_hαHλL∀)b4;kβ+C!⊂⊂∧g⊂αNSGtz`~∃t∩∩`.,r⊃αxd∧L4Tλ$L<βU3!Q@εE$Q'⊂ ⊂AGING104!_%ED*8skja⊃∪@:⊂2q∧
4λ∀iH0r`~Yβ*$fλ εIRST PAGE @∨↓
BLhP&Bε<*V@4PJ0∃Eλ*4;kβ/EXT∧,!∀c←↔iQcidmβE(
		8π≥λβ⊂∞→αL20∩¬λ_tL@Qc"AQ@εEεBαIF $↓∂ "α
T`!αE!&∀h∧IMtzP~6α*T`*λεa&∀h∧IM
λ¬∪≥
=%~A]"& ,T
D`4⊂ε`eQP 	NITIAL SP	%+
(XA∧
NMαβ[B`*⊂4teKhλ∞@7n!&)U$fWXL__↔,XεA'
':4Ph ∪[8∧∧,Qλ∪hd∀p
)∃aj⊂~M≠

λ∧vv@X¬EA⊂Lr0≥h∩3D¬JH∪	@kP ∪EGH≥P@TT~(~∀4Ph ∀t)~D',εg$Q)ic@+L¬∪
E~≥.i_de≤u9d)Tqc!⊂⊂⊂≠-_
 :py≥¬∪Q	-Ep¬$*⊂Tr+∃ibcTdh
-D|←'≥'∪ (hR&~9¬R`∩l*J4<=5K0hR∧∧α¬<~)b¬\βQ1(Hαb⊂'∃d¬BER OF IL¬∪)∪¬_A¬∪PA)β¬1
A'≥≠≥%→↓"vβK%@%⊗j(λIq0	g	h∧ 
	Hβ)
⊂A∂+∃'&@9αB∃%8xu≠mβ0∞!∃)cciK-P	
]
∃:$∩w≥⊂A∨A%
≤AUQ6
R≤:≡L4Ph ∩t→J4`4λπ"i∀∧¬∀~)∪
≤A1_∞
&%~≥  _(d*⊂To(*!&%TU`∞BITB*BT@¬'&Ph ∩tYJ4*@⊗b"!⊃ ∧D]Nβ; NOT@
A<*21¬∧2&JNα@5~λ∧q(yαbg*λ πE@)LA~&∃~Q4PH$$⊃⊃∪@7nh⊂I~α⊂!&∪βC@⊗Bα↓"N⊗*α0∃,iZ$Z@λ⊃pjεJ#"A⊃4pλ!PαOT BIPλ~∀$∪¬)¬1↔&t∩4b∩$KZR"~4¬ 93∪λλ ¬ @%∃'(A	2A∂π%_

PhP$$_)D`8p¬P'⊂αITB)
R
≤J`∩k⊃Q HL(h%$∃4εB!⊃ ∧]a⊃c`	NNIH
∞A=A
∀*∃α
M!α
2|~.L4PH&Bε<*V@4PH&NB≥"0≥αλ)∃"e8¬a$j @¬→>≤Zt4+Q∪@83Q⊂∪βF .ELSE

~∃9
BNα8skk∃*4=~X∧⊃a↔p∧g$U⊂+df∪⊂ 
@+9∞A' εε 4D
¬-∃H)B∧hε5h≠(⊂
'H()"iQi+"P⊂d∧@→∨~∃≥
a!'∞zβiE*N=→⊗B≤KZB$βλ⊂*(α`iP⊃'i⊂$SαIT AL¬⊃αb2>hR0∀S∀∀hw,εP⊃)'∂&KA∞~*uαN≥uβP%*qti*λβFE'∀h)c@==1*SGS%PG		;ALLLπεAβ1)⊗J~αε $βλ∀λIλ⊂λ T fbj⊃i)P@!!
∀~)∪
≤AAβ∂&t92l4Trb5α∀∀hw,εP⊃*SGS%PG
∃≥a
→!≤9uuEU~≡M⊗αλphThε∀
8o(∞@2*SGS%P@∞~∃91'!≤9uuIU~≡M⊗αλphPβ"R(hαP ∪FA(	6~)∪
≤A5_X∪≥M∞JN8πSk∩*8u~-λqP@%Q3∀hQ3P	aT)c↑@=3*SGS%PG	;AH	→∨\A~>⊂∧¬∧∀λ⊂∀ cbP
(≠∀FBα]∩∩m⊂~⊃∧J~*λ∧qH⊃ ¬$c∪α SFA,[
IFN ML,	N@'
%'∞zβiE*N=→⊗B≤hQ0∀,J8PL@TptJ8o(∞@2*SGS%P@∞∩w¬→→>8ε~>I¬α∩A→¬αε≡∃αBAY$hRt∧↔8T`(α⊂$c∪α SFA
~∀lp
mαu*6
⊗α$∧`8H∪Si@⊗b`_ISP	≥PA≠≠=%2A≤*≡ ,YjE_hαN`≥Nβ  ⊃)¬↔
Aβ1_A>2α≤⎇(T∧@Qλ∀jXU∀P(h∧ OUT E@-∃%3)⊃%_
≥ααZ4,5YD∩

⊃Q$`)T∧&iQ↑X
NSEGS
IRP SPC _Ym0
-%J5"e8ε4eJp4@⊗∃αC →1Y
 $~6"e≥→P⊂+⊗K∀v&%∀⊃V¬J⊃P	V∀ εL,XXP
IFS →∪→0Y&4a2
9eBb	2∀BQ2
¬→25α∀λβ(λP,FLP,XFLP,P,XP,SP,X@'@Y'π∃h4*:uB6N≥hπT`)T∧&iQT¬N!SPC!SG
TERMIN

0⊗vβYα$X¬⊃
)23Q$	tR1i→β)P#∪βR ALL S@!¬∞⊗M∧
∀⎇hT¬$Dα4h
	p∧g
βE(
ZX==.
IRP SPC _Ym
BMdrb525BA2b5BA2~e↓2b~e↓2AK
αe≥¬K¬≥αβ∀pj+αFE!λih!PTc↑P≥ZX¬0~∃i0
auβ[%@+λ¬g!SPC!SG*SEGSIP∀~))⊗JlJ0⊂hαC"J:⊃∪∪j(β↑P≥MEH∨%dZy:α85∃≤u9e≥¬8p
i@,)`⊂SG>*SEGS@∪44⊂
B∩dzJ;Tπ4jλα&'i⊃T¬<NPSG ↔≥a!'∞|αRN⊗≡≤J`⊂hαQS
	tQ`≡Oh"&'T π-99
→!≤9. 5α⊃S

qo@∃∀bcidVα
∃
a!∨%∞βif~2∧zJ:Tπ∪Hk∀⊂	cJdεP⊃
a!'∞|αRN⊗≡≤J`⊂hαC"KQ ∧]bSαD OF IFNPAGING
∀~)∪
AAβ∂&t92l4UR`∃CTπ+AQR4T∧
t⊂k¬KqP( εLP,P,S@ 1
BNβQP@(H4tλPic@=9ZP∃04⊂
j@+∂'[T¬,+L∧C'∧→εN≥U~⊗≡NMP4*R-∩6&8hP4
NαλDd⎇(p∂'XTpλ)QF@
PDLORGt{¬!≤84*~eα0≥∀wP∂(#&()QPYRIGHT  "βIaAαl
NNε≤BVN⊗αJE~∧α3TjI5∃5λT⊂πc⊂∃ ¬CHNLπ→>=I↓)(hQ`≠[4∧ααR%%"RRλ¬∩	~h∩4dλ(⊂	"Pb⊂
ONLY FIL@
B@!β⊂∩D
u∀MHZ2¬∀X∧q**Q1∀H∃∃∃∃
∃∃εE∞β;;   **************************************************************

~∃
_∞:NαH∀`*∀b.iI5⊃4H→α)P*Tbb⊂(∀ ¬VIOUS@→2↓≠ ⊗Nα@((∪u*D⊂πc⊂⊂αPS

S@+	))0LJ0∀MI_∀dMαP5	→βg⊂!SβDE

0⊗@[YαR	~2∧≤βq⊃$	4h∩)@⊂!$g⊂i(	 PROGRAM S@!¬∞∀Q!P@%Pp	#∪βFF
Lπ¬)_h∪%∧*ε@"	9d`8Kλ⊂i@dεC O@∧Y8]I!π:αAP@%Pp	#∪βN~∀4⊂
&:M"&ε2MR∃hQ)∀4rλ@&¬R∩4hXpεbg∃⊗-FEαib`∀Z @
%∃βε@0hP&N⊗αJU :λ⊃THX00k↓⊃,¬c)⊃b`aP∩ iP'S ∧ @'Qβ ∩∃∧z→α	~4,:β0λ*T ¬ BITλ
(J↓0∃4→JT(hαW"!↔q3Q∧	qH∩(iH⊃_L∧¬∃∪→_	α⊃λεαU∧_y∀`(βV-FBα	MOVEI FREEAC,MEMORY(
b~(∪⊃%%4A~J,*ε
Ei$(β#εEαa`∂RE @
%∃βε@0hP%↓jh∀e,QQ$L4d
4LEK0hPα2∀J+H⊃THX00k¬@%!)`B]ibjλ ∧DT↓' ∩ε∃"& 4tλ∀$∀Q4j4∀sh
85Q(λg`
MAL¬⊃ααy∀`*c"B*9p∧h'λ↔%!"⊃*εE∧H)b`∀DDT FREEAC,
P~∩m⊂~⊃∧J~9αα8∀L@β"W!↔q3Q∧	1S@⊂⊃_X∃(⊂c`	NG
IFN ITS,Xε~(Lj0≥Q(∃
E⊗h
400 _XP```@β↓-qr∧"2>J9y6Bε<b0≤;hπl&↔TεFEαTεCBLK TT0~∀%αrP∀JXPhPα33j@"P ∀T,[44@`X@1 εβββ∧∧
gGα)`⊂DLORG∨-PAGLLπ∞⎇{	Ez@QQ J@PpS	4∃∃⊗βE	 .T¬β→+∀~∀&lzP∀*λ¬∃¬Km
_⊗⊂4@```@αYq`$hε∀	@i#oVT cf'Q←(∂1D⎇0∀Q!∩`(pS∩d
∃β!∧P↔+⊂d∧UE
λ¬0∀⊃↔4,@Qλ∪hd⊂∧c'λ$j)FBα	MOVE P,[-H	
β- ZbX1
β↔αiFtQ!∀l@uQ(λk∀⊗eYα# eQ,(⊗@1,,FAKFXP-E:~(hQ`≠[4λd@⊂ε)P∃$)'jQdεEεBα;@∪≥%(eαA%_
&Q∀⊃α&:M!J2	→dMTλ	_β$j2E @∪≥%(e :(~∃',∩RRDλE,@4λ∪jZα⊂ ∀OPS20 SYMBOL TAαL@
~∀4⊂
&~pε⊃IAeX4(→Yu ((⊂kf+ ∩NLπ:4PBN⊗RRα¬  Q)∀`)5P'∧ibj⊗α B,
λ∧∪→'!
α	c04(→*Tm∧Tλ"dLi~C∀⊂β"B)→αjf$H V_@0,∧~(L
∩$∀λ∩bjv¬∧% εE∧R))`∀IH
∪(β∩∧4)→dMP@≥αd∧SH↓αP⊃MαH4(→Yu (3(⊂%Hαg ∀VEC ⊗@⊂I`≥4X∧Ti→βg⊂'∃d¬BER STORED IN L@∨εbfnA¬&@aEBaAAb`4(~94M∧βH∂¬@%!)lS↑X
 4Db`→@a⊃∪@8p∧"aRP#'iλ)lfa∪βHλA$
∀dQQ J∧αTTjD⊂∧g$U→(DB]PεEαd∧DBD,[ &@b`∩⎇≠↓α,h¬∃HXh¬P∩]
∪≠=(
,∀ε∩bDE⊃P@!2⊂	&∩P_V∀⊃e∩`∪HT+GJ%Lπ⊂∩⊃Hh ⊂LYzd*∧%I∀`)5T↓Q@∧cj∩ εN	
λ∧∩A∃I' ⊃αLr&@#(aP@!2⊂	&∩P_V∀⊃ ε%EXP)~∀%	⊗20h ⊂J	*%≥λ∩3I~α→"FBαINIT2@t∪5_∞Z⊗J↓E"λ@
!Q@∧d	∪$P⊃,(@∂∀KM⊃(@.<Q⊗ 4X¬j!Q@∧fgUαE B1∪⊂~& ε%@"B1jIQSB!Q@∧P%∀)j$SαIT2E
∪≠=(
∃ααJBcλα".j(αfbfPαER TH@
A
%→∃αD
0∀$β⊃(λitH∪λ~α"`∩ USE
	H∨-∀@dY6βaQR⎇≠1y.xdU :TεD]LXε BIT BYTES _A]%∪)
↓βππM&~(LzB,haP@!(∩TJ:α⊂$g∩h∧2E
λ∧∪⊃∃∩`∩β∃JE Hα.tH~u∪tHT⊂¬#'βE	M∂T¬
@∩a0∀T*;∀hHα.sjZα( ∃T T@⊃
↓'3≠¬=_A)α	→∃αα	tL@U⊃4AQ@∧a'Uh∧			8π∨+%αV@"λ¬∩λT⊂3pI)H⊂λ'RdεTER @
∪%M(⊂∀(LBJJ@$ε∩e%A⊃β@:Q0	j∪βRE JFN~∀%⊃%%4dX@:T∩Nf4HA`≥≥→X$`9λ⊂
 PαLE AD@	%M&A6LrVMα|r∀4!→¬∀dα(EF

~_∧D]LXε BIT BYTES
λ¬⊃→%
fP⊃:T∩Nf4H@∪@8q0
⊂∩αEGA∀IP
A1~≡$Aα>→¬~f ,)yB¬$_!D(hαB4i@jj∧DBY`∂UTPUT TH@
A≥J6
>bαRε
d)αRt
DD(⊃R)HαFE∧⊂βL@∨'_~∧%∧RJNP∧J0∀MF(PhPα2∧J)p∧P_K-`iaRh
 @8m's@7⊗{1βS∞∪3∃α'+7C↔ π?WQ∧¬⊗r¬λ∧nGI00s	~tλ∂&∩ih↔)Vd¬BOLS(
9:4⊂λ&Bα9u-β"BTbj-⊂∃⊗εE∧↓JUM@!∀A⊃0p¬3(hαB(	_⊂∧k$H ∧,1@Xλ4!∀∧$I∀∧"≠∃D#@"B(

4r_k∀⊃¬6 εE∧H ge H*⊂.4h⊂∀(Mα0≥αλk¬αc⊃Q M∧)zU"Q!¬≤@rS@~Eλπ⊗@2
α∪⊂I%∨%β	2nε≤~&IαβAP@+↔#"A~∀su*AαE∧e∀)j⊂$SαIT2X	
~∃%_
&Q∃↓`⊂KF@ε@X_⊗⊗⊗βASCIX∧A9!Lp	rX_4dM8∧∂II4pλ↔∀lfa'S)n.FBαINIT2@
t∪!%%∨∩b@∩n
~≤MαH↔	∃βgP&≠yryP_0r6 9 p∂QSαc∃βSα/⊗Nvtλ

t→⊂
v\⊂9|`-bh∂XAβ#πLQP@+↔#"A~∀su*AαE∧d⊂d∧TF
λ¬:$KZ⊗ 4D	t2∧α1SDλα→_εBα
∃∪9∪ ⊃J@π Hhα@↓Gp∧g$PαS INIBS "↓∪:&∃→Iα→a∃#(β"C!≥]P≠ FALLS IN

INH@¬&t∪5_∞Z⊗Jα→1@HI`≤∃X($d+0	gT*⊂ ∀HE @→αA
∪,AQβ¬→
0A/"Lb∀4!→T`:Q2(λV LSYH&Zβλ%nN⎇∩R&:8εR"∃∧∩NAααH∀)⊃(⊂*4∀p
a∀db$`T,P ∩E@π∨¬	L~∃∪≥!
MEPJ6 =hT∧"dβ⊂$λi5J⊂e⊃ ¬∧aPd¬L D,LAPFIPZ@λ¬∧5 εE∧R))`∀ IH
∪¬Ld⊂∀(Lj0≥4Y∀∧2c⊃⊃∪@8S⊂1d
⊂πP'∪βP	
AQ⊃β(A∧A¬+¬	→∪≥∞β_∞∞∞αZ$,"λ¬∩	~h⊂λ TiFE∧Ql!d1⊗ APFIV-DQε@$hP& ,zhTj∧EID
∧i~bD~α".i→β*"i⊂βHANGE @↔e&~(Lj0≥Q(⊃¬I3R0J:λ∧!TCE	EX@π⊂Aλαb& 4_*5αk∃λ2HKαr3JHαi!d⊂dεGE R@π∨I	&~∀%≠⊂≡Z,iα"β∩3I_Tpλ∀⊂β)~∃%_
&
≠⊃`⊂M9y$:∧5I∀`)0Tl!Q@∧e*Sh ∞ F,INIBS
∀∪5_∞Z:Jα~dβ∪∀k→αiV@1
∪≠=(
∃α
⊃J¬2XεC#⊗εαbdβ⊂ (
h.FEαd¬OVE TT,IL¬∪¬'@W⊂∩2≥J6MT∧*λT@
	IDPBTT →βHeα4PJε <)HR∧~β@⊗L∧¬∀~(~∀`-Xπ2∧Li~DLI≠$*¬IλR¬≤XyT,@U3	→β%P!SβUN@)∃%&A
=$A&%→↓2λ@F↓α@

IFN PAG@∪≥≤Y6~∃%% Aααa2n~α5D5Bβ⊃S¬Jv+∀h∃α)P∩]@∧X@2\J~MI_eBdα1S¬Jv3 ⊗∀`i⊗$TY(
	H∨-∃∩A(Y0C∧C'≤~∀&lzP∀,T
Bd
~8tdXQ*D-∀Y→`hT(p	↓→αgk"RP*⊗&⊂αNSG
묬∞H%≠⊂≡Z,iαQH)e≤<β∩c!$i(!H(V⊗-Pa(
IFN NXX!Q¬'∞@2Xh ⊂LYzd*¬EI∀m≤yI0hPα33j@ ¬ @)PY6@6uBaεE
~≥ "β⊂V∧4(4h{hε`∪EGH	∨∂t~∀&%α∩¬EK5≤,x+∃"bβ⊃pj:α∀ ∀T)]~∀%≠⊂≡Z,IαQE
E"Hβ"B(→βa%'λ**⊗↔Y
	MH∂-4A(@2LjN≡I1P@+ ∧D]QdεD OF @∪
8A≥ "@∧∃

8qP@*⊃0	&Rdε
	MH∂-$A(@1car,hIDM≥¬:∧=9≠"kβITλ_pεieO⊗a!λ∀ic←/Kh cf∪βG
	MH∂-$A⊃2∀∩BNN=y6Bε<b0≤8Q!∃∀⎇DλBbkAQ LHI∩∧λε∀"
F@
	RLπ(Aλαa5DQ!∃$d4λBc;vεββQ!∀$DλBe[FVβ∪β¬EE¬-*H$e@#"B)Yβk"dH**⊗→CE$g$U~X
	TLNN D,73  @``~∀%)→4A⊂Xnn`@``~∀%∪	!∧β)(@2 h ⊂M9y$:¬EI∀`)5
#!∧fgk⊃P"⊗-K↑≡≡≡⊃dεDLISP ↔∧
≡N≠%Srh∧⊂(yαie@>-BBPSSG>@>5'∂→=∞|XYM(Vy¬	!'π∂|['∂1⊂∞≥zβQP@!33uHT⊃∃⊗⊗β$XM0Y#%β9	∨6hh ⊂LYzd,@(⊂
*∀*∀FBα	AOBJN @(0P	5DhRt¬@8Yd"∧βqH	_SH∀λ_p∧gβCEβ≥a-"T)cP!∀li`∪G IN "A' ⊃αLqEBMαT∧LL,∀g↓α@

IFE PAG@∪≥≤Y6~∀4⊂	mmβ4∧L@R5∩(→α$m"H* λE SEGM¬L¬(A$
∀dX∧k∧λ3Q→I3R`_gjg*⊂i)P#∪βR DE@εZb`
~∀@@A¬i%'∞βiv~&∃~R2x1∪@8tSpi4λεP!⊃hπARE RELO@πβ)∪=_	∧Q$αααλ*5M≥8p∂'Y⊂∧f'Pβ
∀~)∪→E¬~Qh~8U%Rλ⊂↓⊃ ∧]dSαIBDSETS L¬∨9mR⊗J=∧z0∩∧X∧TI@i
	MH∂-$A(@24JJNRdz_hαB3)@hεEI TT →
%%')→=%@8Ir∧tz@λλ~α*"fT*⊂ ∀O PE@%→_∞J4hP&NV∀IαRQe~R$β∪b!↔h⊂
$∩iP i∩h∧@⊃≠∃)∪εA¬(Aβ'M⊂⊗
@¬'β%u'β'∂1⊗~(K	BNQ¬2~@⊗s∀e:β!V⊗∀d∧IST][GCBMRK+G@π¬-πt~∀%λε¬≥λ∩4f%λε⊗)L)cf%CE	1A' ⊃αα;∀j@⊗p	lK⊗(ilSa'f.VβGCBMRK ↔∂
NfmjNfN<b,4!⊗∪¬≥D	∀5~β⊗s
5i⊃TeE∀3∩*:α.`≠G@π¬≠∀Y.≡∞∀~∩I.<~∀≤~+T5≥8yDZ@⊂R5
1 ¬∧XL)j⊂$Q,⊂[FX, →#→∪1:αYUm\x8$m∀8π1K
qs∩eHR5∀aQ@∧X@0SPλA∪→_Y7
0XY#
1_∞:Vmj`≤<8)U∀]XiE≤<β∩`⊗⊂αITS
묬∞H$ba' ε∀rK8$`%λε(a∩c`∞UM][GCBMRK+G@π¬π	I3¬≥≤:2-H)∃%_Q!∪¬8¬λλ$jεEαXX ∪T @
1αb`≤5α
`∩∀ ∧LNM,,QFIXNUM]
∩bβαN@"λiEαe8iBZ%λID@)+∀(i⊂πg
Sn@
	10S@(↓ ⊂∀(K	BNQ¬~@ (!⊗∪¬≥Dλ%¬_Q!P@!,,∀jD∀piK-R,&Jh*`∩,,QRANDO@≠:4⊂λ%E¬~QαNβ⊗ h⊂α, _∀h∧ @!→&P∩ne→-∩~α55¬-%EE@∩4uQ ¬∧XL)j⊂(⊃,⊂[FX+P@+HXY#
%1≥+≠t~∀%λε¬≥λ⊂λ#∪⊗-c&
h*`∩,,QFLOL¬+≠hh ⊂hαR3F⊗∀h
]αd))&H i_@,@¬)¬β9λ4!→E≤Bλ~#
@∀q1iIqk ~CE	CAIHAβHbP∩
4∩R
LhP%α**5"∧α3@_L)\εEαdπU@)M)$A\
N∞≠$¬ddβtu∧
p∧$f⊃P 	NITIALIX¬∪≥∞β
&Q∧∩2>∞]_4*@KQP@!10$U⊂_VεBαIN "A&pt~(~¬EαV 4xT∧+Q0	)QP!)lTicFEβ@
P~∩ 	`≤,h@@xH∩1HT⊂λ cR`εG

αλ;@∪≤∧@∀@*⊂@∩)@$i'D BINλ¬(rA∧ 
 ∀MG⊃P@! ¬εE∩`∞IN↓Q$t&h	e ((⊂ ⊗⊗β-KN∞@∧V@Ehε∪αbβ∪pJHβ)U@1X
∩@.≤*Qα⊗αε <∀I~5"lI→d\Lhp9pπ)dSαG A∩@β&~(∪⊃¬%i~AαX4bQα∩4⊂λ&ε|∩*9αλ¬B@e,#"A→αgk"RP#⊗'PαTF@&4⊂λ&6⎇2⊗ *λeD4Tc"A→αgk"H ε,[5↔⊂~>⊂¬Bd|*AE@Q ¬∧d∀)(
 A,(F)
λ∧∪!-~"	αα¬DL↓U⊃4I@ε@
	ALπ¬∃≤βX@9hε HPβ"R)@$i'α∞α	JSP @Y∪Iβ⊂~⊂HA`≤Li~DLI≠$
∧∧P '⊃'`
 NUH¬HA≡⊗t"JεR⎇⊂$λQ#$L↓R5αλ→α$m"H$g ∀DRRU@!PA≠β'-&A&pε6⊗6⎇∩d4&⊂∧A33uH∀⊂
ε-Th∧DM∪K]~∀@`@∀&lrP∀*λ¬b!#FTeh
	H∨-∃~Aλ→%≠β'⊗4⊂
&~pε&@%5K0h⊂α3#J@"P ∀,Xπ	¬∂5&e 4hP& ,zhTj∧AI∀l
90A⊂Hλα	Yβk"P⊂T∧[@'∃)≡AβHbP∩thP& ,zhTj∧∃J¬-∀_k⊂hPα+@J(α`e@,Y⊗-@.,¬'NαH∩be9I∃≥∧y{UhHα.thZα⊂ ∪TART AD@	%M&~)α∩P~∞⎇∩∃↓r,r∩2~:α]∧_z4MRT∧/Kuαh cS'cD]Q&*`∪H PDL PAGES
∩@9(
ε2,(4(∃jd@∃1(`iadVα \:≠IH
∪)%β⊂∩&T*⊂l4Ubt4!→T`:β"P K-`
RST BINIPλs:$∩∩`.≤b0≤∀(Z"∧Li~Bb¬9→d8(∪sIK(β"A→αgk"SP V$SαITIALIP∃
$∩∩`-∧r⊗⊗⊃∧"0~∧βsPhQ ¬!$SαIT9:	(
-β1+
A\
N∞≠$¬cQ8→E∀01⊗$	3R5	_3∩6HX∧¬FE↔,¬~∀%∃%'"α∀Li~CHhαW"!↔q3Q∧	qH∩(iH∩5
1 ¬$c∪α D2@Y6~∀%≠⊂≡Z,I↓E1t2"NHaP@!33uHTλK⊗f5α⊗"g∃+"anCE	SET¬ε~(∪'.Mα0∩¬λ∧v*:β"B∧	TTu∧¬Jh	FBα	  PUS@⊃∀↓ Y!-∩&~@⊃⊃⊂K\α9H∞|αP ⊂@U`'≠JβS#∃¬~fOS,¬R¬ε≤|W1 ¬∧Pλ)b`∀ZM  ≥∃	'3~∩$∩∩`-∧εFF.βH⊂~~0z⊂ &lpgQLA`∪#*β@∨Nβ=_,!α@
	MLπ ~∃∧	2n**5"∧)→dM∞7"!⊃,¬af∪βBBER INIT, SIN@π
A∨9→2@~(∪⊂⊗>4*5α¬dJ0∀MI_∀dMαQ"!⊃,¬P'⊃bb⊂"∪β @∨≥
~(LBJJ>J↓E %8~494¬⊂.∞βI`≥Sβ#'πM_∞L≡~;p↔λ ∧one
P→:4⊂λ&N\JB∧Q($L@R5≤Nα	H@%I_∞%↓α⊂`iadVα \;Already initial@%uKH~)90∀Q!∃¬≤βu5↓Q@∧d S*#∧DB]i"j∃i'⊂*∪β S@+A%∪∨H~∀&U∩N@"λ)∀`)5∞#!,¬∩∩m⊂~⊃∧J~9α ε#@ ¬β≥`	NIT1P∀A%_
&Q
9α&:M!F∃αLr&@#_⊂λ	→β$j1@∧A&tJQF5∧J0∀MF→"∧Li~CZ	→dM1H	→β$j1G @∪≥%(c⊂A%_
&Q!α&:M!F
αLr&@#~d∧L@R5_V⊂ 	NIT2A IL¬∪(eλA∪≥∪Ph∞¬αLr&@#x λ	→β$j99 @∪≥%)≡bA%_
&R{⊃α&:M"0≠~	→dM4 ⊂∩dεITE&~(hP4*&4qα#⊗¬E@1 ¬∧fPai'f∪βH∂ A8e∩_eE@+Q
AQR1Q$
p23¬Kc"B)@h"g TMPC,IH
∪)<b∩`.≤B⊗∞4
D`4∀q1$	1H∃	λαi"P∩iP @ 
∩A)%'(A%_
&Q
P$%@4∧$dM8∧∞D⊂""k∩abP+R$adεBα	LOOKP AQ≠!εY%_
&Q
λ%mαα9∧`:αf"2 k"PλαDEFMAX ≥
¬&DA∨8A∪(~(∩A*∃~Qα→i∃#
αC"A→αgk"RP*⊗(S$i`⊂ 		0⊗E1∪' Dβ∪&A$BVMααI∧*∧β∩4j∧∀piU ¬M DEP
∪π∀~∀&lzP∀,∀
E"dβR3↓⊃,¬P Sα@λA≥∃	&A9_
ααα	b¬¬)z∧-∃K⊃P@!2TTjD⊂∧g$U_kFEβE$g$U_h
:	Lπ!≤β)≠!ε1∪~&$yH%@89∧,≤αh⊃I@i⊂ @(αLS@ h@	α∩-2&∞∀hP%α**5"∧α3R*F0#"A→α'geUh⊂ ∀MPC →∪9∪ ⊃Fλh ⊂J	*%≥λ∩3I~α_`FBα	MOVEI @(1#⊂∩Nαh ⊂LYzd,Jλ¬∃¬I4P0i@f@
IL¬∪(c\pλ&∞dzN∃ααIU∧~ββ"A→∀S∪$
λε$i⊂a`∂M		;P@+PA)"*αJ&≡E!↓
∩-2&∞∃⊂∧∧L@H⊂
$⊃P jj∪βL@∨β⊂A)"Lr≤4!→¬∀dβ(∃
E⊂∧g∧U_h			8π
∪0β+ A$B∃↓
¬α0∩∩λ∧∀Ih"`∩TY @∨@
2~:α! ¬∧e∀)j⊂$SαIT1X		0↔¬dA%!→¬∞⊃≡Lr≥α→`
$DT	d-h⊂λ(∪α P@%=!⊗J%H4(Q)∀`)51'∧e#!S∧¬
	OUP	'%⊃αnε≤~&IαβAP@(8X	7\α inpπGC]9S]NAA!≤XAα{@∩¬λ∧∪D
<h⊂↔≠z⊂:4→P ISP sy@LACeKα	↓5↓∧εG/(⊂9l≥8π↔εBα\]
I@
∪(β
¬h→*5α¬EHC¬8Z@h⊂α3u*Ju∀@≠`iadVα \What i@LA`∪#*αBBdλl⊂:42H0y2`! p∂S@&Aβ@&Tε∂/Mx
|9λ⊂∪~v2y←H⊂..FBα	SETX¬~A∧r∃,aQ L@3uQ$
λε-h∪αBUF,,P@≥¬UVc:4⊂λ&
e!αQJ	d*1Js
	PU1EV εE∧SdπVE R,[ (P`n`@αa2Bh*T5@#"B
85⊗PD
∃⊃↓⊃,¬g*Sa"`∩ Tπ∨%λL@ZA¬¬'
@@Bαε 4@λ$
≤Tε∪αpβ"B*85⊗PDλβ⊗*∧B]c& QiP ↔NR@λ~∀ ∩∩%X∧β
∧λ∧Si$⊂π ∃M @
∨+9λ⊂∀(HH$%@4ε"¬¬)xr∧uYP4⎇Yh@hPα""!↔hλ
⊂⊂βMU STYLE
λ∧∩$HI`~β⊗¬∃Z$λT`(pπjg∃ ¬RED
∩∩$∩v@@∪↓↓
@T ,@Psu)@*"`∩DDλ
∀∩$∩∩`-β!A↓	p∧"∧3PsjYβ*"i⊃b⊂"*T$g#@2εUMBERλ
∀∩$∩∩`-β!AA@εεαbb∧λ∀`+(⊃∩(y5∀khfjViU)$g#H εOUNDλ
∃∪9∪ ⊃F⊂π LLh9¬ 9λ⊂#!∧a`dQP V/⊂β
∀∪
β∪≤A∧Y0~4hP%α**5"∧α3B*F0b"Nβ↑C OR <CR> TERMINA∀@&A¬∩ ≤=(⊂∪)X4H∪JYαa"iβE	TRH¬
A0d`~∀ A∃'β(Y&pJQF∀HI`≤tt	T`:Q(⊂iλ4Th
λαi&dU*"b0c*"iλ)!εEαa`dbH V≤XKα	∩w1	α~⎇*0∀ Q!α∧U*:B∧Li~C#"B$∧∃∪∪HT⊃K
εελ_βE	 (%)`⊂5⊗ 	NIT1E
	  @)I_∞∃α2aE@4PA↓↓ααID`4⊃K
εελλ_αDX@!∃%≠∪(αα∃∀_94-∀kλλ*j⊂'∪βPλA∀*F@,~(T @"B(∧	TTu∧	3R5ε_@εE$SαIT1M8∧∪πβ%
AαXdfP_⊃↔5∀∩λiu,@Qβ"A∀λ∩TJ:α⊂↔+3
∀∩↓)%≡A_Xd`~(∩A*∃~Qα→i∃#!Q M≤αr4λT⊂s5*↓αE∧P∃)'' F,4
	  JRSPλA∪9∪ ⊃FXh ∀Li~CSαB0h→3λ⊂%DX#"A∀⊂p2)HαP @, ¬t4PI↓α**5"αβJ`→βE	 SUBI A,"a-	α~(JαR2tλbc#∧∧εεβ"B$	1∀⊂Dλ+∀B!↔p0pjYαjf U$g#@ @π⊂⊗U¬~Rf2*α& 5It¬∧t*X`hPα(∩J*uλ∩)@$j_aβE$g$U_eP~	@πβ∪
↓αP⊃	ph ⊂J	*%≥λ∩3I~α_cεBα	  TLNE F,40  @``∩∩l@\D~(∩@@AQ%∨
A_Xh`~(∩@@@↓∃' APY∪≥∪Pc
4PI↓α
∃~Qα→i∃#!Q$L@R5_Q≥	CAIHλAααa∪Q!∩∧≤→→D*∧∃D#HhαB(∧	TTu∧	3R5ε_c"B$∧λ⊂
&∪β F,4000  @~∀%α↓α&6αYDJ¬J@π↓ .p(ajfjS j"P∪αUMBER BASE 8
	   IMQLI D,10.		0⊗A¬_
"λ(∃≤*∧∧ _αλ
∀∩@Aβ	⊃∩A)(αa5	AD	$4!∀αα∧_HDJ∧EER&λ∧ @)
∩@A∃%'PA∪≥∪Pc∧4TJ0∀MF_s@!0p2(T⊂+λEAα@
	 JRS@(β∪⊂~& ε∀@@ ¬∧P∃&-"P⊃⊗~____∧DNβBE@)Q$A¬∀A'>l)α$α1r*Jc"B$∧∃∀ShT⊃K!⊃,¬a`SαT HAT¬∃ααJt`4⊂ss)X4c"A∀λλ∩J:λ⊂
,IH
∪(β
∀4!∀¬%∃αQ(λe
α!↔t⊂	'R⊂ ∞@+5
-$λd`:αg"εBα	  MLπ ~∃¬"Q2⊂HI`≤∀~8Rβ¬`∂aQ@∧P&SβP
~ααRQI~¬∧s⊃Q J¬8ZE@(H⊂
* ∧
	 JRST INIT1B~∀4⊂
&:M!F!hM~.&Bp∧∧9αj`⊂		;@≥%)⊃⊂∧∧$Ly~E~∧βStD
v3Uλ≠λ⊂rλ~Tc"A∀⊂¬)hλ*⊂INIPλc
4⊂λ&∞J1α¬b∪∧4!∀∧823⊃$λ+λ↑AQ@∧P⊂∩))`∀,∧Vd~(∩A',∩%α¬b∪¬ *(⊃P@!0p2)D⊂+λH⊃ ¬∧P⊂βAILE A,"Z
∩@↓∃' APY∪≥∪Pc
4PJRJ=∧11P4PJ*JNα@L@R5_R∧¬∀~)∪⊂~& ε∀#Pα33j@ ¬I T,P@≥¬U⊂∀!~4\MλT∧950λ∧B]X⊗⊗⊂b")"TiP'cλ!`
@*↓!!9¬~RJ&t84(∀λ4m1⊃0d
λε∧DNβC@≠,"⊗
ααy∀dbλ9t`*Q0	*λ P ∪TRING↓)≡AαααBBd
t`:Qβ"A∀λ∩Tj∧∃∩)@$j_bBDXFAIHλA∪_A≥∨(αα¬αZb&⊃α≤jUαBα	`hPα2∪
+S(∃¬I4⊂λ'F@
	HRRP∃~β(Y&¬α0∪⊂β"B)*Tp
2dεITE(λ (αC"I→β$j1@εt&$b0∀rλeC#β∧∧ε↓ ∧]a⊃h∧TER BE SLπ⊂⊗∃∧"&≡~J0hPα(∩J:λ⊂
,IH
∪(β
∀$Q!∃%∀hT∧2cAQ J∧αTTjD⊂∧g$U_bεEαh∧RZE @Xhβ$%@:
$`8tP3)X4H∪JYαa"iλ εOUND8∞~∀ A≠∨-∀A)(Y⊂∩∩`.∀
N∃↓α⊗α`'βFE∧SdπVEM TT,IPP@≤d4⊂
&:M!F@3!→T`:β"P*$h ⊂N1
∀∪!%→5¬!2&:M!FM4∧b!↔pr⊃(eP ∀O SEE IF @)!β ⊃αα
∧`$⊃0$Th∧S
	H∨-∀A(@2MαB9HhP&"J∀iαQI→dM4jf1 ¬∧i⊃`∧EASE TM⊂@εX~∀%⊂∞B⊗pεR6B~b&4~Is_hαB(	*tλ∃¬I3R5ε_ εE$SαIT1X8∧∪%1ββ'
↓)≠!ε0~¬ 4KZ⊗ 4D	t2∧α1Q$
p23↓Q@εE∧SdπVE @εY7→Y%≥∨:4⊂λ&N-"`∩∧∃AP@)3R5ε(,¬∧iQh∧Z B,λ
∀∪1'⊃εAλXl4PJ*V6αλR∧∩I→dMPC!∧dfjS$P @,THGH
λ∧∪∃%M(A.Lb"<β⊃∪@8S∃4i∧⊂∧$cR⊂)bcSbg ∀
λ∧⊂∀)→dM
p ≥αdπU@)M)$A\
N∞≠$¬cRHh∀L@⊃1⊂∃'P ∪AT¬∃αDJ≡!αα8T<@13U∧AαE..CE$g$U≠a≥∧SβP)'Q$A7βM∞&@$C@$α 	NITIALIX¬⊗⊃ h ∃@↔#"A~q0
-λ*⊂			;RECAH	1¬""εQ∧	α∞J,2Reα≤z∩*∧∧ ~H&`ebTP( ∀LLπβλA!β!!Hh ⊂LYzd*¬J@X∧40700 _Ymβ'π∪hA0∩Nα8∃ (αP ∪YS:MACLSP
\X 4hP&BRdzε⊃ααA⊂K]8¬∩(eP ∪AT¬∃α≤z6 ,→hB∧Ld	DL@Q(⊃(I5∪tAQ@∧bl∩h∧  "α`4*@Q↔4,@Qλ∩(iH∩∩*81s1)@*εEεBαIFE HISEGMEN@(αb`_hαB3jZα)`∀R [ASCIZ @8hI∪≥∪Q∪β→∪iλH~)90∀Q!∀-Dα5⊂T∧
	JRS@(β]∃¬Mα~*hI`≤,h@λ	_Q(∩	~q1s(Yβ*εE↔DXEND @∨↓∪
≤AMβ∪_~):∩`.,r⊃αxd∧L4dλCQ!P@)3R5π↔,¬∧e∀)j⊂&∩ih#gCE
IFN DD`Y6~)∪⊂~&$yEh∃i∀`8R3@⊃Q@∧idV!$j \L@∪'A8@~∀$`⊂∀)→dM∪l@≥αTεIOBIH@~(∪'&D∩&@"λπ∪
:↔λβ!∧XεE∩dεITO3:∩]%_∞
&ph ⊂M9≠∧)5λ↔λJp¬`≤
λ∧∩`∩$~∀4TJ0∀MF~∪@!4r6λ$j⊂.⊃ ¬FMAXXλ@~(∪'&D∩&@"λπ⊃H~wλβ!∧XεEαXεE$SαIT1S8∧∪'∪a
&Q¬b∩,iX∃E@λβ"A~p∧l!∩h∧ @9→β'8@4⊂λ%@hP%AHH%n~Lb2,D	∀`$∃r5	∧~8λ8≠_V⊗ )ppn $4⊂
t↔8T`(λ∪qD	1S@_ε,β"AQ@↓Gpπ'j∩`∞ITI@
∪¬M A&pB∀"	→dL∀F⊂\@∩3B
D⊂¬f$SαI1 KLINI2
α~∀lp
mαtzR*λ¬∩λ~α⊂ ∀HE CECLπ≥λ↓α!α&9¬""*	XE≥≤_x@$	⊃0	"λ$iP H)"`fλ ∧OLLAR @'%∂⊂→0hQ`≠[4
tD↓3⊃(
I⊃(∪jI⊃0	⊂∃+`∂ AR@
Aβ1)≠∨	⊂
MmααI¬-~λHE"¬yyb=λ⊃q*D∀ptH~βbb!
~∃9_∞R→a¬#Pβ"R(iH∩5
5α-FEαP⊂∞VALUE [ASCIZ XλtXb&NA∧r0≥"	→dM∩03	~Q1∃
4q(	_β$j$G)≠
XP
~∃t∩∩@.,r⊃αxd∧L4d	∃%_Q)∀4rλ@F¬⊗hβ!∧d ∩RLπ∩@@
b`≤
89∃@$↔∞sM}λ∩3I~α$`f∩i"b*8¬se I@
∪(α"≥$lhRr`(Q!∃¬≤βu5↓Q@∧d S*#εE↔DXEND @∨↓∪
≤A⊂d`~∀4⊂
&:L∩NAhM∩⊗B⊗
!α2J;∀m~βλJ*⊂sU↓⊃@εE$Q'⊂"10,[

α0⊗vβYαJ>-"&tT
D@4⊂r⊃(eP ∪EGH≤PA¬∨+9	β%∪∃&P⊃αλr⊃α_d∧d⎇9→d:@β"Ng]P ∀DLL LOSER HLπ.A$qα↑→`
y5∩→I3R`⊗LX⊂∞
	αINH@¬λt∪Q!≥≤AQ(Y'≥↔'4hP%α**5"β∃bHλα.ui_βεE∧∀bj'P⊂T∧
	H∂ ⊗R≥"I↓λe⊂HPα3u*Jq∀@≠`iadVα \ SEG@≠9(A>pε∀Dλ$`:3Q⊂*++H∃λXε  LI@
⊗@λP∞N⊗αG"`+↔#"A→βj`∀STR (F)
∀∪=+ ∩NαJ"¬\~84M∩λπG..FEα`g"$H**⊗)Qc`SM
∪α⊃	∩A"bN⊗≡≤J`⊂hαB4jXR(∃¬E∃∃∀CE	H∩LZ @)PY(~∀%≠⊂≡Z,Iα"FaP@)3R0HF(
∧iQh∧Z T,λ
∀∪1'⊃εAPXf~∀ 
ε∩∩JαQ1	h ⊂LzZD9∀H∃↓P@∧igR π D1∪⊂~&∀!D4!→u-∀p
)λ-`iaRm⊂ ≤"
P→:4⊂λ&*∃~Q↓ED1$4!Q%hHα.q)@"⊂'cλ$c'1_XεEβE$c'λ$j)V⊗β
∃∪→
A'≥→∨∞Zβ	E %1⊃∪@:P4R)@jiP(⊂i fbU ¬RS @¬+∪→PA∪≥$yαV∞|"∀4)_dd(∩∪I9α'c@-5(	6~(~∀`-Xπ2∧\β _L⊂ 	NIT ROUTINE
λ∧~*\b& 4~@∞A→αgk"H*⊂[5_
N⊗=→12≡≥~R`(β"RiI3R,'∧fgk⊃P"*,(T ∩~)∪
≤A!_
.Ixr`MIId`$∃∃⊗⊃aa#'Sβ+GCBHNK
,¬→'∀∩∪)→9_	αR ¬D<≤(it`1 ¬∧P∩))`∀KH	&tIH (αB4hZα'P"∧¬∀∪Q→≥
AQ(Y∂π	'3~~(∩A6⎇2⊗%α ¬C@ ¬∧j∪'"P*∃⊗#aa∃αC
	 MOVEI D,1
∪)1_
*λ¬∃¬Hβaa)Pi
	 MOVEI D,2
IFN H@≥↔1_∞≥K1P@!2⊂	)⊗α R,ST(T)
λ∧∪)→9
A)(αb≡∞
Dr,4$∧ααβ(I∀2¬9Yu (αdP"∀)∀nLT∧QHUL¬⊗b~):∩%\*0∀λ∪qD	1S@⊂∩'%f'QF@
	SKIPGE @λ~∀$@]-β1+
4TJ~9αDr. $βq`⊗αh∧@→4↓)(@2<~∀SsjhxpR∪I1 ¬↔"S)bDDU&-⊂*∃⊗#aa⊃'`∂
	P	2zαRQF εελλεBα	DPB @λ@2Xε3≠β4∧¬E∃∃↔!Q@∧fgUα@~AQ(X@"α@
!QRs∩)@$Y≥∧PdπBJN T →↔1∪⊂~%λh ⊂LYzd*¬EK4U∃8¬⊂∩d∧GCM1]~∀%≠⊂≡Z,iαQHx4m∀4∧β!∧fgk⊃P*⊗-R))b KH	∂πM(∞t∀PJ6 =hYR¬"β⊃pj:βhεEαTεVALUE @7¬'π&RαqhnLr&B_→DMTX@λλitH∩iE,,εaQTε.FBαλ
*hH%n⊗t!α>→∧J~2∃∧B0∀\β∪qeVα@
]		0↔9λA>2α&~∃¬~⊗≡Ixrk⊃Q%hHα.q)@ ∧ OF IFN↓∪ ∩LhP1nIz∧$b	It5EλIB∧dβttλIλ∪∪hi∀⊃∪∧λ3⊂T
1 ¬$c∪α D1@Y6~∃1_∞B∩ciuIAα↓P@)⊂πc,∀ ∧@_zβiEA@hR2>NαλDc@,εZ0
LOFLPDL==10
AH	¬!Lzzn`@`⊂∀*≤	⊃αεd∩BMuβX∀d∃λ∧jfFλλεBαX
$KZ⊗ 4D	t2∧α1SDλα_XεBα;XLA@¬⊗0hP4*NαX%%$βα2λ→4V(λ→α HA@π⊗A≠¬∞J<hP4*∩,2& 4Tλ∀l
84∧
@⊂C"A_4pr+⊂.εE⊂Pa∧nβE*"i∪dgεEβE""c∩dεE ALL@⊃β
⊗A1→¬
,EJEαdβP3(Uα)`∀DAH	εY5∪⊂~εd→2-λ¬∀H∃α+d"T ¬,NWH@%
4⊂λ&N\JB*λ→Dd@εE∧R))`∀XLABDLλ
(MαVN	$¬αd→IE%LqQ LX~44⊗p
(λP⊂g SbP⊂≥ ]\S@)⊃β⊂∩hP& ,zhR∧
&⊂`iadRP.' Sbh]
λ∧∪!-~")αα¬D@⊂ε'*SF@
	SKIPGE A~∃a→β¬0pλ&6⎇2⊗%αλ¬E≥⊃⊂3λF@
	CAIGE A(	≠∪9β⊂∩hP& ,zhTJ∧∃ITL@P3⊂aQR1Ti@⊂"`_TRA,,	ADDI A(	E"J∧Q!∀E∃)P
@∃r⊃*(αFE$Q)`∞ NTπ⊃∀)12lhP& ,zib∧∩H⊃P@!2⊂	)∪P!⊗'∃βHE@%∀~∃ 4hP&BVα9∧R¬¬H∀ddX9phUHZ$lLaQ c\h→4T≤βλ⊂)I⊃H⊂)→β#$fλ j,cλ& 	CA@π$Aβ1%$A¬→→)3<Aβ)3=∩Aβ→1π=¬~ε&2β!αNεM↓EαNJAIαα8∀Mβ4λ∀deK→∩∧
I⊗"∧
I⊗∩∧IJEL~λ→D@93uβ!∧¬
SU@¬))_%β⊂∩Ix2∧Jyt¬∀⎇X¬∩)@"iFEβE_X∩H f&%⊂βL:	BLOCK80 ≤∩m
V~4*IαVα∧∧T|$λ4`9303HD⊂ε$g⊃P 	F THE@%∀A/β&↓_∞:∃ph ∪∧T∧@∩Ps
π@∧V@1	;ALLLπ.A∨9→2A∨9
A)%dA~>⊂∧∧T≤βλ
	)pH⊂i@ff`g⊃⊂ INE)~∃→β↔*≤a`⊂K↓↔4`)pπ⊗m⊃i'P&Q`g ∪ LO@∨↔%_
≥α4zIα→i∃"∧i→D*@λλλ⊂∪b`g)H%!f⊂⊃$f"FBαALLF8∧∩`∩m_
>e[$-∀tλd`:H⊂	j⊂dεDAR@ ALLHππβ)%_∞8Q(∀L@QR3π∧X∧]SαO@≤[9∪⊂⊃αl*ε 54	D`81II4pλ↔λ∀ 	NHT) FIL@
Aβ→)⊗I∧
22x9∀`(c"P*K1H
∧∧XTTYH∂
↓
∨$A¬→→>_h ∀dα0p(i_
	0	;@→αM(A&p
¬-⊃1_d i5'P f∪'aP+PiP @0βR  +XP⊂≥<> YES
ALERR 4∪M)%(Am'∪ "∀JQαr<⊃α∞εdb,"λj$`9(⊂3	Iph$	⊂πibK⊂ ISP @∪&↓	⊗ε ∧∃e@#"B%+ f*QF@


α0⊗vβX&B⊗α9∧R¬¬H∀deK→pHKαt∀I_β*⊂ Ta`	Z SP	%∪9∞A
∨HAβ→→=4'0∞gDP⊂_~pr6Dα*"l∃↔↔↔.α]`∞OTE: AS@π∪ )∧JMαizB∧Ld2αre`
Jα⊃Q h∀→IE%Lw!∀E∀I∀∧
@

_
β00
	H@→→4AαXQ@R~*
"f <↔!∀L@⊃⊂@_∃α∀ ⊂)
∪∃U≠!
A∧Y!>∧QD4!~4\M	`λλ~α,cεBα	P@+M⊃∀Aαbε $JK∀1 ¬∧e∀)j U,gdFBα
∃β1→⊗∞{P&N9~∧b∧_i∀e∀AQ M≤αr4λT⊂5⊗(aαE∧h∪βP@∀A@X⊂∀(MαVN∧
αdλβ"B)Yβk"P∃*⊂A
λ∧∪⊃∃∩0≤Jλ∧K
K3c"A~∃0	d∩⊂(⊗(∀$g&~βA	POP P,A
∪!=!∧Aα`4*&4qαNεLa2l4U~ε&2β!`⊂L8→∀`$⊂kf! ∧]`H* 	LDE?
λJRS@(↓'β∪ D~∀&≤
& 2λ5CmB"π`P?εBα	JRST SAIP2~∀%∞ε&*α~c⊗p
!⊃,¬`gλ f*&SβDE
	JRST SAIP3
∀∪5_∞Z⊗Jα~c4∧c!∧e))U⊂)`dT→FE)Pdh⊂⊃:	H∨-∃∩AεXDh
XQ!∀U∃8¬λ
824aQTp2*εH¬∧fSβVEI @εXbnβ(4*NJAMhM"Jj∃∧→1YAαA`≤≥J)B@910
 KβBOTH?
∀∪Q%4Aε0b`⊃@hP&∞εLqα
F⊂F⊃ ¬∧fSβVEI @εXdb4⊂λ&∞J0∩∧5F∪ & εE∧SdπVEI C _dβλ4(_8∀L@H⊂kε⊗Mc"A→αgk"RP!V→
β
∀∪
β∪≤AXbl@8h ⊂LYzd,Jλ5C∪8Q!∃∧⎇	$¬α`Q+PK\YhB∧|d	∀4rλ∧p)→αεEεBαALLTYI0∀~)∪
≤A%)&@2Xh ⊂Ji→u"β¬H0HKαprλ→β'"fλ'*fa⊃i⊂#$S&"b2dε
]	;END OF IFN ITS
∃∪→_	α⊃λεαeXQ!∧LPr∀JP!FE∀`R∧h∃i`λJ P,SAILP4
	AOSG L@∪π¬∞HQ!∩∧U*:B∧
I⊗⊂hT~I∪∪Pα0p)→β⊂!V↔&@
	SETOM L@∪π¬∞HQ+PK\YhB∧|d	∀4rλ@&↓αE$c∪α D2@Y6~∀!!+'⊂β Xb~(∪!¬∪8~∀&lzP∀,∀λ2bC∃⊃P@!;ALLRUB ALL@≥+4Aβ→≥4dAβ→9~dnA¬→≥~@~αε $βS3i4⊂3∀k_4H⊂)IS14Dλ3∪∪HZ@εEεBαALLRUB0∀∪A+'"RαA2εdbRf<hP&εN≤J`∩¬KhUββ"H→α NUM:∪'-∪!∂
↓
2ε4J2J⊂KZ≡⊗R~α¬αjYT(αi⊂#∪βR @'=≠
A≥"0≥∀_xR∧
(X∩¬≤α6Q!Q@∧e)∀h∧ ALH¬~b~)β⊂∩:hε#@!2U3*	H⊂kλ→α'&@24ε~(M~⊗@$tλ∩`@ ¬∧h∪βP@∀A@X⊂∀(→D`),M`≥αd RZ A,(C)	0↔'∃β%π⊂β)⊃
AIβλA%_	αI~5"¬It¬≤,QQ LE*+"∧~β
⊂e⊃,¬kd⊃h∧HER L@∨'∃$A"
→αRJL*⊃αRzαNB⊗≤J~dQ!∧U,X∧⊃$λhε f∪'"`∩	8πβ→→=∞εRLz0∩∧iz"¬$α∩4d
503JI5⊗#!⊂⊂∧iRdπTTA(	'Hh ⊂J	*%≥λ⊂3
;10	εBα  	HLRP∀A∧XQαR4⊂	↓LBJJ@$λ∩c
λ⊂
!Q@∧d&∀-⊂ i V∀ JF@
	HLRP∀A∧XQεR4⊂λ&∞j0∩∧~ %E⊂4@→⊂T@
	 JRST ALNM3
∀∪!%% )∧→1"
Hh ⊂L**5"∧→Idk⊂β"C! f'&L]	MOT¬∃ααJBbD∃⊃⊂K\xZB∧uYX$-∩	→e$zλ¬∃↓Q@∧ieSβP	(A∧Y~0HI`≤Ldλdd|~I∀`(βP!gSαVE@%PA)=∧2&bjYPhPα(∀i94⊂#!∧P⊂(∃i`λJ P,FIX2λ
∀@∪'.⎇"Qα¬d2`$↔9∃~∧α5⊂⊃$hλNUM?
	 JRST ALNMER~∃¬→≥≠∨,pλ&6⎇2∃α¬bB¬$Q!∃∧⎇	$¬α`Q!P@(3∀v(ZL¬∧fSβP
∩↓λY7≤Jb
& ∧¬dty`*;30SiD⊂3∪	@a`j$SβN AREA!\]
α∪∃I' ⊃αb≤e&⊃P@!αE F∪αME@$h∪⊂⊗>4*%α⊃eZN&@λ)∃"¬Iit`%1R6	@*fWc∪'`∞UM ALLO@πβ)∪=_	αF,
0∃$α5⊗$≠↔#"A→TTu∧λ3⊂s_@

λ¬β→→9$`(Lj0≥Q2(λE⊗p	dV!$j XODDL@≥∂Q⊂Aβ→1_∞∞ε$J0≤rλ9tl@13U∧≠↔#"A→TTu∧λ3⊂s_@
λ;ALNM1 ALH
~cαβ↓⊗∞$J≥α∩ B≥DQ!P@(3∪S&⊗@∧fGUαS@∩AλXh`@β↓A@4P@∀l@uP	dH V~000 (8π∂"α@∀JXR∧TSs$
∃⊗#! f'&L`P~	PUS@⊃∀↓ Yβ→1)3∩~(∪πβ∪∀Aε@1λε HPα0p)→β⊂!VX¬
λPOPJ P,
λ@πβ∪
↓
1Mα1∪@83∃→Yβb"P∀`h	S  ¬	>t)αε2dz≤LhpλAQ@∧e)∀h∧ .,f~(M~⊗@$yP@∪⊃C!∧h'h∩⊂(⊗εBα	CAIL∧AεXλXλ4!→T`:Q(⊂%H@εE∧SdπVE D,RCT0 ⊃εR4⊂λ&Rdr∃α⊃c	P≠β∧∧↓Q@∧h'T%⊂ ⊂,
α∪π¬∪⊂⊃α~a∪Q!∀823⊃$λhε⊃9
∪∃I' ⊃αb2JV⊂h ⊂MIK"∧
F@εελ!∧j&-λ!⊗~0000 -λ∧∪∪≠U→∩AααaE@4PBε∩∩Jα¬ "T ¬λh∧FEαdf`∃LI B,10.~∀!β		∩↓	1T ¬λh∧FEαe))jλ f'&L`@

λ¬∪
≤βb`Yl~∃	
	∪∞t%'↔&∧)αεRL04λ~	u∧∩λ∧↓P@∧e*Sh ∞ T,@		∪≤b~(LzV@$9
"¬\~84LJλπKαFE"⊃$cX@:	JUMPE T,CPOPJ
λ∧∪∪	%(
%ααECQ!¬¬-9
αeJAP@!4⊂
iR%⊂ ⊂,D@π	%∞~(Mα0≥αλ∧
Jβ"Bλ_⊃∩(
Jλε⊃0
∪∨U)π"⊂∧¬% Q!¬∧⎇	$¬α`Q+PHKαq3HD⊂πc⊂∩c'⊂"XεEα≥`f'Q$f⊂ S'`	N	 ALOFL2 ALHπ∃π_↓β⊂∩>LqEαεdz~1Q∧
2>~c	αε2|21Uαb <4Fd∧@⊃Q⊃(aαEεE∀h¬BTTL	ALLHπε@Q%⊂
&QJα~&2*αJ>⊗αI∀`(4c"A⊂P3∪hi3∞C!ε@
IFH∧A&%→2l4P@∀l@uP	dH!P(∪IPBIT X		'-8R4PA 5≤X∧q*D⊗kTK
3P3(Tα⊗ NβA	M∂T¬
A∧αb`≥≤α6⊂I~α⊂ ≤LISP@9t~∧%u~VN⊗αD¬@5TR∀i@ fbV ε]
AH	∨∪9∩t%t~ε $@λ∀d|iF`HKαq∪hZh∩3I~α⊂#$S ¬ EXIST?
λ∧∩A∃I' ⊃αb ≤4F!P@!2TTjD⊂3∪i→β_DDNβELSE PROCEED NLπ%≠β1→24Ph ∀Ixdc∪αB0h→αg⊂ K-idl⊂αIT /*/]	;AH	%¬	2A%∩&⊗⊃αQ)`8Q!α∧U*:B∧HiD-⊂α".k~αh⊗⊂⊃dk"P∃hεE∧SdπVE A(	↓β1⊂≡~1⊂H%n⊗e~∃α∩∃I↓)(hP&*J≥!αε2|J0∀Hβ"C! f'e⊂βL:	.@πβ→_↓β⊂∩>4aP⊂Hα.q	@biP%⊂βL FIL@
Aa∪'(}4⊂λ%αU∩N@"λ→D4dX∧B!↔pπ'h⊃T∧ ERROR
AH	∨∪8bt&hzP∀,Tλ2dLi→∀3∩8ed$5B.k_4kλ
85Q(λi3⊃(	 fbiCE	MOT¬~A_Y∪≥∪%dW9'⊂~4hP& ,zhTj∧∃I∀`)21LE8KQSF⊃ ¬∧fSβVEM@∧Y&tJ&→I\10∀4d∧C! f'c∪~≥∧W⊂βL@∨'∀A)6∧→0 (+Q⊂K\YhB∧Li`M∀c"I_SH⊃ε⊗λε-FBα	H@%10
%α~YE "λ∧r+λR5↔P)`/)
∪≠=(
∃αλ¬E@:p∧l!∩h∧/LISP ∨:4⊂λ&"α)E@)(⊂@⊗
)`	XBIPλ←∪9∩P≥$hRε $βqSε↔@∧ibU-!⊂!K!P $4⊂λ&>∧*0∩¬IZ∧5α!FEαP 
RST ALFL@$∩$p∞ 4tλDM≤αh∂FBα	MOVEH
Aε,bP∩&tJ&→I\10∀⊃0εBα	SETX¬∩Aε0~∀&lzP∀*λ53
@∀B"'cb`∀SPECIFIEDPP@≤~(∪⊂⊗>4*5α
Xε∩dLi→∀3∩8ee¬∧βC"A→α'geUh⊂ ∀MPC →α4⊂λ%αU∩N@"λ→D4dX∧C!∧fgk⊃d¬ A1∪⊂~&L1I.→t20∪λβ"B)	⊂ε-&H!⊗$g∩dc⊂∩+F.FNH~∀&≤b0≥≤T
Dm∧5AP@*p)α*(αf"`TbP ∀MPC _~):w≥⊂A∪
≤βλb`~)∪
≤A⊂d`@2Xh ⊂M99∃∧(⊂
"SαEP⊃ 4⊂λ%αα94M∧∀λ2e\~84MRλπ⊃
9w↔#!∧fgk⊃P!V-Piadmλ,∧P@'q:∩%\b0≥≤T	D`:q($λ4p	jSbP!gSαNECTED @)<@E!≠Q⊂@"B3)@hεEM↓
2→i∀L3%8b`(⊃0∧B]lbiK⊂)`k⊃P#$f⊃P ∞AMES
]		0↔Kαs⊃β?2α&~9∧!I@4PJBVN@∧¬αe8→D`8S
7!Q@∧h*Td⊂ ⊂,Xπ∪≥∪%
β 4hP&BVα9α¬αβ⊗t)@'b"c⊂h¬LT]	;DON'PλA≠∃%⊗≡*αP≤MI$1P5)Jλ⊃R)Hαg fQiFE∧SdπVNI T _d4⊂λ&*∃~Q↓∩,zB,a⊃∪@9βh"gλ$g$jλ εILE ARRAY
∃β1_∞~1+P& ,zhTj∧∃JdL@QR3λQ ¬∧fSβP
∩↓αP∩R∃*R 4PJ6 =hYR∧
JH∃¬∀XAP@!4q5	@fP c∩d∧RD
λ∧∪!∨A∀A X4⊂λ4)_d`$⊂∧j)K-FE S'c&≠∞α	SETX∧~(M~&b
M!α`$βt⊃)@.∧D]SβPEN↓
∪→
4⊂λ%↓β)AAAbaH$↔9T`8⊃(
λ~pr2$λS∪pi4⊂∧g(∃h∧ ∩~(∩@@@λεββαβ∃	Z⊂b"'a`λANL¬⊗1α_4(∀∧ααα∧¬Bd_⊃↔4$5R0hQ ¬∧Pλ⊂⊂⊂⊂⊗ DDNβFILE NAME 1~∀$@@@@@X@2⊂H%n~Lb∃αh→T*β!Q Kλλ__⊂,F		0↔'9β⊂⊗∀hRun⊗t!α&~pε&@%1Q hSαp	bU*h⊂"⊃`c ∃LT @∃π0~∃∪
8A⊃Eαb`_hαP3λhα"c≥αib`∀OM FAKJC@_∩$p∞*∞bα&Mαα(T@⊂ε,P⊃ ebFBα	MOVE TT10∞εN≤J%αrdJNAαβKPK\HXd
3∃⊂∩!`: LIS@ <CR>
λ∧∪≠∨Y⊂∃ααJBe≤αPsλ*c∃@1
∪≠=(
*λ¬∃¬Kp4pi→(⊂∞εBαX	:~(∪⊂⊗>4*5αR ¬E≤T9H%,24∧C!∧h'h∩⊂(⊗εBαX
∩w∃_
"	_d`$⊃ _βE
;ALLFIL ALLFL1 ALLFL2 AL@π⊂∩Vβ$∧@⊂s⊗F∀⊂3∪
J∀h⊂)I⊃3∀↓Q@εE S&#$f∞α	P@+M⊃∀Aαbε $βqR)A ∧]gT ¬N IL¬∪(A→∪⊂∩∀hRε $β⊃Sε↔@∧ibU-&P!⊃()"(βE	PUSH@∀A@Y%β⊂∩∩`.α(T"	→b∧IIt85∩3i@)P⊃!SβH≠9(D4PJN⊗RTiαε2<~_ (αB2	JT¬⊂!∀ TFBα	CAIE B,Q$C@∨≠5⊂~PhP&*J≥!αε2≤bVhQ(∀ddiF#@!2⊂	)⊗α A,(A)~∀%≠⊂≡Z,iα¬22& %(A⊂K]8~d*∧α5⊂
 a`∀UAH	2Jaα&R~αε∩IHh ⊂L**5"∧→ID`8pc"AQP3⊂iJ4¬≥∧SdπVEI @λ@2]~&b
M!α`$→ID`8h⊂siYαbg*λ&diiRdεG IL∧A&tJQα~Lb∃ε@KQP@(3⊂s_X
	HRRP∀A∧Y-∪≥→∪⊂∩∀hP&N⊗αK$j¬i→d4LHQP@!4⊂
iR⊂# _P,@λ~∀%!+'⊃(A @1$~2>N(h ⊂M	zα∧T∧(⊗⊃∧¬∀dβ↓∀&6⎇2∃α¬dJ0∀L_f"\2hicλhαL@_	Dfgk⊃P!⊗$SαIIF2+F.FN2λ
*M!⊂&6⎇2∃α→dJ0∀L_f"\2h∧sIQ ¬_@0$	MOVE F,IL¬∪∪HW]¬α0⊂@ ¬→0$	WARL∧A7<Bε@"λ¬∪dλα ∂ FLπ$A
%→∃αtzQα~⎇*0∀λ⊃4J)tH⊃I@i⊂"20 ALLLππ:~(∪'%R5α~Z*∞A⊃∪@8StPhT⊃0	)∪βR MESSAGE T@⊃∀zV≡∧λU (αg⊂$Q⊂# eRdεG J@π⊂⊂4PJ*JNα@λλ→α!bi∀∧¬∀~)∪
≤A%)&@2Xh ∀IJE%≠!~4-¬!⊃∪@:α*,iQh∧ FOR ALLLπε@Zαα0∀z	→e$4TU*
λ⊂rλ~Th#!∧idl⊂αIT \TTYSETX		;SET TTY @-¬%∪β¬1&~∀$@@@@@XI)Q3∪@⊂¬42t9λ∀`!,¬ad⊂dεNEL #
	      , →7M))3αβ
t%@8¬∃~u#!∧Z____⊗⊗⊗βSTTYA2P~~):∩%\*0∀λ∪qD	1S@⊂∩h∧S

ALHEH	 @PJBVNDQαAH→De%→qP@!04pi≠H⊂∞εBαN  :αα∩>dzB∧IIt85⊃(¬	+Q+D
4q(λHαc jS*)TFBFIP⊃⊂A¬ %α⊃0∩∩AQ"αα	→b¬<α∩0i∧⊂p4hT⊂P4hT∃⊃3D	4h∃*81C! f&⊂⊃dεTRIES ARE @∪≤ααV*&%→α>→¬α∩AT∧ _λ+ci"∀UαE.βE	JRSPλAβ1→∨ε@λh ⊂c\→Hdd4H⊂)Hq0	)λ f#&
α ALFL6A AL@mαβ4(Q(∀dS⊃4G∧fgk⊃dP",Xπ'&D∩&@"λπλ∧∧⊂∧g$U⊂#$f⊃P ∞OT @
∨+9λC 2hh ∀H8U∃∪αB4hZα-&@5 h ∩EDλ
(M~⊗@%)P
%%→xd0@ ¬∧iQh∧ZMTAP@/I(⊂∀!~4\MλT∧*@T∩⊂)@* ∂M
λ∧∩Aa∪ ⊃↓α⊂↓Q@∧`gTdε FAKJCL		;DID WE FAKE J@π_}~(∩A*∃~QαB⎇α)D⊃↔5M4λ
I⊃3@⊂∀e`	P R@)+I_	αNzα≤dλD`4⊂3∪	@aFE∧Th∧RT↓0∞N≠λ$Mλ⊂∞⊂λ⊂⊂⊂n↔F@
IFL∧A&%→2l4PJ6 =hT∧
∪∃H`hPα33j@ ¬I T,"0⊗~(∪!+≤B)αAd
24FaP@+αDD]QdεD OF @∪
8A∪)&4⊂λ&6⎇2∃αε⊂ε∩dλβ"L&∧α@	MOT¬∩APXh`~(b`H∪5_∞@4Y∀¬"b%aP@!4⊂
iR%⊂ ⊂,AH	
_X~∀&lzP∀*λ~#
@⊂C"A→αgk"RP*ε~¬
	PUS@⊃∀↓ Yβ→→_l4PJN@%*@
D
#"J8)α0iJPQR!⊃ ∧]aS ¬AR↓∪⊂~BαZB∧∃Xhd-∩λiu∩¬8→∀`@ ¬∧fSβP
≥∩↓(X`∩$p∞N⊗αJUα∧iz"∧ttλ∃∀h∪∀jXTH⊂h→α 
	JRST QUIT		0⊗@!(
ε:Lb2¬64bε@4z(T"¬~Y∃"Hβ"C! f#&
α:∪a∞!αλ¬E⊂@ ¬∧iQh∧Z AR2A,
λ∧∪≠∨Y
A)(αb`≠

Fελε⊗ T_h
AH	
_Yαt&Lb∩	αλ¬E% Q!∧U,X∧⊃$λ+⊂3λfP,β!∧`b"∩P V~∧¬∃∪PH∪β→→_mε@PI0∀Lz@λε¬⊂""'a`λANL¬⊗1α→α4→ID,"	→`hS⊗∧@L@u0
!R)⊂ FBα20$	PBOUT
∪∃I' ⊃αb~1Zλh ∀Hfdβ!→T`:β"P K*εE$U⊂∧	ALFL6Bh@]∪∨P@`@2λH%n∞D
0∀tYDα4⊃R3	Hαb⊂$Sα
∀bβ↓⊂&>-"≤E$λ⊂hS&∧BMλ)u-β"B([⊂r⊂⊂T∧R
	P@∨!(A @0hP1m⊗b2>
∧
24HV∩∧I&∩∧I&∀
∧→I#∀λ∀dS_⊂Dλ3∩L(⊂ f%a_P S%_a2 ALJ2 ALJ2Q ALJ2A ALJ2A1↓β⊂∩&4∧*P3∩I@P f%P f%`P f∩_`X@ AH	)	IαεeαB9E∧
2)Fλε2∧I&∀$⊂3∩F_LH⊂)ILH⊂)ILT →λ1Pλ(∪α @⊃β→! bA¬→∀fA¬→→π∧β	αε2dz≤⊂β"C!)ja*∃&∧f`Rdε ALLOC IL¬)∀
≥∩3sDλpπb"CE
%AH	2|→`⊂hαR1I@⊂"_@0,[
λSETZM L@∪π¬∞H⊃↔4d
8¬→→β( ∃T C@⊃βHA)=∧
22x4¬ 84h∂P⊂βR -L¬≡B~)∪
AMβ∪_Yl~∀&lzP∀3(¬Jqp3H→α@		;SAVE MAGIC STUFF FOR @∂$B≡ 4PB6 =hYRβ∃J4<HZ`hPα33j@ ¬M 7,SGAPPN~∀%∃' APY⊃E¬~⊗@ Q+PHKαq3HD⊂πc⊂∩c"P)PdfεEαd¬OVEI A,EL¬∩2M~A.B:N&@%P'fj`∪T @	=∧~JV~αK∩∧≤→H5,@⊂5∩)@dε BY HAND AS IL¬-∨→Y&~∀%β⊂~∩Jα¬ %λ_tm≤αb"'a'gf⊃`g⊂'T)P g⊃⊂)"f∪βCATA@¬→
AM3⊂⊗
|bM↓λ(∃∀H( ∀CE	SU@¬∩Aααb⊗&:L2∧4!→T`:β"f@ A(	&<~~aDhRt$↔8T`(α⊂'cλ$c' D10
20$	JSP @$αbR:@λ∧q*A ∧]b⊃a`	DE BE@)]≤AQ⊂~⊗β@Qλ∃	@h)P∩@~∀$HH%mαr⊃αN-!αBε<)αε∞≤*NN_)∀dMK⊃P@!33uHT⊂+⊗j(u¬JPp
.CE	BLT A,R@π ⊃9J$:α⊂
 "4⊂
&~p∧∧M∀k⊗aQ@∧fgUα@
A%!2mQ εβαbβ
___⊂⊂+<8	!	1_∞J≡zjBε≡dz≥z]λε∪uHβ"B%@!a&%H**⊗εBα	.@-¬→+
~(∪⊂⊗>4)αRQeYQQAα¬Bc#∧∧εελ¬P≤<SPDLOR@∂>[Aβ∂2|9z`;⊗⊂∂KQ ¬∧W⊂βBLK↓)(@0hP% 5h→E,(β"B)Yβk"P∃*⊂[Ph``X0h``@β↓A-qd2bBz(uz@4⊂1iIqoWf⊗,π ≥
λ∧∩]π	→⊗A%!0 (αB+J@ f*bCE	MOT¬∃ααJBe[F@ε¬λε~0000  ,xp∩~eα0≥∀{uU∧yIt;uv⊂'kα@
	,¬π¬→,A)(X4⊂λ%:αh∀e,QQ%hHα.q)@ ∧ OF IFN↓∪ ∩LhP& ,zhR¬αβ⊂lAQ@∧fgUα@
A≥↓2N
α!P@!33uHT⊃P( εP⊃εH~∀&lzP∀(⊃S
¬⊃S⊂f!α@
	MLπ ~∃∧	2mYHe≤H53
@λε#)Pd∧C+E:∩`.α8U"¬X∧λλ→α OC C@∨≥M∪⊂~≥∧
J,~1P@!2⊂	)⊗αM A0ZbQααH4(_→t)SH⊂%EK(λFBα	MOVE A,[-H	
=~ε $50%9β$c+Pd∧ _Y→(∞Nεd→-E.tJ~↑εeh4(→
%∃TTλ∩bk∃λ∩HhαB0)@a%'0T∧ ≤Zβλ4(→Yu (αP @,XεP⊗2≥Jε $50%E∀p`S!P #t~∀&E∩Jj5∧	15ED	$4!_∀`8RS@_∃α⊂∞-D~∀&lzP∀(⊂ ⊗⊗β-NIS2SG*SEGSIZ,εdV@λ¬Be≥⊗(∀d~αh	.CE	HRRZM A,-2(A)
∀∪¬	∩%∧	1DQ!∀@pRSDλ+@⊗L∧¬∀∪5_∞@4Tλ∩eZβ23HjPp	ULT∧,BFT¬π&Vβ
t4!→¬∃∃αS _∃α⊗@⊃(A)~∀%β⊂≡
Tqα¬1p¬SλhαB3)@hεEI A(	
≤
2$KZN⊗Q¬*AαBDz0∃Jλj$,,I~5%_Q!∀l@uQ3$λ+⊃QJ1 ¬∧fSβP
∩↓αP∩~αz4@⊂jsI_Up3↓Q@∧fgUαEM A,@

@h ∩α↓→T`:Q2(λ∃α)`→ALC
  	MOVEH
Aααb~5α#"A~q0
'SP f#PβF∩∩m%%∨HA∨+"α0≤@H⊃pd¬∃3U	→α⊂#*T* λER NOTI@π
R~(∪'%R∩∧βR3¬H5⊗1AQ@∧ibU'`
 AFILRD
IFN ITS,Xε~(JrN@-8ZB¬ZβP	)SαAM,,TX
4PJ6 =hYR¬"β∃∃→1H	∃Q↔)g&CE	MOT¬~APY))3=dW9'⊂~4hRt%@8Yd"∧βqH	_SH∩*Jc"R(iH⊃_L⊗-FE∀`R∧iQh∧Z T,λ
*≤	⊂&∩≤ZBBd
B`Hα.p*4∀q5∧λT∧P S$`iP⊂βO@≠≠¬_
⊂4U~¬∀_xU%¬	`
"`Q!∧l@uQ3$
λε**⊗dc⊂∩+F.P@!8~∀&lzP∀,T
Be%K→t3∩8ee¬∧βC"J8)"4hZα-⊂*∧¬
]	8π≥λβ⊂∞→αL20∩∧F⊂↓QR1Q$λα→_⊗⊗β
∀∪A+'!∧2bAK:4MD)~B¬@⊃∀rkKαFE∧T*id FXP,T
∪!U'⊂A
a XA]~&b
M!α`"+KPhT~@	∧↓4⊂
iR⊂# _P,[SIX@¬∪(Ap⎇0∩thQEA⊃¬~¬∃MαVN∧λeEαβ⊗ti≠⊂R5∧α&)h↔,¬
SA$	PUSH FXP, @7M∪1¬∪PA0∩}⎇zr`(Q+PHKαq3HD⊂∧c"H ∧20
λ¬∪
≤βλd`Yl~∀&≤Z&B∃¬"⊗ 4Xε∀↓Q@∧P)Rdh @ T,[AS@π∪ )¬b∩N8π↔!Q@∧fgUαE @(10∞εN≤J`∩¬J
5e@"".iItq(	Itq(¬T⊂4tjYαbP!SβNNECT@λAQ_
↓
¬→`∩⊂β"B*
4r⊂⊃,(⊗*βE	PUSH@≤A→1 @2bqP∀⊃0⊗LF@
	PUS@⊂A→1 @2\
N∞≠$¬bUβ↔#!∧h ∃SHN FXP,@_\β2∩&Ihε⊂hPα4∃*9λ⊃V
¬⊗p4hdh
 \*X	:~(∪!+≤B0∩∧hε∀¬Iλπ⊂⊗FL¬~Z@λh ⊂Mλ¬4i∧⊃P(-`iaRm(LSPX	:~(∪!+≤B0∩∧hε∀¬Iλπ⊂⊗EXT ~b4⊂λ&BαZ4B∧hε∀¬Kp4pi≠H⊂∞∃↔,¬
	PUSHN @
 "αb19Zαj%~@,#"KP ∧]bSαD IFL∧Aλdβ4(~
U≤DαH∀¬FPU∪IYαεE∧SdπVEM A,VDEFAULT@~∀%!+'⊃(A @2⎇α0∃%K⊃⊂K\βt⊃)@⊂**,H$g ⊂UT AND OU@)A+ ⊂4PA↓:ZbV∀⊃⊃∪@950	jλ$ k"H**,P∃'P"'H f&'Pβ
∃∪→_	α~J2eXQ!∀l@uQ(
E∃∃⊗)@c→∃cαC@⊃β8∩w&tJR&εdJ`∀*λ9∧@SQ3∧	U30HZH⊃Sj!αE∧b∀!⊂ ∀,Xεdn`P``@1d
2>→zEhKαh⊂)I⊂πaSTP ∂UTPUT .IH∂(AQ_
αR%H4(_J∧$∃⊗f&lλ
_⊗⊂AFL6B]
∪	A	αQeYI]AαFβαbβ⊂3λi
Pw!Q@∧fgUαE @(1))3∪_dW]
⊃β≤∩m_
>]∧"0~¬IλR¬≤→XR∧StC!∧b(!λ*⊂[Hh
AQβ↓12εdbRf&hI`~¬IλR∧Lh∧∃*Dλπ$gU∧¬
]	8π≥λαα&~9∧JRL4TJ~9αM"M %1Q Lz8R∧I(4eQ!∩∧U*:B∧I&0hPα+TjZq0
6β.ROPTION0Y)):4⊂λ&N-"`∀jλh∀\T9A⊂K\βSu∧λβ ebH%!fεBα	TLNE TT0d``@β$%@9iu"∧HJB∧)zd*∧β∩4j↓α@
	 TLZNTT _hβ↓AA@HI`≤Ld
DD4Q(	~h∩PiEλ⊂
*T'⊂$jλ'c#⊂⊂c*"iλ)"`b∩dεG
	  @'='αA
¬↔∃π_$∩w:zα*>	∧~0≤@303HD⊂ε$g⊃T∧ FLAG AS @
β↔∀A∃π_4⊂λ%:∃∩⊗ε-β	I2mp¬e∀T9EBdII$9α.FE⊂d∧FDE1:∪'∃)5∧A∧Yε~∀%')5λA⊃HaP@!4q5⊂!⊗εBα	MOVE ARDY6hhβ↓P≠β¬ED@⊂ε%!S,¬~∃¬→∀bt%≠⊂≡Z*αεIJλ¬E@6

Fελε⊗*↔F@
	SEP	4APX⊂∀(→DS↔!∀L@⊃⊂@~Jλε iF@
	JUH!
↓)(@2b)HQ!∀821q$
∃λD⊃ ¬∧P∩))`∀AH	)⊂4(_8∀L*λ¬∃¬DL¬εEαP 
RST ALJ1A1
	H∨-∀Aε@2 h ⊂L→y$
∧EH∀dS⊃Q hT→I#↔!∀821(
Jλε⊃;
∩A)%'(A¬→∀cαβ⊂4(→Yu (αP#⊗∃∧¬∀∪¬_∞*¬∧!2ε2Sλ4(Q(∀dS_⊂G∧a`dS⊂**, ¬B%\b0≥q0	-@πβ'
4⊂λ%α≤
& $T
E"b,εC!∧P⊂ Q ∧@∩AQ(Xh`4⊂λ&εt"%αR ¬C 6βFE∧U& ∞E AR2A0h
]Aαεβ@"B(	_∀⊂@⊂∃*⊂AR2A~∀%∃%' ∧∧@⊂¬_`CE
ALJ1Bh∪∃+≠A
A(Y¬→∀c∧β⊂4(→*Tm∧Tλ∩dI&∀& εE∧SdπVEM T →∧4⊂λ&*∃~QαεdQF	HhRε $αL0F↔@∧fgUαEM T,A~∃¬→∀c∧β⊃`⊂L8→∀`$∃∃⊗YDD]Pd∧TMOD@
A≠∃β⊂~M∧J0∀MDλdL@⊃(⊂h→β⊂#bU⊂ 
CL
∩A)%'(A¬→∀e"4⊂λ&∞J∃αR ¬Ethβ"B$	TTu∧λ3∩L!QP3∩F'@∧W)Uib`∀XεP~J⎇αR&>p¬Be%KQP@!5∪⊗D
∃∪j
⊂s1↓⊃,¬j*T'⊂'c⊃⊂ 
CL
∩]M+' ε`~u9z¬$Ly`¬J∃↔#! f%→∀]	SKIP@≤A~∀%∧j0≥Tr(λV⊂λ@'%1¬∪(ααr%9;BHhαB2JYαh' A(	β→(eα4PJN.~	b∧P2rHf∧D]Rc⊂%!S⊂# eQb⊂ ALWAYS READ INIT
∩A)+⊂⊗B*α⊃2εdQL$↔9∀2¬x~2¬∀X→DeJ	jTdbλ¬∩λYβ⊂"'Sα ∂(AQ%2A$yαJ⊗!α&:M 4(→Yu (αP!,Xπ'&D∩&@"λπ∪	~t⊂∞.B]`iiUd¬E F	SE@)i~A
β-∃π0HI`≤@Su⊂⊃ ebP∩!` YEPλ~∀%∃' A_Y∃π→M ⊂4PJN.~	b¬≤αPsλ*c∃@1		0↔β92A*≤a|4!∀¬¬-9	"¬αβ⊂3λhα"c∧B]ibj∃h⊂""Q jf*λ%!fεBα	SETX¬∧AλαbH$↔8B∧M4λddtλd`:H@⊂∀bbg, R IS PPN
λ∧∪'Q0
	αλ¬D1 ¬_@0$	MOVSI B0Q'&D∩&@"λπ∩)@$h)
λ∧d`H%≠⊂≡Z*α∩e8~492(↔	→β$n.CE	MOT¬∃α
⊃E %4¬~≠X⊂⊂,,S@∃π1
V→Xε∃hhαP3	&,¬∧fSβP
A¬$eαYlhh`@3↓A1JKPhPα4q*KH⊂
,
ALJ1A0∀∪%→∩	¬"Q2ε⊂ε⊂hPα2U)Z⊃(∃
E⊂3∩F!α@
	CAIGE TT _Dαλ4(∀	%∃≥Dλ∀dS_!P@!0p2(T∃∃⊗λα:~∀$A∃%'PAβ→∀Eαb4PJ6 =hT∧5α*εEαe))jλ f%_CE
ALJ1ADpλ&∞J∃αR ¬B%@εE∧H%))jλ f%_PY
	MH∂-
↓αP∩PhP&N⊗αK"∧∩AQ Ly(∩∧λε f∩_@

λ¬β→∀Eαd`(L~ε&∃¬"Q1eλ¬`HKαp	j⊂i*⊂'Q⊂( ⊂N SPEC?
∀∩↓∃%' εε $αL0&1 ¬)`IDcbj∀( ∞ R,	∩w!_∞ $D
¬∧r	→b¬⊂β"Th∀ ∧P%⊃!`			;@∪∂9_∞J∃∧2V 4hε(
9p∧h⊂∀ ¬TURL¬&~∃MαH∪'∃)4A⊂¬@hU8⊂	↓_∀rt
	H⊂	,		0↔∨8A'β∪0A+'
↓β⊂∩_~0hPα4∃*9⊂¬⊂($ c(∀'		;R@βλα↓E ;$
¬∧rD
4\M∧	∀2¬(Z$`1 ¬∧P∩)&⊂)*εE∧PβAIE TT _Dα`$%@9_b¬$X∧S)→β j'T⊂ ∞OT C@∨≠5αA)⊃∃_	α≡M2∃αVα∧∧`9β⊂ ⊂PL∧⊂∀!∀∧U∃8¬⊂⊂d∧P@!8b~(MαVN	$¬αdα⊂1J
⊂π∧DNβREAD T@⊃
↓_∞RλZ"∧D→Hb∧|d
DD(⊂λ(∪αλ
∀∩↓⊃%$AHY(∩∩m%⊗Bd
≤*	→b∧q3Q*(5⊃1∧
∀∪C!∧a`dQP**,90
\∩$p∞@$X∧S)→β j$Sα@∞Aπ1_∞N∃∧∩Jε∞\*Q`8Q(∀e¬	`'∧P&gUα@
A%!2
4∧B!↔pπ'h⊃T∧ @%∃' ∩z(R∧|β⊃_,j"P∀'`	NTER~∀%∃%' εε $αL#!∧¬
ALJ1A3:	CAIL TT,"a	∩w1_∞@<X∧@_`ibFBα	 CAIH	
AQ(XE@Ph ⊂J∧λ∀$∩(∃
E
β!∧`g"∩P**,4εn~∀%)→:*αεIJλ¬C 6lλλ_∧¬
	 IDPBTT →βHeα4PJ*JNα@@⊂¬_`CE
ALJ1Bh∪∃+≠A
A(Y¬→∀c∧β⊂4(~94M∧βH⊃↓Q@∧P)Rdh @ A(	(~(∩@A⊃1→4A∧αbP (αP3	&0L@≥αa`dgλ**⊗→LDXALT-MODE SAYS DONT FLUSH JCLλ
∀∩↓∃%' εε $αLT!Q@∧a`Rdε @)PY0~4hP%α**5"∧→I#λhαP3	&L¬∧iQh∧ZMSJCLBUF~∃¬→∀e"βP&N9~∧`$⊂j`_K!FE∧H&gk)RP!U@1,(SIX@¬∪(Aq	'.bH4(~8U$|β(⊂*K1C"A~∃0	d∩⊂(⊗ S'c&_BDX@'-∪ A∀*RVJpε6⊗εu→α&:M!α4→HR∧tz@λλiu3Q↓Q@∧P%∀)j⊂ S&#&_CE
λSETZM ATYF		0↔)U%≤A∨8A))2↓∩P≡qQ LU*:B∧I&0hPβ"Rλ_T⊂λ'∞α	SETX∧A(X$∩∩`.≥"εJQ∧z~2λ¬r*Iλλ!∧fgk⊃P!U@2,AR1		;SAVE C@+I%⊗:α@+5⊃(
	p∧g*⊃i
	IH		∧β)(@2
⊃D4!_4LD
E"b&↓⊂K\β54jD⊂Q(	@*fbi∩aFE∧H!`df⊃P**, ∧r4PI↓α**5"∧α⊂1J
#"A→α)d5⊗→DDB]`b"λ ∧@∪∂%(A&u"0~¬λ∧∪AQ@∧`b⊃$P ∀,-"0(TT)~∀%∃%'"α"ε~α
∧`!αE$ Q((⊂⊃:	S@↔∪A_	αPHH%nN\JAαJ-"VJ9∧J→αQ∧r&  Q!$λ3th¬
λ∧FEαh ∂PJ P _~(~¬β→(ft4Uh$%@8Yd"∧βqH	_SH⊃ε⊗β"C!$c'1→_⊗-CE	HRLZI 1,(GJ%SHT+GJ ∨→⊂R∩@.≤B0≥∃Dλd`:S+λ	@g&,P∪βLD FIH	
~(∪'.Mα∃α∩,r⊗b@hP%αN\JB¬↓α%E@5,+`iadVα  ∨λM⊗u→∪M ]∪≥ X∞v@QQ LE*)dJβ!K4
≤9≠"α⎇λ∧nII4pλ↔∩dεI/]
∪∂Q∃~8hP%α**5"∧→ID8L""'g'P$SαIT FI@→
X↓'⊂≥αU*N@"λ9t`*⊂∧g
QP ∞ORMALLY
∪%1∃~8HH%nλ~d*∧IλR∧Li~B∧R3⊃%D∀Q5
ZSH∃	λαP%#∪α
∀∩↓∃~∞`h ⊂M8ZD`9(⊂5_@∧D]SαO @)e!⊗>- 4(→*%≥λ⊂3	Hβ$f∧B]j$"Sα READ AND PROCESS IL¬∪(A→∪⊂∩∀hRε $β⊂pF↔@∧n@ 8π≥λβ∪
≤A⊂d`~∀%!+'⊃(A @2b2Rfxh ⊂L~84MRλπβ!& 	SP Xλ~∀%≠⊂≡Z*α∩e9Je∀t{QP@(3∪∪ha_
	SEP	4A∧X⊂∀!→E≤D4λ∩c0β"B)*30λ"H V f∪'a`FBα	ADDI A,40
∀∪A+'"RαA2εdbRfhP&*J≥!αε2dz≤⊂β"@↓Gp3∪	@a`P S& ∂C1
~∃¬→→>≤	`⊂@ ¬ f∪'aP⊃h∪!+≤B)αAd
22RLx4(_~494¬⊂.βE v ,oc? \
∪!U'⊃)¬↓2ε2e"f$Q!∃≤-K)R∧IH`hPα0p)→β⊂!V↔+FE∧Tbj'fH j,cβE	CAIE C,↑W
	 CAIN C$↑A
∩@↓∃%'λααε $β⊃R)Aα@
	CAIE C,33	;AH	)≠=	∀Q!∩∧≤→→b∧~β
∧↓↔tpλ PβE~∀$@A'Q_∞ *λ→Dd@εE∧PβAIE @εP∩z⊂h ⊂J	*%≥λ@∃LF@
	  SE@)=~Aβ∪9
∪_~(∩@A∃I' ⊃αb2>∞_h ⊂L8→∀*∧5D&pKαs∪j@bi⊂!PibFEαP!`dSα C,"L∧⊂∀!∀α¬≤X¬∪iT⊂3∪λaα@
	SKIPE AH	20h ∩α↓∀∧U∃8¬⊂⊂d∧@→∨
4!_4LTλ2b∃α#"A∀⊂p2)@⊂!V⊃≡DXLOTπ$A
β'
~(∩@A∃I' ⊃αb2>∞_h ⊂L8→∀`$⊂kλGq ¬∧P∩))`∀↓β⊂∩λYE@ ¬∧aPdbP!K⊃$εEαP!`dSα C,"h	0↔→=(∞⊗I∧~εN∀hP%↓αU∩N@"λ→DD3∀β!)`R∧Pα@βiAQ]β↓A1F@εε,,#!)`R∧Tbj'fH @
SA$	BEEP A0~∃'αα(& ,zhTJ∧∃Kd8Kαp	 Sα@	∨~αα& $β⊃1h→α⊂!d⊂i aj⊃i⊂ ∀O ALLO@ε~*≤	∀&BαZ4DRλ∧λ→α TY@ε~*M!⊂&"α*%@$∃∃⊗∃*,dc∃c↔!R gεE∩h∧$	.@πβ→_↓∞.⊗)⊂hT~@	↓∀λπ+ S*bFE_∩∧fSβP
∩bP⊃:α
$LLaQ#∪αA_44L(aP@!2TTjD⊂3∪	@aXFEβ≥`f!SβRP⊂A¬→π>∀)αε2≤zJaαb≤⎇(T∧@∪∪phF@


αIFN PAGIL¬∞@2Xh ∀H9u∃CTπ ≡⊂αBP@'M∞P⊗N,:N&@%'D`)1P	iQU`∞IFXSG+NIFLSG+H
1ERN≥yβ`jλ1tr+ε@
AL@π∨%
t{β→π=%0@-βIT
Dhj2\@06⊃Hkλ¬f`V εFL+MAP⊃
→	.X≠∧4T∧UfPl## Jh ciRm⊗P⊃>,π!β∂M∪44Uh%n⊗t!α&~pεBε≡Lr≤4%hTe≤T0hT→H4`:T∧≡@=<BBPSSG ≠
%%')→=
.NαHDdzβ0	bQi`	Z*<NIFSSG ↔≥%
1'∞αZ0∀LiJ4:\βP,⊗αSG>xP∞Bε=~&hQ(∀d≤βtQ'W03⊂i@i(λ+P~∃ 4hP4*εdb0≤≤4εC!(#RD⊂d∧LHA@π⊗AβM
BMb→2
Bα5D@⊂T∀eHαg"&∩ih⊗a⊂αPC@'≤XY¬!M⊂⊂∀(L
22λ_4Z∧~:%∧∪λeJQ1tλIλε f∀ ∧L,200 _bβ↓A2x6 hPα03	I⊂0rdλ4p	h⊃&⊂#,SPECPDL →α1'!	_0d``XD``@2⎇~≠⊂β"B(→α&$ PβK ASFXP,#,@
1∧"12εd2bAF ε¬⊂ε)kTUXY,Lπ
 "≠⊂4λ_→DdD_92∧
8iEαb5Hde∧IED@⊃S∀¬F,&¬⊂πc&⊂β2~∀D`@⊂&b2"ε≤YαεN$"Q1
d"∩RNβ→U~@,¬FL
;33∪aQ@∧`f∪$ aeH if$Th∧,,LIST,MAXFFS,20  0Y1

L~∀&b2"ε≤YαεNα;∀j@λε)lSa'f⊗∪`hλFFY(λd`@XY1
→2~(L
22λ_4Z∧~8dMBβ⊃I≠⊂π*fK&`l#⊃,⊂2@`X@2D2~`4PJε $β∩⊂(eP iQ& ∂,,FL@∨≥U~P∩X≠∧4SFελε⊗,⊃ εL
IFN BIG@≥+4X∪β→1⊃βπ⊗ββ'¬∪≤XY¬∪≥_
V5djεb~4⊃1EAα¬BeDhh hPα03	I⊂0rdλ4p4K∃α⊂ARRAP∩Y5β1

∧Xb`@αa2b~4λ4(~
U≤DαH∀¬H3∪∃→βFE∧Piadmλ,∧
\
;ALL@π5  hP4(Q*5,∃JI@M∃YjDL@1(∀jItP1hT⊂3∪	@a`j$SβH4Ph ⊂LYzd,Jλ¬∃¬H3⊂sj+λ¬( Qi`	Z
λ¬∪% ↓"P⊃K:2eBβ∪λ⊗,V Wm⊗⊗-Q)PFX,@
_Y	_	2Nβ∃E≤
β3@⊗-`∞IFSSG+HY≥∪
a'∞@-α!P@)R1S
8hhλ@,L¬¬≥≤92:Nβ→U≤:4∧ ⊗∪αSARSG]FLG,,[!0bP⊃Ed∩&≡h¬3%F+7!QR1SDλS⊃`⊗⊗β
α	MLπ ~⊗JαQ1rpπbU≤Xz4MPβ"B(`ff⊂∃⊗,##λh@
	MH∂-4A(@2D2→εDhP& ,zhR¬"β⊗⊃Hd4#"A_p31hT∃⊃d≠H4r+∧¬∀∪5≠ ~⊗h∧¬"dt≠"
≤α6C!∧`b"λ**⊗*βE	LSH T,-;ALL@π!λ~(~∀4SZ~ε2e→α&8hP4*&4qαBε<J0∀:β⊗c!∧¬
ALLCPDh∪'%Qα2AQ L@3uQ)∀∀K∪(Yαgi,KdεSCRSG ∃'∃∂'&Ph ∀M*∧¬
λε-iPβ2,C2,@
→εHY~@λ6%mJEK3
@¬F↔0@,,[S@!⊃_Y!	0Y~2αb~bBβQP@!33uHY(⊂
,(R)
	SUBI T →≠%_	ε\hP&⊗@λ9α¬"β∪h*⊃ ¬∧aPdcbP∃⊗ 
IN!P∞~∀%≠⊂≡Z,IαQIY∀`$5c"A→αgk"SP*⊗,λhπ
	ADDI T,PAGSIP∀Zβ	. ,→`λ*@F@
	AL¬∩%¬!2Bε<jN,4PJ6 =hY∩¬%EE¬"Hβ"B)Jp∧⊂*∃⊗⊂
PAGH	>8h ⊂M8¬0I∀⊃K

Jλ∧FEαija$H)⊗∀*
F@
IFE SAIL,[
	H∨-∃∩AλYAβ∂'∪hZd`~(∪πβ~0A⊃Kλ*@F@
	MLπ-
A⊂Y0C.4⊂
`(↔8T`(α⊂'cλ$c"P∀`dfεBαIFN↓'β∪_104!→T`:Q(⊃¬Kλ5c!∧a`dQP"⊗(⊂cidmY_εEαP 
OVEI D1!β∂'%0	5Ih ∃hα.q)@ ∧ OF IFN↓'β∪_4⊂λ&6⎇20∃~λAP@!2⊂	&∀P"εEαd))$H ∧ _QHR~*L20∩βK↔b`L_HB∧λε)70+Y
	H∨-∃~AλYD~∀&lzP∀,∀λBbE%⊃P@!01⊃∧λα⊂X¬(4!_∀`(α$P"≠[[@74∧`∩w- A¬(∞ε@∀λe∀|β(∀λ_q(⊂I@h¬NDARIE@&∧~∀&%∩0∀rλ@
λ1rdiQ ¬∧iUa$P"→_εEαd¬OVEM D,X!P∞~∀%≠⊂≡Z,iα"β⊗H*@F@
TERMIN
λ∧∪⊃∀b5α→eα∩2~cλ4(→→U,@⊂∧P#)ciRT π
	HRLMF,PDLFL2
	H∨-∃∩AX!$R4PJ2N∧λbbmλ_td|qQ LE*)R∧K∀⊃	Hβ&_FBα	MOVEI F,(R)
	H	'⊂βX@6α8T<@∪qc!∧d ∩RM F,PDLFL2
∪'U
%αα ε⊃ ¬∧fSβP
~β$Y"Lrb4Q!∀E∃+$∧
@∀plAQ@∧fgUαEM A,ZSC2
α∪⊃I%4Aααb≠⊂β"B(_⊃∩(λ∃α_FEαd¬OVEM A,NP@	→⊂4⊂λ&"α*%@$⊂+⊃KλlC"A_1⊃∩$λ+#!∧fgk⊃d¬ A1_
B∩d`4*& ∧PM≤X¬⊗IT∀pfS'FE∧R))`∀AH	2$z0∀ εEεBαX
∩∩m⊂~⊃∧z→α_ib¬∧_y∀`(c"@↓Gp3∪λh"⊂ S!h"1 SYMMT∧lAβ1#0bA¬→'∂⊃,Aβ→#`d⊂∀!Q hSαqP)I∀h∩)@ε@

IFE PAG@∪≤≤Y6~∀4⊂
ε2d~B#!→T`:β"dP⊂T∧BFXPSG
	H∨-∃~AαY9!∩IAP@!33uHY(⊂@⊗∪'c _PDL		;SET UP F@1@~∀&"⊃α	dz~b
α!P@!01⊃	∀⊂K∀hXtr6EV εE∧PdεDI @∧Y'≥≠',hP& ,zidJ∧5ETd|hε∀λIλ∧!)
∪~=(
N∀λ2bD5⊃P@!2⊂	)∩P!V⊗LT TFBα	MOVEH
Aε1
1ε@⊂h ⊂L_HDJ∧5ETd|hε∀λIλ∧!)
∪⊃I→∩Aε0[⊂∩xk¬∧⊂εεEαd¬OVEM C,OFXC $4⊂λ&6⎇2∃α
eZ~a4J∧$dβS ⊗(c$l∪αUM@:4⊂λ&*≥↓αQH→E≤<α∩c!∧fgk⊃dP!,LOFLPDL		;SET UP FLP
∪β⊃λA∧Y=
→ε@⊂h ⊂L_HDJ∧%J4,=9≠"kλβ"B(→β"$P⊂α,SEGMS@⊗~(∪⊂⊗>4r%α
bj2>~eα∩1λ 
!Q@∧fgUαS@∩AXQεR4⊂λ&"α*$J∧5ES
D∃⊃P@!33uHYαP!V⊃&!P∩
λ∧∪β	⊃∩AεX5→∨
→A	_@"⊂¬⊂hPα2∀II(⊂k¬Yα ∂FLP@	0hP& ,zhTj∧5It4d4∧C!∧fgk⊃P!V-Q&⊂$PDL@≥~αa2F~dz0∃,Xπ#!∧e)hλ*⊂ALSG@⊃⊗4⊂λ&6⎇2⊗ *λ⊂	@("&$βE	MOT¬∩AλY→>∧"1.Iz5∧∪
`_BDX@'∃(A+β Aβ≥⊂A' ~(∪β	λβ	2x6 hPα01λD⊂K∪j8lC"A→αgk"RP i1,SEGSIZ- "!	$Q!∀@Q∩(λ~L+∀hXpε`∪K
∪≠=(
⊗%∧
IJ¬bBεIEHh ⊂LYzd,JλeBD
⊃Q M≥X)∩∧
&⊂¬λJ#"A→α)d0i_V⊗LD@		;SP@→∪PA'∂5⊂~Q¬∩⊗ ,→→d$4C"A→αgk"H!⊗'aL∧¬
	AD@	∩AλY→>∧"1"ε⊂ε∩HhαB3)@k'$P⊂β, ≠→=!∩1D⊃$4!→T`:β)dP⊂β, ⊃ε$~∀&E∩J%α~a5E"λ¬⊂hPα33j@"fP!K!YεEα`b"$H!P-Lπ!	_!	$Q!∀E∀I∀∧5λεf'T ∧@_~(∪⊂⊗>4*5α
dz≠⊂β"B(_⊃∩(λ∃α⊂λB$~∀&lzP∀(⊂@⊗∪βSC $4⊂λ&ε$"%α	db0≥≥λIB[
λ~#
Hβ"B)Yβk'$H!P-LLπ'!	0ZbQ∧αH4(→Yu *p∧P!K∀!TFBα	H@%I∩AεX!αR%u~⊗∃ααX$ Kαp	hλ'"bb∀P# ∃NL¬2A≤b0≥ Q!∀l@uQ3$λhε)aL∧¬∀∪!%% *hε~e*83⊂@ ¬∧`Q ∧I C,-LOSP@	_Zβ	"	$hP&"JdIα
EYD`:t⊃∪↓Q@∧fgUαEM C,OSC2
∪≠=(
⊗%∧	1"→Hh ⊂LYzd,Jλ ¬λ4LP%⊃ ¬∧fSβP
AY6I14XY#%¬_
∩y[PhPα2Tj∧∃⊂)Jqr∩aQ@∧fgUαEM A,BP@'0~∀&lzP∀,Tλ∩e4*ε⊂hPα33j@"P!V⊂F@
	AD@	∧AY¬!≤@$%@8i∃∃≥DλU≥∩30*HαP'cλ!( ∪H
∪⊃I%∃α⊂¬B`)PTv)Q ¬∧e∃d¬PLE B,AL@π!λb$∩w>tbeαλ_4Z¬8ε3('`S IF IN L@∨.β'∂≠∃_
P4PJN@,$λ"e≥→YD`1 ¬∧aPdcP!K∀!∀FBα	MOVE C,B
∪≠=(
⊗5∧→2
Bα9HKαtq(g`∞DESTIMAP	
A=A¬!M⊂⊂∀(L
∩"λ5E≥LYIphPα2∪
(αP!,,¬∃¬'e~D4PB"JJzα⊃1i(%≥LQQ M≥X "d!Q M≥X)∩∧λε_DBDXTO BE A PDL PTR IL∧A)⊃∀A'3≠5_∞XQ!∃≥0H⊂eH@εE S!h"18∧∪∪∨I∩AεYM∂.≤h$$↔9∧L<α⊃4jD⊂1⊃
$⊃StDλ51s(Yβ*"bλ)lfJ⊂a
	MH∂-$A∧XbαB~Hβ"Bλ`fc@0β, ≥∃	
_4PIα*J≥!↓9-α1P@!0stHT⊂kβ!∧P%)∀h∧ ALQX2
	HRRM B,.J@¬
D4⊂λ&6⎇2⊗%α2a5E"⊂¬⊂HPα4u(⊂!⊗!∀)`		8π)>$
1αh¬3( ¬R WDS OC@π+!∪∃λA¬2↓%β≥	=~A¬!LAβ≥λααNf6αH∀! ¬∧iUa$P#∀"∀Dα]j'j⊂d∧ DISP	β≥
A	⊃¬(A'LjRε	∧j0≥Q0	FBα	H@%I
A$X9∃¬'Lh4(→*Tm∧β⊃(
%⊂3∀+ε ∧D]SβNLY HACK↓'3≠¬=→&A∪_A)"-∩∃αz λ	→β⊂&'Uβ SEGMEN@(4⊂λ&"e∩∃αIbr*
Nβ→PhPα2U)Z⊃(⊃EH3∀6ε⊃ ¬∧fSβP
AQ(Y7≥J6 ,zeBe≥→YU &4εFEαa&* TT →→A%∨∂&4⊂λ&"α*$J¬8ε3)Zβ_V∀⊃∀@
	JRS@(↓'3≠≠Xb~*≥J6 -d¬NA_1⊃∩$
v33*@_V_@(D)~∀%⊃%%~β'3≠≠XbP⊃:T∩Nf5⊂h ⊂M8¬0D
v33*@_V)lSd∧@≡~(∪'+¬$A'3≠5(	E1λh ⊂Lλ∧TK&P ∪YMH,@
b∃¬9↓⊂HKαr1D
⊂∧"i⊃P+`iH P ∪YMP	β∧αaα:>8∧¬8(∩sI@kP ↔HERE BPS@⊂A%&~*L2∃αNJ12lhP& ,zhR∧K⊗`_LY⊗⊗_Ln@
	GETTA@∧AX4⊂λ%αα8U%Rλe@h⊂α3⊃λ⊂#⊗-L≠_Z00, →βt~∀&≤
& 2λeC_hαB(	
TS ~;335F∃α ⊂↔\```@λI`≥$YhUB¬9→U,@⊂5∪j$⊃StD
⊂πh)KXXεE↔D@	;EL¬⊃α|1α&~*αNε&`h ∀J≠βPα33j@"P!V∀lff'CE	ASH C,-1
∀∪5_∞@4YPλ
;33∪a⊃,¬agSαVE@%PA~J|i↓
α|1α↑z(E~¬Itαα~	xb∧3P
)∩biFEαd))-λ!PBPSH
	SP∧AY∪∂π→0b$KZ&→αt*P≤LuD∧m4p
0d∧@→∨\A~>⊂ε& 4~I∀@λ⊂4J(4∧FEαija0β,@∪∂

0d∩$p∞ε: ∧∧L@R5⊂⊃$f"P⊂i) lCE	MOT¬~AY-¬!∀b∩%\J0∀MI_∀b¬8ZE$Lhp`8H⊂TλYβ"εEαd¬OVE C →6α"b51e
Jε:$z6tQ!∀U≥∧
BdJ8tDXQ!∧l@uQ2$λhε⊗@1(A)
	H∨-∃~AεY!∪14hP& ,zhTJ∧%I∧L@∪pc!∧`gα∩P!⊗)Qc`
SK
∪'U
%α⊂¬BD
⊃Q L@3uQ$λhε-@$L¬15bbFJεp"0≤mβ#"A→Tpλ~E⊂3∀hy⊂¬FEαe))jλ f&"∪βH
~(~¬β→M∂⊃-β!∀l@uQ2$
∃
λ∃ εE∧SdπVNI @λ@1D⊃$4!→E≤Bλ¬∃¬E4q1iIqc"A_4r_EλεibQd∧OG
λ∧∪⊃∀b%αR ¬BD
#"A→αgk"SP!V)U∀**)
∪β=
*9¬"Q1eP!Q@∧`b⊃$P @,(B)
	JRST (T)
λ∧⊂∀*bFaIPJBVNDQαAH→De%→qP@!04pi≠H⊂∞εBαCAN≥(A∂PA⊗:⎇*≡!α≤zJ*≠AP@!2TTjD⊂3∪	@aXFE↔D@	;EL¬⊃α|1α&~*αBε≡Lr≤4!Q hPc\→ID$|βQ(
;333j@⊂)`→MMPbA1!%∨∂L~∀4T
22∩|r∃hQ)∀4(⊂λ Qdg#@,Xε~*L2∃α∞J12lhP& ,zhR¬αβ⊂lA⊃(¬ibU⊂*`⊂4 ∧L PLπ∪≥$*JL4PJ6 =hT∧5E¬HeD≠!Q L@3uQ$λβ&(⊗⊃&!P∩
λ∧∪≠∨Y
AπαbN
HhRt%@8Yd"∧βqH	_Q(∀h→3β"KP∧@	;EH¬λA∨_A∪
↓!β∂∪9∞~(Lj0≥4Y∀∧
@∪∩4j↓αE∧d∀)&P K& 	SPSP∞~∀!')54Aβ→∂λ
_$↔8t4⊂∧iP∪βKAY L¬∨.~)∪
≤A⊂b`@2Xh ⊂LYzd,Jλ⊂λyβdg$∃∧¬
	HRRM A,.JBSA"~∀!!+'⊃(A @2=∩⊗$~!P@+ ∧]bRαD OF IFN@10
	JRST L@∪'@~∀4T~0≤u8¬⊂)@*)D]Pd∧LOC'S LIT@%α1&A∂PA⊗bαλ∀`(⊃1→λαi"FBα
∃∪→
A↓β≥∪~≤eX4(Q*5L@33uG∧@		;MH∂-
↓≠⊂≡
Jα*>	¬~f ,)yB¬$_)D
∧X∧∃h~Q∀c!'c#)Qh∧ C-,∧~*≥J6 -d∧.A~⊂πh_Eλπ∀"
DP≠C
λ∧∪β∨)_A$YM3⊂⊗6αf⊂K\~ !⊃@∧e)∀h∧ @'e≠⊂⊗Yαa∪@84LP!QS∀∀I@ciP≥=(∧Zb~)_∞~~α8U"β↓Q"`)⊂¬df∪⊂)`→MMPb~(~∃ 4HA`≤,h@@8H∩1HT∀⊂1i→β#FEβE
;@∪≥%∪bA%_
&&3⊃α4∃hT`8H⊃R%@!!!P⊃$W!!⊃⊂#↔&SβDE F,¬π"qα2hiD,@H⊃KHj⊂πiP⊃↔""kλ ε.@%⊃ →α2r∩-dλb`(⊂∧i1↔#'&H ε.EXT F.VRS AT(¬π"~αε@"iId`$⊂5↔∀ πN LLπ≥¬
∧A~	t∩f@"λh"`(QSλλhKPUHP#!.IBP F@∧]¬ FB.CNT FB9⊃⊗⊃∧2∩th(b∧PC@J@iP#!αBUF LINIFA EINIFA EL¬	2M~Aα⊗t""$LLED IN)
IT$	F.FN1::		SIXBIT \.LISP.\	;FILE NAME 1
10$	F.FN1::		SIXBIT \LISP\
IT$	F.FN2::		SIXBIT \(INIT)\	;FILE NAME 2
10$	F.FN2::		SIXBIT \INI\
	F.RDEV::	BLOCK 4		;.RCHST'D NAMES
]		;END OF IFN ITS+D10
IFN D20,[
	F.DEV::		ASCIZ \DSK\	;DEVICE (FILLED IN AT RUN TIME)
		BLOCK L.6DEV-<.-F.DEV>
	F.DIR::				;DIRECTORY (UNSPECIFIED)
		BLOCK L.6DIR-<.-F.DIR>
	F.FNM::		ASCIZ \LISP\	;FILE NAME
		BLOCK L.6FNM-<.-F.FNM>
	F.EXT::		ASCIZ \INI\	;EXTENSION
		BLOCK L.6EXT-<.-F.EXT>
	F.VRS::		ASCIZ \0\	;VERSION
		BLOCK L.6VRS-<.-F.VRS>
]		;END OF IFN D20
LOC INIIF2+LOPOFA
		BLOCK 5
	AT.CHS::	0		;CHARPOS
	AT.LNN::	0		;LINENUM
	AT.PGN::	0		;PAGENUM
		BLOCK 10
LONBFA::
	FB.BYT::	0		;BYTE SIZE
	FB.BFL::	0		;BUFFER LENGTH
	FB.BVC::	0		;COUNT OF VALID CHARACTERS
IFN ITS+D20,[
	FB.IBP::	0		;INITIAL BYTE POINTER
	FB.BP::		0		;BYTE POINTER
	FB.CNT::	0		;CHARACTER COUNT
		BLOCK 2
]		;END OF IFN ITS+D20
IFN D10,[
	FB.HED::	0		;BUFFER HEADER
	FB.NBF::	0		;NUMBER OF BUFFERS
	FB.BWS::	0		;SIZE OF BUFFER IN WORDS
SA%		0
SA$	FB.ROF::	0		;RECORD OFFSET
		BLOCK 1
]		;END OF IFN D10
	FB.BUF::
10%			BLOCK RBFSIZ
10$			BLOCK NIOBFS*<LIOBUF+3>
10$ IFL NIOBFS-2,	BLOCK NIOBFS*<LIOBUF+3>

OFFSET 0
LINIFA==:.-INIIF1+1		;TOTAL NUMBER OF WORDS
EINIFA::			;END OF ARRAY
	-1			;PHOOEY! FORCE THE "BLOCK" TO MAKE REAL 0'S

;;@ END OF ALLOC 256

PRINTX \
\		;JUST TO MAKE LSPTTY LOOK NICER

EXPUNGE ZZ ZY ZX ZZX ZZY ZZZ ZZW

HS$ 10$  IF2, BSYSSG==HSGORG	;ANTI-RELOCATION CROCK

IF2,	MACROLOOP NBITMACS,BTMC,*	;FMR BIT TYPEOUT MODE


EJDLISP::		;END OF LISP, BY GEMRGE!
¬
VARIABLES		;NO ONA CHOULD USE VARIABLES!

IFN .-ELDLISP, WARN [OKAQ, UHO'S THE UISE GUQ USING T¬β%∪¬¬→&⎇:~∀~)∪
≤A⊂b`Y64∀∩I⊃%'∞~)⊂~∩DIah$HH%n⊗t!α>→∧B&≡!¬~⊗≡6,rP4*hH%n⊗t!α>→∧J~9α#	@4!Q$L3%D∧-∃(9e#kW%d-∃(9e H↔9e,l(Z"∧|dλ∃≥≤YX$eJλZ%∀⎇*1PPh(Yd"∧→i∃$L→I∃TλQ